Join 연산은 SQL에서 두 개 이상의 테이블을 결합하여 하나의 결과 집합을 만드는 연산이다. 데이터베이스에서 여러 테이블에 분산된 데이터를 통합하고 관련된 정보를 조회하기 위해 사용된다. Join 연산을 통해 테이블 간의 관계를 정의하고, 복잡한 쿼리를 작성할 수 있다. 주요 Join 연산의 종류와 그 사용 방법은 다음과 같다:
INNER JOIN: 두 테이블 간의 공통된 데이터를 결합하여 새로운 결과를 생성한다. 즉, 조인 조건을 만족하는 행만 결과에 포함된다.
예시:
SELECT * FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Orders테이블과Customers테이블을CustomerID컬럼을 기준으로 결합하며, 두 테이블에서 일치하는 행만 결과로 반환하는 SQL 문이다.
LEFT JOIN (LEFT OUTER JOIN): 왼쪽 테이블의 모든 데이터를 반환하며, 오른쪽 테이블과 일치하는 데이터가 없는 경우 NULL 값을 반환한다.
예시:
SELECT * FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Orders테이블의 모든 데이터와 해당 데이터에 매칭되는Customers테이블의 데이터를 반환한다. 매칭되는 데이터가 없을 경우,NULL로 채워진다.
RIGHT JOIN (RIGHT OUTER JOIN): 오른쪽 테이블의 모든 데이터를 반환하며, 왼쪽 테이블과 일치하는 데이터가 없는 경우 NULL 값을 반환한다.
예시:
SELECT * FROM Orders RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Customers테이블의 모든 데이터와 해당 데이터에 매칭되는Orders테이블의 데이터를 반환한다. 매칭되는 데이터가 없을 경우,NULL로 채워진다.
FULL JOIN (FULL OUTER JOIN): 두 테이블에서 일치하는 모든 데이터와, 일치하지 않는 데이터도 포함하여 반환한다. 즉, 두 테이블의 모든 데이터를 포함하며, 일치하지 않는 부분은 NULL로 표시된다.
예시:
SELECT * FROM Orders FULL JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
Orders와Customers테이블의 모든 데이터를 반환하며, 두 테이블에서 일치하지 않는 데이터는NULL로 채워진다.
CROSS JOIN: 두 테이블의 모든 조합을 반환하는 조인이다. 즉, 두 테이블의 모든 가능한 쌍을 결과로 반환한다.
예시:
SELECT * FROM Products CROSS JOIN Categories;
Products테이블의 모든 행과Categories테이블의 모든 행을 조합하여 반환하는 SQL 문이다.
Primary Key와 Foreign Key는 데이터베이스에서 테이블 간의 관계를 정의하고, 데이터의 무결성을 유지하는 중요한 개념이다. 두 키는 각각의 역할과 기능이 다르며, 다음과 같은 차이점을 가지고 있다:
Primary Key:
NULL 값을 가질 수 없다.예시:
CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, Name VARCHAR(50), Position VARCHAR(50) );
Employees테이블에서EmployeeID는 각 직원의 고유 식별자이며 Primary Key로 설정된 SQL 문이다.
Foreign Key:
예시:
CREATE TABLE Orders ( OrderID INT, CustomerID INT, OrderDate DATE, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) );
Orders테이블에서CustomerID는Customers테이블의CustomerID를 참조하는 Foreign Key로 설정된 SQL 문이다.