728x90
반응형
표준 조인
ANSI/ISO SQL에서 표준으로 작성되는 INNER JOIN, NATURAL JOIN, CROSS JOIN, OUTER JOIN(LEFT, RIGHT, FULL)을 의미
(SQL에서 표시하는 FROM 절의 JOIN 형태)
INNER JOIN
- 내부 조인이라고 하며, 조인 조건이 일치하는 행만 출력 (ORACLE 조인 기본)
- ANSI 표준의 경우 FROM 절에 INNER JOIN 혹은 줄여서 JOIN을 명시함
- USING 또는 ON 조건절을 필수적으로 사용
ON절
- 조인할 컬럼의 컬럼명이 서로 다르더라도 사용 가능
- 조인 컬럼을 명시하기 위해 사용
- ON 조건의 괄호는 생략 가능 (optional)
- 컬럼명이 같을 경우 테이블 이름이나 별칭을 사용하여 명확하게 지정 (테이블 출처 명시)
- ON 조건절에서 조인 조건을 명시하고, WHERE 절에서는 일반 조건 명시해야 함
USING 조건절
- 조인할 컬럼명이 같은 경우 사용
- FROM 절에 USING 조건절을 이용하면 같은 이름을 가진 컬럼들 중에서 원하는 컬럼에 대해서만 선택적으로 EQUI JOIN 조인 가능
- Alias나 테이블 이름과 같은 접두사 사용 불가
- 괄호 필수
NATURAL JOIN
- 두 테이블 간 동일한 이름을 가지는 모든 컬럼에 대해 EQUI JOIN을 수행
- NATURAL JOIN은 동일한 이름의 모든 컬럼을 조인 컬럼으로 사용하므로 조인 컬럼의 값이 모두 같을 때만 결과가 리턴됨
- NATURAL JOIN이 명시되면 USING, ON, WHERE 절에서 조인 조건 정의 불가
- JOIN에 사용된 컬럼들은 데이터 유형이 동일해야 하고, 접두사 사용 불가
CROSS JOIN
- 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합
- 카타시안 곱 (Cartesian product) 출력
- 결과는 양쪽 집합(테이블 행 수)의 M * N 건의 데이터 조합이 발생
OUTER JOIN
- INNER JOIN과 대비되는 조인 방식
- JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용
- 두 테이블 중 한 쪽에 NULL을 가지면 EQUI JOIN 시 출력되지 않지만, 이 경우를 출력할 땐 OUTER JOIN을 사용
- 테이블 기준 방향에 따라 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN으로 구분
OUTER JOIN 종류
LEFT OUTER JOIN
- FROM 절에 나열된 왼쪽 테이블에 해당하는 데이터를 읽은 후 오른쪽 테이블에서 JOIN 대상을 읽어오는 방식
- 왼쪽 테이블이 기준이 되고, 오른쪽 테이블의 데이터를 채우는 방식
- 오른쪽 테이블 데이터에서 같은 값이 없는 경우, NULL로 출력
RIGHT OUTER JOIN
- LEFT OUTER JOIN의 반대
- 오른쪽 테이블이 기준이 되고, 왼쪽 테이블의 데이터를 채우는 방식
- FROM 절에 테이블 순서를 변경하면 LEFT OUTER JOIN으로 수행
FULL OUTER JOIN
- 두 테이블 전체 기준으로 결과를 생성하여 중복 데이터는 삭제 후 출력
- LEFT OUTER JOIN 결과와 RIGHT OUTER JOIN 결과의 UNION 연산(합집합) 결과와 동일
- ORACLE 표준에는 없음
반응형
'[DB]DataBase > [SQL]' 카테고리의 다른 글
[SQLD] 집합 연산자 (0) | 2024.05.06 |
---|---|
[SQLD] 서브 쿼리 (0) | 2024.05.05 |
[SQLD] 순수 관계 연산자 (0) | 2024.05.03 |
[SQLD] JOIN 조인 (0) | 2024.05.02 |
[SQLD] ORDER BY절 (1) | 2024.04.27 |