Database
2019.11.22 04:30

SQL JOIN 정리 (Inner Join & Outer Join)

조회 수 1830 추천 수 0 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

sqljoin724.png


1. INNER JOIN
  - 두 테이블간의 조인 조건을 만족하는 ROW만 리턴함... (교집합 이라고 하기엔 좀 애매하지만 일단 그렇게 이해하는게 쉽다.)

 

2. OUTER JOIN
  - LEFT/RIGHT/FULL 형태의 OUTER JOIN 이 있음
  - LEFT OUTER JOIN의 경우 조인문 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽 테이블의 데이터를 매칭하며, 매칭되는 데이터가 없는 경우 NULL 매칭
  - RIGHT OUTER JOIN은 LEFT 조인의 반대  - FULL OUTER JOIN은 일반적으로 사용할 일이 없으며, DB에 따라 지원하지 않음??? 간단히 설명하자면 두 테이블의 합집합이라고 이해하면 될 듯...


3. 주의 사항
  - 일반적으로 조인은 1:1 혹은 N:1 의 관계를 갖는 경우 유용한 것 같음... 1:N 관계에서 조인문을 사용하는 경우 기준이 되는 테이블의 데이터가 중복되는 결과를 리턴함. 따라서 1:N 관계에서 조인문을 통해 N에 해당하는 테이블의 컬럼을 이용해 제한조건을 사용하는 경우 distinct 혹은 group by 를 사용하여 1에 해당 하는 테이블의 데이터가 중복되지 않도록 해야 한다.  (에궁... 먼가 명확하지 않은 설명 ㅠ.ㅠ)
 

4. 예제 

두 개의 테이블이 있다고 가정. 컬럼은 1개이고, 데이터는 아래와 같다.

A    B
-    -
1    3
2    4
3    5
4    6

(1, 2)는 A에만 있고, (3, 4)는 A와 B 모두에 있으며, (5, 6)은 B에만 있다.


Inner join

이너 조인, Inner join을 수행하면 두 집합에 모두 있는 열만 남게 된다.

select * from a INNER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a = b.b;

a | b
--+--
3 | 3
4 | 4


Left outer join

레프트 아우터 조인, Left outer join을 하면, A의 모든 열 더하기 B에 있는 공통부분을 얻게 된다.

select * from a LEFT OUTER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a = b.b(+);

a |  b
--+-----
1 | null
2 | null
3 |    3
4 |    4


Right outer join

라이트 아우터 조인, Right outer join을 하면 B의 모든 열 더하기 A에 있는 공통부분을 얻게 된다.

select * from a RIGHT OUTER JOIN b on a.a = b.b;
select a.*,b.*  from a,b where a.a(+) = b.b;

a    |  b
-----+----
3    |  3
4    |  4
null |  5
null |  6


Full outer join

풀 아우터 조인, Full outer join을 하면 A와 B의 합집합을 얻게 된다. 

B에는 있는데 A에 없는 (5, 6)은 A에서는 해당 부분이 null 이 되고,

A에는 있는데 B에 없는 (1, 2)는 B에서는 해당 부분이 null 이 된다.

select * from a FULL OUTER JOIN b on a.a = b.b;

 a   |  b
-----+-----
   1 | null
   2 | null
   3 |    3
   4 |    4
null |    6
null |    5




?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
1141 Develop macOS에 node, npm 설치하기 (homebrew) file hooni 2021.11.06 1137
1140 System/OS Mac에서 Node.js 설치하기 file hooni 2018.09.28 4185
1139 System/OS NAT와 DHCP에 대한 간단한 설명 hooni 2013.04.23 18328
1138 Algorithm OCB5 Injection 앗싸뵹! ㅋㅋ file hooni 2014.07.01 796
1137 Develop OGNL(Object Graph Navigation Language) hooni 2013.04.23 15727
1136 Develop OpenGL 강좌 사이트 모음 hooni 2013.04.23 9637
1135 System/OS OpenSSL로 ROOT CA 생성 및 SSL 인증서 발급하기 hooni 2017.10.28 1452
1134 Develop OPT와 CAS에 대한 자료.. (교수님 메일로 보내드린 자료..) file hooni 2013.04.23 13915
1133 System/OS OSI (Open Systems Interconnection) 개방형 시스템간 상호 접속 file hooni 2013.04.23 10785
1132 System/OS php.ini 설정 안됐을때.. ㅋㅋ hooni 2013.04.23 11639
1131 Algorithm Polynomial time 이란? ㅋㅋ hooni 2013.04.23 22679
1130 System/OS RPA란? 어디에 어떻게 쓰이고 누가 만드나? file hooni 2020.01.28 1353
1129 Etc RSVP 란? file hooni 2017.11.22 979
» Database SQL JOIN 정리 (Inner Join & Outer Join) file hooni 2019.11.22 1830
1127 System/OS SSH Passwordless Login Using SSH Keygen in 5 Easy Steps file hooni 2019.11.22 1386
1126 Develop SVN 명령어 (SVN command) hooni 2014.02.28 12137
Board Pagination Prev 1 2 3 4 5 ... 74 Next
/ 74