[SQLD -02] ★NATURAL JOIN★JOIN 총정리★
2023. 3. 11. 19:47
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');
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 절은 신경끄기
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를 다 추가한다.
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(+)
==> 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
SELECT * FROM T1 A INNER JOIN T2 B ON A.C1(+) = B.C1
6> NATURAL JOIN
SELECT * FROM T1 A NATURAL JOIN T2 B
SELECT * FROM T2 A NATURAL JOIN T1 B
7> USING JOIN
SELECT * FROM T1 A JOIN T2 B USING (C1)
==> 등가 조인 ==> 지정한 컬럼을 기준으로
8> LEFT JOIN
728x90
반응형