Contents

Database
2019.11.22 04:30

SQL JOIN 정리 (Inner Join & Outer Join)

조회 수 829 댓글 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. [mysql] MySQL 데이터베이스 추가 및 사용자 추가

    Date2019.11.22 CategoryDatabase Byhooni Views242
    Read More
  2. [oracle] Oracle 사용자 추가 절차

    Date2019.11.22 CategoryDatabase Byhooni Views229
    Read More
  3. [mysql] MySQL 백업 및 복구

    Date2019.11.22 CategoryDatabase Byhooni Views272
    Read More
  4. [mysql] MySql DB/테이블 사이즈 확인을 위한 쿼리

    Date2019.11.22 CategoryDatabase Byhooni Views246
    Read More
  5. SQL JOIN 정리 (Inner Join & Outer Join)

    Date2019.11.22 CategoryDatabase Byhooni Views829
    Read More
  6. [mysql] MacOS에 MySQL 설치, 설정, 암호 재설정

    Date2017.12.15 CategoryDatabase Byhooni Views805
    Read More
  7. [mysql] ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    Date2017.12.15 CategoryDatabase Byhooni Views626
    Read More
  8. [mysql] MySQL 한글 깨짐 현상 해결하기(UTF8)

    Date2017.12.01 CategoryDatabase Byhooni Views4097
    Read More
  9. [mysql] 중복데이터 삭제하는 초간단 쿼리

    Date2017.11.22 CategoryDatabase Byhooni Views2817
    Read More
  10. [mysql] 쿼리 실행시 ERROR 1366 (HY000) : incorrect string value : for column

    Date2017.03.30 CategoryDatabase Byhooni Views7680
    Read More
  11. [mysql] CPU 점유율이 높을 때 확인할 내용

    Date2015.08.26 CategoryDatabase Byhooni Views5749
    Read More
  12. [mysql] MySql 에서 정렬 후 그룹 하는 방법

    Date2015.05.07 CategoryDatabase Byhooni Views2530
    Read More
Board Pagination Prev 1 2 Next
/ 2