본문 바로가기

자격증고나리/⚽ SQLD 슈웃

[SQL] 데이터베이스의 JOIN

0. JOIN

관계형 데이터베이스에서 두 개 이상의 테이블을 연결하고 관련된 데이터를 결합하는 데 사용되는 연산

1. INNER JOIN

두 개 이상의 테이블을 연결하고, 두 테이블 간에 일치하는 행만 반환

2. OUTER JOIN

INNER JOIN의 반대 연산으로

두 개 이상의 테이블을 연결하고 일치하지 않는 행도 포함하여 결과를 반환하는 연산

2-1. LEFT OUTER JOIN

왼쪽 테이블의 모든 행을 유지하고 오른쪽 테이블에서 일치하는 행이 있는 경우에만 오른쪽 테이블의 해당 행을 가져옴

일치하지 않는 경우에는 NULL 값으로 채움

2-2. RIGHT OUTER JOIN

LEFT OUTER JOIN의 반대개념.

오른쪽 테이블의 모든 행을 유지하고 왼쪽 테이블에서 일치하는 행이 있는 경우에만 해당 행을 가져옴

일치하지 않는 경우에는 NULL 값으로 채움

2-3. FULL OUTER JOIN

두 테이블 간의 모든 행을 유지하고 일치하는 행을 연결. 일치하지 않는 경우에는 NULL 값으로 채

3. CROSS JOIN

조인할 두 테이블에서 연결할 같은 속성이 없을 때 , 두 개 이상의 테이블을 모든 가능한 조합으로 결합

결과는 두 테이블의 크기에 따라 지수적으로 증가

( a테이블의 인스턴스 개수 n, b테이블의 인스턴스 개수가 m일 때

cross join 결과값으로 나오는 인스턴스의 개수는  n*m 개로, 이를 카티션 곱 또는 카테시안 곱 이라고도 표현함)

4. SELF JOIN

하나의 테이블 내에서 자체를 연결하는 연산

ex) 직원 테이블의 컬럼은 (직원번호, 이름, 부서, 상사번호, 입사일 ) 등으로 구성되어 있고,

어떤 직원의 직속상사를 조회하고 싶다면 직원테이블을 두 번 join하여 구할 수 있다 (자기자신을 self-join)