Database
2019.11.22 04:30

SQL JOIN 정리 (Inner Join & Outer Join)

조회 수 1842 추천 수 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




?

  1. macOS에 node, npm 설치하기 (homebrew)

    Date2021.11.06 CategoryDevelop Byhooni Views1149
    Read More
  2. Mac에서 Node.js 설치하기

    Date2018.09.28 CategorySystem/OS Byhooni Views4196
    Read More
  3. NAT와 DHCP에 대한 간단한 설명

    Date2013.04.23 CategorySystem/OS Byhooni Views18328
    Read More
  4. OCB5 Injection 앗싸뵹! ㅋㅋ

    Date2014.07.01 CategoryAlgorithm Byhooni Views808
    Read More
  5. OGNL(Object Graph Navigation Language)

    Date2013.04.23 CategoryDevelop Byhooni Views15733
    Read More
  6. OpenGL 강좌 사이트 모음

    Date2013.04.23 CategoryDevelop Byhooni Views9638
    Read More
  7. OpenSSL로 ROOT CA 생성 및 SSL 인증서 발급하기

    Date2017.10.28 CategorySystem/OS Byhooni Views1464
    Read More
  8. OPT와 CAS에 대한 자료.. (교수님 메일로 보내드린 자료..)

    Date2013.04.23 CategoryDevelop Byhooni Views13925
    Read More
  9. OSI (Open Systems Interconnection) 개방형 시스템간 상호 접속

    Date2013.04.23 CategorySystem/OS Byhooni Views10787
    Read More
  10. php.ini 설정 안됐을때.. ㅋㅋ

    Date2013.04.23 CategorySystem/OS Byhooni Views11641
    Read More
  11. Polynomial time 이란? ㅋㅋ

    Date2013.04.23 CategoryAlgorithm Byhooni Views22693
    Read More
  12. RPA란? 어디에 어떻게 쓰이고 누가 만드나?

    Date2020.01.28 CategorySystem/OS Byhooni Views1365
    Read More
  13. RSVP 란?

    Date2017.11.22 CategoryEtc Byhooni Views989
    Read More
  14. SQL JOIN 정리 (Inner Join & Outer Join)

    Date2019.11.22 CategoryDatabase Byhooni Views1842
    Read More
  15. SSH Passwordless Login Using SSH Keygen in 5 Easy Steps

    Date2019.11.22 CategorySystem/OS Byhooni Views1395
    Read More
  16. SVN 명령어 (SVN command)

    Date2014.02.28 CategoryDevelop Byhooni Views12152
    Read More
Board Pagination Prev 1 2 3 4 5 ... 74 Next
/ 74