본문 바로가기
🖊️Certificate/📌SQLD

[SQLD] 2과목 - 1장) 8절. 표준조인

by 빛나고요 2024. 3. 7.
BIG

2과목. SQL 기본 및 활용
1장. SQL 기본
8절. 표준조인

# 표준조인
- ANSI 표준으로 작성되는 INNER JOIN, NATURAL JOIN, OUTER JOIN을 말함

# INNER JOIN
- 내부 조인
- 조인 조건이 일치하는 행만 추출(Oracle 조인 기본)
- ANSI 표준의 경우 FROM 절에 INNER JOIN 혹은 줄여서 JOIN 을 명시
- ANSI 표준의 경우 USING 이나 ON 조건절을 필수적으로 사용

# ON 절
- 조인할 컬럼의 컬럼명이 서로 다르더라도 사용 가능
- ON 조건의 괄호는 옵션(생략가능)
- 컬럼명이 같을 경우 테이블 이름이나 별칭을 사용하여 명확하게 지정(테이블 출처 명확히)
- ON 조건절에서 조인조건 명시, WHERE 절에서는 일반조건 명시(WHERE 절과 ON절을 쓰임에 따라 정확히 구분

- 문법
SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 INNER JOIN 테이블2
ON 테이블1. 조인컬럼 = 테이블2.조인컬럼;

# USING 조건절
- 조인할 컬럼명이 같을 경우 사용
- Alias 나 테이블 이름 같은 접두사 붙이기 불가
- 괄호 필수

- 문법
SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 INNER JOIN 테이블2
USING (동일컬럼명);

# NATURAL JOIN
- 두 테이블 간의 동일한 이름을 가지는 모든 컬럼들에 대해 EQUI JOIN을 수행 ➪ 조인 컬럼값이 모두 같을 때만 결과가 리턴됨
- USING, ON, WHERE 절에서 조건 정의 불가
- JOIN 에 사용된 컬럼들은 데이터 유형이 동일해야 하며 접두사 사용불가

- 문법
SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 NATURAL JOIN 테이블2;

# CROSS JOIN
- 테이블 간 JOIN 조건이 없는 경우 생성 가능한 모든 데이터들의 조합(Cartesian Product, 카타시안 곱)출력
- 양쪽 테이블 행의 수의 곱한 수의 데이터 조합 발생(m+n)

- 문법
SELECT 테이블1.컬럼명, 테이블2.컬럼명
FROM 테이블1 CROSS JOIN 테이블2;

# OUTER JOIN
- INNER JOIN 과 대비되는 조인 방식
- JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용
- 두 테이블 중 한쪽에 NULL을 가지면 EQUI JOIN시 출력되지 않음 ➪ OUTER JOIN 시 출력 가능
- 테이블 기준 방향에 따라 LEFT OUTER JOIN/ RIGHT OUTER JOIN/ FULL 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 연산 리턴과 동일함

댓글