728x90
반응형

1. NATURAL JOIN

CREATE TABLE T1 (C1 VARCHAR2(2) , C2 VARCHAR2(2));
CREATE TABLE T2 (C1 VARCHAR2(2) , C3 VARCHAR2(2));
-- DROP TABLE T1;
-- DROP TABLE T2;
INSERT INTO T1 (C1, C2) VALUES (1 ,'A');
INSERT INTO T1 (C1, C2) VALUES (2 ,'B');
INSERT INTO T1 (C1, C2) VALUES (3 ,'C');
--
INSERT INTO T2 (C1, C3) VALUES (1 ,'A');
INSERT INTO T2 (C1, C3) VALUES (1 ,'B');
INSERT INTO T2 (C1, C3) VALUES (2 ,'B');
INSERT INTO T2 (C1, C3) VALUES (3 ,'C');
INSERT INTO T2 (C1, C3) VALUES (3 ,'A');
INSERT INTO T2 (C1, C3) VALUES (4 ,'B');

T1
T2

SELECT * FROM T1 A NATURAL JOIN T2 B

==> Natural Join 절은 양쪽 테이블의 C1 칼럼을 기준으로 등가 조인(EQUIJOIN) 한다.

 

 

2. JOIN 총정리

 

1> OUTER JOIN

SELECT * FROM T1 A ,T2 B WHERE A.C1 = B.C1

==> B테이블을 A테이블 옆에 모두 추가하기(A 테이블의 C1 열 기준으로)

 

==> FROM 절 바로 뒤에 있는 테이블명이 기준점이다! WHERE 절은 신경끄기

OUTER JOIN

2> FULL OUTER JOIN

SELECT * FROM T1 A FULL OUTER JOIN T2 B ON A.C1 = B.C1
SELECT * FROM T1 A FULL OUTER JOIN T2 B ON A.C1(+) = B.C1
SELECT * FROM T1 A ,T2 B WHERE A.C1(+) = B.C1
 

==> A테이블을 기준으로 B테이블 추가 ==> A테이블에 없는 경우 B테이블 값들 이어 붙이기

 

==> + 가 붙여져있을 경우 옆에 있는 테이블에 있는 모든 값을 추가한다.

SELECT * FROM T1 A ,T2 B WHERE A.C1 = B.C1(+)
SELECT * FROM T1 A FULL OUTER JOIN T2 B ON A.C1 = B.C1(+)

==> A 테이블 기준으로 B테이블 추가하는데, A테이블에 없는 값 있을 경우 생략한다.

 

==> + 가 붙여져있을 경우 옆에 있는 테이블에 있는 모든 값을 추가한다.(A값 모두 추가)

 

3> RIGHT OUTER JOIN

SELECT * FROM T1 A RIGHT OUTER JOIN T2 B ON A.C1 = B.C1
SELECT * FROM T1 A RIGHT OUTER JOIN T2 B ON A.C1(+) = B.C1

==> T2 B 를 기준으로 조인 ==> A.C1(+)의 옆에 B를 다 추가한다.

RIGHT OUTER JOIN

4> LEFT OUTER JOIN

SELECT * FROM T1 A LEFT OUTER JOIN T2 B ON A.C1 = B.C1
SELECT * FROM T1 A LEFT OUTER JOIN T2 B ON A.C1 = B.C1(+)

LEFT OUTER JOIN

==> T1 A 를 기준으로 조인 ==> B.C1(+)의 옆에 A를 다 추가한다.

 

 

5> INNER JOIN

SELECT * FROM T1 A INNER JOIN T2 B ON A.C1 = B.C1
SELECT * FROM T1 A INNER JOIN T2 B ON A.C1 = B.C1(+)
SELECT * FROM T2 B INNER JOIN T1 A ON B.C1 = A.C1

INNER JOIN 1

SELECT * FROM T1 A INNER JOIN T2 B ON A.C1(+) = B.C1

INNER JOIN2

6> NATURAL JOIN

SELECT * FROM T1 A NATURAL JOIN T2 B

NATURAL JOIN1

SELECT * FROM T2 A NATURAL JOIN T1 B

NATURAL JOIN

7> USING JOIN

SELECT * FROM T1 A  JOIN T2 B USING (C1)

==> 등가 조인 ==> 지정한 컬럼을 기준으로

 

8> LEFT JOIN

728x90
반응형

+ Recent posts