DataBase - SQL_JOIN
관계형데이터베이스와 JOIN
관계형 데이터베이스(Relational Database)에서 가장 핵심은 JOIN이다.
JOIN은 여러개의 테이블로 분산된 데이터를 결합해서 하나의 단일한 테이블을 만드는 것이다.
관계형을 담당하는 것이 JOIN이라고 말해도 문제가 없을 것이다.
JOIN은 어떻게 동작하는지, 다양한 JOIN의 종류에 대해서 알아보도록하자!!!
테이블 쪼개기
테이블에 중복된 데이터가 있으면 데이터의 유지보수가 어렵다.
중복된 데이터는 따로 분리해서 또 다른 테이블로 만드는 것이 좋다.
참고
관계형데이터베이스 모든 테이블은 하나의 테마만 가져야 한다. 라고 말하기도 한다.
분리하지 않은 표는 보기가 좋다. 하지만 유지보수가 어렵다.
분리된 테이블은 보기는 불편하다. 유지보수는 쉽다.
이러한 점을 해결하기 위해서 나온 것이 관계형데이터베이스의 JOIN이다.
JOIN 종류
LEFT JOIN or LEFT OUTER JOIN
RIGHT JOIN or RIGHT OUTER JOIN
INNER JOIN
FULL OUTER JOIN
EXCLUSIVE JOIN
JOIN그림으로 이해하기
https://sql-joins.leopard.in.ua/
LEFT JOIN or LEFT OUTER JOIN
가장 많이 사용되는 JOIN이다.
A만 가지고 있는 부분과 A와 B가 공통으로 가지고 있는 부분을 추출한다.
SELECT * FROM TableA A
LEFT JOIN TableB B ON
A.key = B.key
RIGHT JOIN or RIGHT OUTER JOIN
LEFT JOIN의 반대로 한 것이다.
B만 가지고 있는 부분과 A와 B가 공통으로 가지고 있는 부분을 추출한다.
SELECT * FROM TableA A
RIGHT JOIN TableB B ON
A.key = B.key
INNER JOIN
양쪽 모두에만 존재하는 것을 추출한다.
NULL이 있으면 NULL값은 포함하지 않고 출려하기 때문에 결과에는 NULL값이 출력되지 않는다.
SELECT * FROM TableA A
INNER JOIN TableB B ON
A.key = B.key
FULL OUTER JOIN
모든 테이블에 존재하는 것을 자기고 온다.
많은 데이터베이스 시스템에서 지원하지 않는 경우가 많다.
그래서 LEFT JOIN 과 RIGHT JOIN을 중복은 제거하고 합하면 된다.
SELECT * FROM TableA A
FULL OUTER JOIN TableB B ON
A.key = B.key
EXCLUSIVE JOIN
A쪽에만 존재하는 것을 가지고 오는 경우
SELECT * FROM TableA A
LEFT JOIN TableB B ON
A.key = B.key WHERE B.key IS NULL
B쪽에만 존재하는 것을 가지고 오는 경우
SELECT * FROM TableA A
RIGHT JOIN TableB B ON
A.key = B.key WHERE A.key IS NULL