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.이름
'Back-end > DataBase' 카테고리의 다른 글
SQL - Procedure 프로시저란? (0) | 2018.06.22 |
---|---|
SQL - Function 함수란? (0) | 2018.06.21 |
SQL 통계 - 행열 뒤집기 연습문제 난이도 ★★★★★ (0) | 2018.06.20 |
SQL 통계_ 행열 뒤집기. ( 시계열 표현 ) (0) | 2018.06.20 |
SQL 통계_ 서브쿼리 Sub Query_ Rank 순위매기기 (0) | 2018.06.20 |