본문 바로가기

DB/MySQL

MySQL / Maria DB 조인(JOIN) 정리

조인(JOIN) 이란? 

 

릴레이션 하나로 원하는 데이터를 얻을 수 없어 관계가 있는 여러 릴레이션을 함께 사용해야 하는 경우 조인(join) 연산을 이용한다. 조인 연산은 조인 속성(join attribute)을 이용해 두 릴레이션을 조합하여 하나의 결과 릴레이션을 구성한다. 조인 속성은 두 릴레이션이 공통으로 가지고 있는 속성으로, 두 릴레이션이 관계가 있음을 나타낸다. 조인 연산한 결과 릴레이션은 피연산자 릴레이션에서 조인 속성의 값이 같은 투플만 연결하여 만들어진 새로운 투플을 포함한다.

[네이버 지식백과] 조인 (데이터베이스 개론, 2013. 6. 30., 김연희)

* 릴레이션 : 테이블 , * 투플 : 릴레이션의 행 이라고 생각하면 될 것 같다.

 

=> 조회하고 싶은 컬럼이 다른 테이블에 있을 때 사용, 여러 테이블을 한 테이블 처럼 볼 수 있음

 

 

1. INNER JOIN 

 

발 색칠 죄송합니다..
SELECT A.칼럼 B.칼럼
FROM 테이블1 A JOIN 테이블2 B
ON A.기준키 = B.기준키

테이블1 와 테이블2 의 중복된 값을 보여줌

 

 

2. LEFT JOIN

SELECT A.칼럼 B.칼럼
FROM 테이블1 A LEFT JOIN 테이블2 B
ON A.기준키 = B.기준키

왼쪽에 있는 테이블을 기준으로 조인하며 왼쪽 테이블의 결과 + 왼쪽 테이블과 오른쪽 테이블의 중복 값을 보여줌

 

 

3. RIGHT JOIN 

SELECT A.칼럼 B.칼럼
FROM 테이블1 A RIGHT JOIN 테이블2 B
ON A.기준키 = B.기준키

 

오른쪽에 있는 테이블을 기준으로 조인하며 왼쪽 테이블의 결과 + 왼쪽 테이블과 오른쪽 테이블의 중복 값을 보여줌

 

 

4. FULL OUTER JOIN

SELECT A.칼럼 B.칼럼
FROM 테이블1 A FULL OUTER JOIN 테이블2 B
ON A.기준키 = B.기준키

테이블1, 2의 데이터를 모두 검색

 

하지만 Maria DB에서는 FULL OUTER JOIN을 지원하지 않는다.

 

UNION을 사용하여 FULL OUTER JOIN을 대체할 수 있음

 

SELECT * 
FROM 테이블1 A LEFT JOIN 테이블2 B ON A.기준키 = B.기준키
UNION
SELECT * 
FROM 테이블1 A RIGHT JOIN 테이블2 B ON A.기준키 = B.기준키

 

full outer join 과 같은 결과가 나타남