JOIN
- 관계형 데이터베이스에서는 중복을 피하기 위해 데이터를 여러 테이블로 나눔
- 분리된 테이블을 결합하여 원하는 데이터를 조회하고자 할 경우 JOIN을 사용
- 관계를 가진 컬럼을 기준으로 데이터를 결합하여 원하는 결과물 도출
벤 다이아그램을 통해 조인문 만들어주는 사이트 : https://sql-joins.leopard.in.ua/
INNER JOIN
- SELECT * FROM TableA A INNER JOIN TableB B ON A.key = B.key [WHERE 조건]
- 내부 조인, 둘 이상의 테이블에 존재하는 공통 컬럼의 값이 같은 것을 검색
- 행의 값이 1:n일 경우 n개의 행을 검색
- WHERE절을 사용하여 조건을 만족하는 행을 가져올 수 있다.
- 대체로 INNER JOIN은 많이 사용된다.
LEFT(OUTER) JOIN
- SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key
- 테이블 A를 기준으로 조인, 외부조인
- 기준 테이블의 행이 모두 검색 (연결되지 않은 행은 null)
RIGHT(OUTER) JOIN
- SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key
- 테이블 B를 기준으로 조인, LEFT와 결과는 동일하지만 조회 순서가 다름, 외부조인
FULL OUTER JOIN
- SELECT * FROM TableA A LEFT JOIN TableB B UNION SELECT * FROM TableA A RIGHT JOIN TableB B
- MySQL에서는 FULL OUTER JOIN을 지원하지 않기 때문에 UNION을 통해 사용
CROSS JOIN
- SELECT * FROM TableA A CROSS JOIN TableB B
- 테이블 A에서 조회되는 하나의 행이 테이블 B의 모든 행에 다 연결되어 조인하는 방법
- 테이블 A가 n개의 행을 가지고 테이블 B가 m개의 행을 가진다면 n*m개의 행이 조회
'Database' 카테고리의 다른 글
[Oracle] 오라클 계정 생성 및 SQL 시작하기 (0) | 2020.08.07 |
---|---|
[Oracle] Database란? (0) | 2020.08.06 |
[MySQL] SELECT : 집계함수, GROUP BY절과 HAVING 절 (0) | 2020.05.12 |
[MySQL] INSERT, SELECT, UPDATE, DELETE 구문 (0) | 2020.05.12 |
[MySQL] 데이터 타입 정리 (0) | 2020.05.12 |