Database/SQL DML

SQL JOIN 형식, 문법, 기준, 연산 등

찬스님 2021. 4. 29. 17:44
300x250
  1. 형식 :
    - 등가 EQUI
    - 비 등가 NON EQUI

  2. 문법 :
    - ANSI Std
    - Oracle Std

  3. 기준 테이블 :  
    - Inner, Outer ( Left, Right, Full )
    - 그외 : Self, Cross 

  4. 연산 : 
    - 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개 행

반응형