관계형 데이터베이스 JOIN 개념정리
JOIN 개념
JOIN은 2개 이상의 테이블에 대해 연관된 튜플(행)들을 결합하여, 하나의 새로운 테이블(릴레이션)을 만들어 반환한다.
LEFT JOIN (=LEFT OUTER JOIN)
- 왼쪽에 있는 테이블을 기준으로 join합니다.
- 2개이상 테이블을 조인 가능하다.
# 2개의 테이블을 LEFT JOIN할때
>SELECT * FROM A LEFT JOIN B ON 조건.A = 조건.B ;
# 3개의 테이블을 LEFT JOIN할때
>SELECT * FROM A LEFT JOIN B ON 조건.A = 조건.B LEFT JOIN C ON 조건.B = 조건.C;
왼쪽 테이블A에 테이블B을 합친다. 테이블A에 존재하지만 테이블B에 존재하지 않는 행이라면 NULL로 채운다.
RIGHT JOIN (=RIGHT OUTER JOIN)
- 오른쪽에 있는 테이블을 기준으로 join합니다.
- RIGHT는 B테이블을 기준으로 B테이블 행에 연관된 A행을 합친다.
# 2개의 테이블을 RIGHT JOIN할때
>SELECT * FROM A RIGHT JOIN B ON 조건.A = 조건.B ;
INNER JOIN
- 양쪽 테이블에 모두 존재하는 행만 붙여서 테이블을 만든다.
- 한쪽이라도 없어서 NULL로 나타나는 행은 테이블에서 제거된다.
# 2개의 테이블을 INNER JOIN할때
>SELECT * FROM A INNER JOIN B ON 조건.A = 조건.B ;
FULL OUTER JOIN
- FULL OUTER JOIN은 INNER JOIN과 반대로 한쪽 테이블에만 존재하는 행이라도 모두 합쳐서 테이블을 구성한다.
- 한쪽이라도 없어서 NULL로 나타나는 행은 테이블에서 제거되지 않고 합친다.
# 2개의 테이블을 INNER JOIN할때
>SELECT * FROM A INNER JOIN B ON 조건.A = 조건.B ;
# FULL OUTER JOIN을 지원하지 않는 DB에서는 LEFT와 RIGHT JOIN, UNION연산자를 이용해서 같은 효과를 낼 수 있다.
>(SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id) UNION (SELECT * FROM topic RIGHT JOIN author ON topic.author_id = author.id)
EXCLUSIVE LEFT JOIN
- EXCLUSIVE JOIN는 만약 테이블 두개를 JOIN한다면 둘중 한가지 테이블에만 있는 데이터를 가져옵니다.
- 다른 JOIN들과는 다르게 별도의 EXCLUSIVE JOIN함수가 있는 것은 아니고 기존의 LEFT JOIN과 Where절의 조건을 함께 사용하여 만드는 JOIN입니다.
'DB > Mysql' 카테고리의 다른 글
물리적 데이터 모델링 (0) | 2021.11.03 |
---|---|
논리적 데이터 모델링 (0) | 2021.11.03 |
개념적 데이터 모델링 (0) | 2021.11.02 |
MySQL 테이블 생성(CREATE)& TABLE 구조 보기 (0) | 2021.10.29 |
MySQL의 구조 & DB 명령어 (0) | 2021.10.28 |