SQLD

SQLD 개념정리 (JOIN)

chojdsj 2023. 11. 5. 21:46
728x90

 

 

JOIN

 

 

- 두개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것

 

 

** EQUI JOIN **

 

- 두개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법

 

- 대부분 PK <-> FK의 관계를 기반으로 한다. 그러나 반드시 PK <-> FK의 관계로만 EQUI JOIN이 성립하는 것은 아니다.

 

 

 

** Non EQUI JOIN **

 

- 두개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용한다.

 

- Non EQUI JOIN의 경우에는 "=" 연산자가 아닌 다른(Between, >, >=, <, <= 등) 연산자들을 사용하여 JOIN을 수행

 

 

 

 

 

 

 

INNER JOIN

 

 

- '내부 JOIN'이라고 함. JOIN 조건에서 동일한 값이 있는 행만 반환한다.

 

- DEFAULT 옵션이므로 생략이 가능하지만, CROSS JOIN, OUTER JOIN과는 같이 사용할 수 없다.

 

- USING 조건절이나 ON 조건절을 필수적으로 사용해야 한다.

 

 

 

 

 

 

NATURAL JOIN

 

 

- 두 테이블간의 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI(=) JOIN을 수행한다.

 

- 추가로 USING 조건절, ON 조건절, WHERE절에서 JOIN조건을 정의할 수 없다.

 

- JOIN에 사용된 칼럼들은 같은 데이터 유형이어야 한다.

 

- ALIAS나 테이블명과 같은 접두사를 붙일 수 없다.

 

 

 

USING 조건절, ON 조건절

 

 

* USING *

 

- 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 선택적으로 = JOIN을 할 수 있다.

 

- SQL Server에서는 지원하지 않는다.

 

- JOIN 칼럼에 대해서는 ALIAS나 테이블이름과 같은 접두사를 붙일 수 없다.

 

 

 

 

* ON *

 

- 칼럼명이 다르더라도 JOIN 조건을 사용할 수 있는 장점이 있다.

 

- WHERE 검색 조건은 충돌 없이 사용할 수 있다.

 

- ON 조건절에서 사용된 괄호는 옵션사항이다.

 

- ALIAS나 테이블명과 같은 접두사를 사용해야 한다.

 

 

 

 

 

OUTER JOIN

 

 

- JOIN 조건에서 동일한 값이 없는 행도(NULL 값) 출력된다.

 

- USING 조건절이나 ON 조건절필수적으로 사용해야 한다.

 

 

 

* LEFT OUTER JOIN *

 

 

- 조인 수행 시 좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 우측 테이블에서 JOIN 대상 데이터를 읽어온다.

 

 

 

 

* RIGHT OUTER JOIN *

 

- LEFT OUTER JOIN과 반대로 우측 테이블이 기준이 되어 결과 생성

 

 

* FULL OUTER JOIN *

 

- 합집합 개념으로 LEFT와 RIGHT를 모두 읽어 온다.

 

 

 

 

 

 

INNER vs OUTER vs CROSS JOIN 비교

 

 

 

 

 

1) INNER JOIN

 

- 양쪽 테이블에 모두 존재하는 키 값이 B-B, C-C인 2건이 출력된다.

 

2) LEFT OUTER JOIN

 

- TAB1을 기준으로 키 값 조합이 B-B, C-C, D-NULL, E-NULL인 4건이 출력된다. (좌측 테이블 기준)

 

3) RIGHT OUTER JOIN

 

- TAB2를 기준으로 키 값 조합이 NULL-A, B-B, C-C인 3건이 출력. (우측 테이블 기준)

 

4) FULL OUTER JOIN

 

- 양쪽 테이블을 기준으로 키 값 조합이 NULL-A, B-B, C-C, D-NULL, E-NULL인 5건이 출력된다. (합집합)

 

5) CROSS JOIN

 

- 양쪽 테이블 TAB1과 TAB2의 데이터를 곱한 개수인 4 * 3 = 12건이 추출됨

 

- 키 값 조합이 B-A, B-B, B-C, C-A, C-B, C-C, D-A, D-B, D-C, E-A, E-B, E-C인 12건이 출력된다.