[SQLD] 2과목 - 1장) 7절. 조인(JOIN)
2과목. SQL 기본 및 활용
1장. SQL 기본
7절. 조인(JOIN)
# 조인(JOIN)
- 여러 테이블의 데이터를 사용하여 동시 출력하거나 참조할 경우 사용
- FROM 절에 조인할 테이블 나열
- Oracle 표준은 테이블 나열 순서 중요하지 않음(ANSI 표준은 OUTER JOIN 시 순서 중요함)
- WHERE 절에서 조인 조건 작성(Oracle 표준)
- 동일한 열 이름이 여러 테이블에 존재할 경우 열 이름 앞에 테이블 이름이나 테이블 Alias 붙임
- N개의 테이블을 조인하려면 최소 N-1 개의 조인 조건 필요함
- Oracle 표준과 ANSI 표준이 서로 다름
# 조인 종류
① 조건의 종류에 따라
- EQUI JOIN(등가 JOIN): JOIN 조건이 동등 조건인 경우
- NON EQUI JOIN: JOIN 조건이 동등 조건이 아닌 경우
② 조인 결과에 따라
- INNER JOIN: JOIN 조건에 성립하는 데이터만 출력하는 경우
- OUTER JPIN: JOIN 조건에 성립하지 않는 데이터도 출력하는 경우(LEFT/RIGHT/FULL OUTER JOIN으로 나뉨)
③ NATURAL JOIN: 조인 조건 생략 시 두 테이블에 같은 이름으로 자연 연결되는 조인
④ CROSS JOIN: 조인 조건 생략 시 두 테이블의 발생 가능한 모든 행을 출력하는 조인
⑤ SELF JOIN: 하나의 테이블을 두 번 이상 참조하여 연결하는 조인
# EQUI JOIN(등가 JOIN)
- 조인 조건이 ‘=’(equal) 비교를 통해 같은 값을 가지는 행을 연결하여 결과를 얻는 조인 방법
- SQL 명령문에서 가장 많이 사용하는 조인 방법
- FROM 절에 조인하고자 하는 테이블을 모두 명시
- FROM 절에 명시하는 테이블은 테이블 별칭(Alias) 사용 가능
- WHERE 절에 두 테이블의 공통 컬럼에 대한 조인 조건을 나열
- 문법
SELECT 테이블1.컬럼, 테이블2.컬럼
FROM 테이블1, 테이블2
WHERE 테이블1.컬럼 = 테이블2.컬럼;
# NON-EQUI JOIN
- 테이블을 연결짓는 조인 컬럼에 대한 비교 조건이 ‘<‘, BETWEEN A AND B 와 같이 ’=‘ 조건이 아닌 연산자를 사용하는 경우의 조인조건
- 문법
SELECT 테이블1.컬럼, 테이블2.컬럼
FROM 테이블1, 테이블2
WHERE 테이블1.컬럼 비교조건 테이블2.컬럼;
# 세 테이블 이상의 조인
- 관계를 잘 파악하여 모든 테이블이 연결되도록 조인 조건 명시
- N 개 테이블의 경우 최소 N-1개의 조인 조건 필요
- 필수 조인조건이 하나라도 생략될 경우 카티시안곱 발생 ➪ 정상 조인보다 더 많은 수의 행이 리턴됨)
# SELF JOIN
- 한 테이블 내 각 행끼리 관계를 갖는 경우 조인 기법
- 한 테이블을 참조(필요)할 때마다 명시해야 함
- 테이블명이 중복되므로 반드시 테이블 별칭 사용