Contents

Database
2019.11.22 04:30

SQL JOIN 정리 (Inner Join & Outer Join)

Views 1955 Comment 0
Atachment
Attachment '1'
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

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. 해커스랩 깨기.. 후후.. ㅋㅋ

    Date2013.04.23 CategorySystem/OS Byhooni Views18527
    Read More
  2. 플라스터(Plaster) 수업 내용

    Date2016.05.24 CategoryEtc Byhooni Views0
    Read More
  3. 프로그램 문서 관리 (Doxygen)

    Date2013.04.23 CategoryDevelop Byhooni Views16444
    Read More
  4. 프로그래밍에서 foo, bar 함수의 유래

    Date2013.06.25 CategoryDevelop Byhooni Views21486
    Read More
  5. 프로그래밍 소스 관련 사이트..

    Date2013.04.23 CategoryDevelop Byhooni Views16532
    Read More
  6. 페이팔에서 돈 찾기 (Paypal withdraw)

    Date2014.02.20 CategoryDevelop Byhooni Views11485
    Read More
  7. 티스토리 테이블 html,css 구문

    Date2013.11.03 CategoryEtc Byhooni Views16062
    Read More
  8. 콘솔에서 패스워드 걸린 zip 압축하는 명령

    Date2018.03.02 CategorySystem/OS Byhooni Views1140
    Read More
  9. 컴파일러 수업 자료(교재 : 컴파일러 입문)

    Date2003.04.23 CategorySystem/OS Byhooni Views22077
    Read More
  10. 캘리포니아 운전면허 족보

    Date2017.06.12 CategoryDevelop Byhooni Views896
    Read More
  11. 캘리포니아 운전면허 문제

    Date2017.07.22 CategoryEtc Byhooni Views1191
    Read More
  12. 최근 논문 자료 (2011/01/03, 만현형한테 보낸거..)

    Date2013.04.23 CategoryDevelop Byhooni Views10366
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 98 Next
/ 98