08. 여러 테이블을 하나의 테이블처럼 사용하는 조인
08-3. SQL-99 표준 문법으로 배우는 조인
SQL-99 조인은 앞에서 배운 조인 방식과 기능은 같지만 문법이 다소 다르며, 다른 DBMS 제품에서도 사용 가능.
FROM절에 조인 조건식을 명시하고, WHERE절에 출력 행을 선정하는 조건식을 명시하므로, 서로 구별하기 쉬운 게 장점.
- NATURAL JOIN
- JOIN ~ USING
- JOIN ~ ON
- OUTER JOIN
[NATURAL JOIN]
등가 조인(inner join)과 같은 방식. (조인 대상이 되는 두 테이블에서 이름과 자료형이 같은 열을 찾은 후, 그 열을 기준으로 등가 조인.)
*EMP, DEPT 테이블의 공통 열인 DEPTNO 열을 기준으로 등가 조인되며, 기존 등가 조인과 다르게 DEPTNO 앞에 테이블 이름을 명시하지 않음.
*조인 조건이 WHERE절에 있는 기존 조인 방식과 달리 FROM절에 조인 키워드를 사용하는 형태. 따로 지정하지 않아도 자동으로 조인 기준 열이 지정됨.
[JOIN ~ USING]
등가 조인(inner join)과 같은 방식.
자동으로 조인 기준 열이 지정되는 NATURAL JOIN과 달리 USING 키워드에 조인 기준으로 사용할 열을 명시하며,
이 때, 기준 열 앞에 테이블 이름은 명시하지 않음.
FROM TABLE1 JOIN TABLE2 USING (조인에 사용한 기준열)
[JOIN ~ ON]
가장 범용성있으며 실무에서 주로 사용하는 방식.
기존 WHERE절에 있는 조인 조건식을 ON 키워드 옆에 작성함.
[OUTER JOIN]
왼쪽 외부 조인 (Left Outer Join) |
기존 | WHERE TABLE1.COL1 = TABLE2.COL1(+) |
SQL_99 | FROM TABLE1 LEFT OUTER JOIN TABLE2 ON (조인 조건식) | |
오른쪽 외부 조인 (Right Outer Join) |
기존 | WHERE TABLE1.COL1(+) = TABLE2.COL1 |
SQL_99 | FROM TABLE1 RIGHT OUTER JOIN TABLE2 ON (조인 조건식) | |
전체 외부 조인 (Full Outer Join) |
기존 | 없음 (UNION 집합 연산자 활용) |
SQL_99 | FROM TABLE1 FULL OUTER JOIN TABLE2 ON (조인 조건식) |
- EMP 테이블의 사원 정보와 해당 사원의 직속 상관의 사원 번호를 나란히 함께 출력하기
1) 왼쪽 외부 조인(Left Outer Join) 사용
*왼쪽 열 모두 출력. 즉, 상급자가 존재하지 않는 사원까지 모두 출력.
2) 오른쪽 외부 조인(Right Outer Join) 사용
*오른쪽 열 모두 출력. 즉, 부하직원이 없는 가장 직책이 낮은 사원까지 모두 출력.
3) 전체 외부 조인(Full Outer Join) 사용
[SQL-99 조인으로 3개 이상의 테이블을 조인할 때]
FROM TABLE1 JOIN TABLE2 ON (조건식)
JOIN TABLE3 ON (조건식)
*참고: 기존 조인 방식에서 3개 이상의 테이블을 조인할 때
SELECT ~ FROM TABLE1, TABLE2, TABLE3
WHERE TABLE1.COL = TABLE2.COL
AND TABLE2.COL = TABLE3.COL
'빅데이터 > Oracle SQL | Do it! 오라클로 배우는 데이터베이스 입문' 카테고리의 다른 글
서브쿼리 | 서브쿼리란? / 서브쿼리의 특징/ 서브쿼리의 종류와 사용 / 단일행 서브쿼리 (0) | 2023.03.01 |
---|---|
[오라클로 배우는 데이터베이스 입문 | 08장 여러 테이블을 하나의 테이블처럼 사용하는 조인] 문제 풀이 (p239) (0) | 2023.02.28 |
조인 | 조인의 종류 (등가 조인 / 비등가 조인 / 자체 조인 / 외부 조인) (0) | 2023.02.26 |
조인 | 집합 연산자와 조인의 차이점 / 조인 조건이 없을 때의 문제점과 해결 방법 / 테이블 별칭 설정 (0) | 2023.02.25 |
[오라클로 배우는 데이터베이스 입문 | 07장 다중행 함수와 데이터 그룹화] 문제 풀이 (p212) (0) | 2023.02.24 |