[데이터베이스, Database] JOIN
JOIN이란?
: 한 데이터베이스 내의 여러 테이블의 레코드를 각각의 공통 값을 이용하여 조합, 테이블로서 저장되거나, 그 자체로 이용할 수 있는 결과 셋을 만들어 낸다.
JOIN의 종류에는 여러가지가 있다.
1.CROSS JOIN(교차조인)
2.INNER JOIN(내부조인)
그리고 EQUI-JOIN(동일조인), NATURAL JOIN(자연조인), LEFT OUTER JOIN(왼쪽외부조인)
RIGHT OUTER JOIN(오른쪽외부조인), FULL OUTER JOIN(완전외부조인), SELF JOIN(자가조인)
이중 가장 많이 쓰이는 교차, 내부 조인에 대해 알아 볼 것이다.
예제>> 기본 두 테이블을 토대로 각각의 조인 결과를 보자
LastName | DepartmentID |
---|---|
Rafferty | 31 |
Jones | 33 |
Steinberg | 33 |
Robinson | 34 |
Smith | 34 |
John | NULL |
DepartmentID | DepartmentName |
---|---|
31 | 영업부 |
33 | 기술부 |
34 | 사무부 |
35 | 마케팅 |
1. CROSS JOIN(교차조인)
: 두 테이블에서 곱집합을 반환한다. 즉, 두 번째 테이블로부터 각 열과 첫 번째 테이블에서 각 열이 한번씩 결합된 열을 만들 것이다. 예를 들어 m열을 가진 테이블과 n열을 가진 테이블이 교차 조인되면 m*n 개의 열을 생성한다.
SELECT * FROM employee CROSS JOIN department;
(=SELECT * FROM employee, department;)
Employee.LastName | Employee.DepartmentID | Department.DepartmentName | Department.DepartmentID |
---|---|---|---|
Rafferty | 31 | 영업부 | 31 |
Jones | 33 | 영업부 | 31 |
Steinberg | 33 | 영업부 | 31 |
Smith | 34 | 영업부 | 31 |
Robinson | 34 | 영업부 | 31 |
John | NULL | 영업부 | 31 |
Rafferty | 31 | 기술부 | 33 |
Jones | 33 | 기술부 | 33 |
Steinberg | 33 | 기술부 | 33 |
Smith | 34 | 기술부 | 33 |
Robinson | 34 | 기술부 | 33 |
John | NULL | 기술부 | 33 |
Rafferty | 31 | 사무부 | 34 |
Jones | 33 | 사무부 | 34 |
Steinberg | 33 | 사무부 | 34 |
Smith | 34 | 사무부 | 34 |
Robinson | 34 | 사무부 | 34 |
John | NULL | 사무부 | 34 |
Rafferty | 31 | 마케팅 | 35 |
Jones | 33 | 마케팅 | 35 |
Steinberg | 33 | 마케팅 | 35 |
Smith | 34 | 마케팅 | 35 |
Robinson | 34 | 마케팅 | 35 |
John | NULL | 마케팅 | 35 |
2. INNER JOIN(내부조인)
: 가장 흔한 결합 방식이며, 기본 조인 형식으로 간주된다. 내부 조인은 조인 구문에 기반한 2개의 테이블(A, B)의 컬럼 값을 결합함으로써 새로운 결과 테이블을 생성한다.
SELECT * FROM employee INNER JOIN department
ON employee.DepartmentID = department.DepartmentID;
(=SELECT * FROM employee, department
WHERE employee.DepartmentID = department.DepartmentID;)
Employee.LastName | Employee.DepartmentID | Department.DepartmentName | Department.DepartmentID |
---|---|---|---|
Robinson | 34 | 사무부 | 34 |
Jones | 33 | 기술부 | 33 |
Smith | 34 | 사무부 | 34 |
Steinberg | 33 | 기술부 | 33 |
Rafferty | 31 | 영업부 | 31 |