달력

122024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
프로그래밍/DB 2016. 9. 23. 10:26


[Tip] INNER JOIN & OUTER JOIN의 차이

* 출처 : http://isstory83.tistory.com/57


INNER JOIN : simple join이라고도 하며, 둘 이상의 테이블에서 join     condition을 만족하는 행만 반환한다.


즉, 둘 이상의 테이블에 전부 존재하는 데이터만 조회한다는 것이다. (물론 ON조건에 만족하는 데이터)

집합으로 표현하자면 교집합이라 이해하면 된다.

간단한 예는 http://isstory83.tistory.com/entry/조인Join-쿼리


OUTER JOIN : OUTER JOIN 에는 LEFT , RIGHT, FULL OUTER JOIN 등의 세가지 형식이 있다.

INNER JOIN과 는 달리 두 테이블에서 지정된 쪽의 (LEFT or RIGHT) 모든 결과를 모두 보여준 후 반대쪽에 매칭되는 값을 보여주고, 값이 없어도 NULL로 보여주는 JOIN이다.

JOIN 이전에 나오는 테이블이 왼쪽(LEFT)테이블이 되고, JOIN 이후에 나오는 테이블은 오른쪽(RIGHT)테이블이 된다.


OUTER JOIN의 종류 및 사용


LEFT OUTER JOIN – A라는 테이블과 B라는 테이블이 있다면 그 두 테이블 중 왼쪽 테이블을 기준을 세우는 JOIN


SELECT t1.컬럼1, t1.컬럼2, t2.컬럼4, t2.컬럼5  FROM 테이블1 t1 LEFT JOIN 테이블2 t2 ON (t1.컬럼1 = t2.컬럼6)


왼쪽 TABLE1을 기준으로 컬럼1과 컬럼6를 매칭하여 결과 값을 보여주되 컬럼6에 3이 매칭되는 값이 없기에 NULL을 보여준다.


RIGHT OUTER JOIN – A라는 테이블과 B라는 테이블이 있다면 그 두 테이블 중 오른쪽 테이블을 기준을 세우는 JOIN


SELECT t1.컬럼1, t1.컬럼2, t2.컬럼4, t2.컬럼5 FROM 테이블1 t1 RIGHT JOIN 테이블2 t2 ON (t1.컬럼1 = t2.컬럼6)


테이블2의 컬럼6의 값 4에 해당하는 컬럼1이 없으므로 해당 데이터를 NULL로 보여준다.


FULL OUTER JOIN – 간단하게 LEFT와 RIGHT OUTER JOIN의 합이라고 생각하면 된다.


SELECT t1.컬럼1, t1.컬럼2, t2.컬럼4, t2.컬럼5 FROM 테이블1 t1 FULL OUTER JOIN 테이블2 t2 ON (t1.컬럼1 = t2.컬럼6)


참고적으로, 같은 두 개의 테이블을 INNER JOIN하면 아래와 같은 결과를 보여준다.


SELECT t1.컬럼1, t1.컬럼2, t2.컬럼4, t2.컬럼5 FROM 테이블1 t1 INNER JOIN 테이블2 t2 ON (t1.컬럼1 = t2.컬럼6)


위의 FULL OUTER JOIN에서 양쪽에 NULL이 들어간 데이터들이 사라진 것을 확인 할 수 있다.



'프로그래밍 > DB' 카테고리의 다른 글

SQL의 JOIN에서 ON과 WHERE의 차이점  (0) 2016.09.23
절차형 SQL  (0) 2016.09.23
풀스캔을 방지  (0) 2016.09.23
Posted by 당구치는 개발자
|