Database/SQL DML
SQL JOIN 형식, 문법, 기준, 연산 등
찬스님
2021. 4. 29. 17:44
300x250
- 형식 :
- 등가 EQUI
- 비 등가 NON EQUI - 문법 :
- ANSI Std
- Oracle Std - 기준 테이블 :
- Inner, Outer ( Left, Right, Full )
- 그외 : Self, Cross - 연산 :
- NL
- HASH
- SORT MERGE
- STAR
형식
1. 등가 ( EQUI )
- 조인 조건에 ' = ' 등호 사용
- 가장 많이 사용되는 조인 방식
- NATURAL JOIN
- JOIN ~ USING
2. 비 등가 ( NON EQUI )
- 등가 방식 제외한 방식들
문법
1. ANSI ( American National Standards Institute ) 에서 발표한 표준
- JOIN 구문
- 조인조건 -> ON 절
- 검색조건 -> WHERE 절
- 등가, 내부조인에 NATURAL JOIN USING 사용
//SQL-99 NATURAL
FROM LEFT_TABLE L NATURAL JOIN RIGHT_TABLE R
//SQL-99 JOIN~USING
FROM LEFT_TABLE L JOIN RIGHT_TABLE R USING(KEY)
//SQL-99 JOIN~ON
FROM LEFT_TABLE L JOIN RIGHT_TABLE R ON(L.KEY=R.KEY)
//SQL-99 OUTER JOIN
FROM LEFT_TABLE L LEFT OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )
FROM LEFT_TABLE L RIGHT OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )
FROM LEFT_TABLE L FULL OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )
2. Oracle
;
기준 테이블
1. Inner
- 서로 매칭되는 것만 가져온다.
// 명시적
SELECT *
FROM LEFT_TABLE L INNER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )
// 암시적
SELECT *
FROM LEFT_TABLE L, RIGHT_TABLE R
WHNERE L.KEY = R.KEY
2. Outer
미매칭 ( 매칭 되지 않는 ) 데이터도 가져온다.
a ) Left : " 왼쪽 " 테이블 미매칭 데이터 포함
-> 왼쪽 테이블 데이터를 모두 가져오고, 오른쪽 테이블의 데이터
//SQL-99
SELECT *
FROM LEFT_TABLE L
LEFT OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )
//ORACLE
SELECT *
FROM LEFT_TABLE L, RIGHT_TABLE R
WHERE L.KEY = R.KEY (+)
b ) Right : "오른쪽 " 테이블 미매칭 데이터 포함
//SQL-99
SELECT *
FROM LEFT_TABLE L
RIGHT OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )
//ORACLE
SELECT *
FROM LEFT_TABLE L, RIGHT_TABLE R
WHERE L.KEY(+)= R.KEY
c ) Full
//ORACLE 집합 연산 사용
//SQL-99
SELECT *
FROM LEFT_TABLE L
FULL OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )
출처 SQL의 조인 종류를 설명하는 그림 : 클리앙 (clien.net)
원본 출처 : imgflip.com
3.Cross
- 모든 경우의 수에 대한 결합
A 테이블 15개 행
B 테이블 10개 행
결과 : 15 X 10 = 150개 행
반응형