Back-end/DataBase

SQL -JOIN 조인이란? (INNER / OUTER)

cheersHena 2018. 6. 21. 18:25
반응형

SQL -JOIN 

 한 데이터 베이스 내의 여러 테이블의 레코드를 조합하여 하나의 열로 표현한 것.

 2개의 테이블에서 각각의 공통 값을 이용함으로써 필드를 조합하는 수단이 된다. 

 

SQL - JOIN 의 표현.

 

1. 명시적 표현.

: SELECT * FROM employee

INNER JOIN department ON employee.departmentID = department.departmentID

 

2. 암시적 표현

: SELECT * FROM employee , department

WHERE employee.departmentID = departmentID; 

 

INNER JOIN (=JOIN

**일반적으로 사용하는 JOIN 은 INNER JOIN 임. 

키 값이 있는 테이블의 칼럼 값 비교 후, 조건에 맞는 값을 가져오는 것. = 교집합

즉, 서로 연관된 내용만 검색하는 조인법 

 

 

OUTER JOIN

조인하는 여러 테이블에서 한쪽에는 데이터가 있고 한쪽에는 데이터가 없는 경우.

데이터가 있는 쪽 테이블을 전부 출력하는 방법. 

즉, 조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용할 수 있다.

 

ex) 다음과 같은 테이블과 데이터 존재하는 경우

 

Table 1                                

 

 이름 나이 
 라이언  10
 피치   11
 넬슨   12
 써니   13


table 2 

이름   취미 
 라이언  영화 
 피치  독서 
 노을 기타연주 

 

→ LEFT OUTER JOIN / RIGHT OUTER JOIN/  FULL OUTER JOIN

 

 

LEFT OUTER JOIN

 

조인문의 왼쪽에 있는 테이블의 모든결과 가져온 후, 오른쪽 테이블의 데이터를 매칭.

매칭되는 데이터가 없는 경우 NULL

 

ex) SELECT Table1.이름, Table1.나이, Table2.취미

FROM Table1 LEFT OUTER JOIN Table2 ON Table1.이름=Table2.이름

 

이름    나이   취미 
 라이언  10  영화
 피치  11   독서 
 넬슨  12  NULL
 써니  13  NULL

 

 

RIGHT OUTER JOIN

조인문의 오른쪽의 테이블결과를 모두 가져온후 왼쪽 테이블 데이터와 매칭, 없는 경우 NULL. 

 

ex) SELECT Table1.이름, Table1.나이, Table2.취미

FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.이름=Table2.이름

 

이름  나이  취미 
 라이언  10  영화 
 피치  11  독서 
 노을 NULL  기타연주 

 

FULL OUTER JOIN

 

 

 

앞의 LEFT, RIGHT OUTER JOIN 합친 것. = 합집합 

양쪽 모두 조건이 일치하지 않는 데이터까지 모두 결합하여 출력. 

 

 

이름    나이   취미 
 라이언  10  영화
 피치  11   독서 
 넬슨  12  NULL
 써니  13  NULL
 노을   NULL  기타연주 

 

*MYSQL에서는 Full outer join을 지원하지 않는다. 

 -> left, right join을 합치는 기능인 UNION으로 대체 가능.

 

SELECT Table1.이름, Table1.나이, Table2.취미

FROM Table1 LEFT OUTER JOIN Table2 ON Table1.이름=Table2.이름

UNION

SELECT Table1.이름, Table1.나이, Table2.취미

FROM Table1 RIGHT OUTER JOIN Table2 ON Table1.이름=Table2.이름

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형