ch03 JOIN과 집계데이터 - JOIN
01. JOIN
- 2개 이상의 테이블에 있는 정보 중 사용자가 필요한 집합에 맞게 가상의 테이블처럼 만들어서 결과를 보여주는 것
종류 | 설명 |
---|
INNER | 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력 |
OUTER | 조인 특정 컬럼을 기준으로 매칭된 집합을 출력하지만 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값 만 을 출력 |
SELF | 조인 동일한 테이블 끼리의 특정 컬럼을 기준으로 매칭되는 집합을 출력 |
FULL OUTER | INNER, LEFT OUTER, RIGHT OUTER JOIN 집합을 모두 출력 |
CROSS | Cartesian Product이라고도 하며 JOIN되는 두 테이블에서 곱집합을 반환 |
NATURAL | 조인 특정 테이블의 같은 이름을 가진 컬럼 간의 JOIN집합을 출력 |
02. INNER JOIN
- 특정 컬럼의 기준으로 정확히 매칭된 집합을 출력
- 교집합
03. OUTER JOIN
- 특정 컬럼을 기준으로 매칭된 집합을 출력하지만 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값만을 출력
- LEFT OUTER JOIN / RIGHT OUTER JOIN
- LEFT ONLY / RIGHT ONLY - 차집합
04. SELF JOIN
- 같은 테이블끼리 특정 컬럼을 기준으로 매칭 되는 컬럼을 출력하는 조인
- 같은 테이블의 데이터를 가각의 집합으로 분류한 후 조인
- SELFJOIN의 부정형
- FILM테이블을 SELF JOIN하여 상영시간을 동일하면서 서로 다른 영화인 집합을 출력
SELECT F1.title,
F2.title,
F1.LENGTH
FROM FILM F1
INNER JOIN FILM F2 ON F1.FILM_ID <> F2.FILM_ID
AND F1.LENGTH = F2.LENGTH;
05. FULL OUTER JOIN
- INNER, LEFT OUTER, RIGHT OUTER 조인 집합을 모두 출력하는 조인 방식
- 두 테이블간 출력 가능한 모든 데이터를 포함한 집합을 출력
06. CROSS JOIN
- 두 개의 테이블의 CATESIAN PRODUCT 연산의 결과를 출력
- 데이터 복제에 많이 쓰이는 기법
07.NATURAL JOIN
- 두개의 테이블에서 같은 이름을 가진 컬럼간의 INNER 조인 집합 결과를 출력 → 조인 컬럼을 명시하지 않아도 됨.
- SQL문 자체가 간소해짐
- 두개의 테이블에 동일한 컬럼이 두 개이상일 경우 의도했던 결과값을 얻지 못할 수 있음. → 사용을 잘 안함. INNER JOIN을 더 많이 사용