SQL_4. JOIN

소고기는레어·2020년 12월 13일
0
post-thumbnail

JOIN은 하나 이상의 테이블을 결합하여 원하는 결과를 불러오는데 사용한다.
두 테이블의 Row를 길게 이어붙인다고 생각하면 편하다.
따라서 결합 후 모든 Column을 불러오면 가로로 길어진 결과창을 볼 수 있을 것이다.

JOIN의 종류로는 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN 등이 존재한다.

보통 FROM 으로 먼저 불러온 테이블을 LEFT, JOIN으로 나중에 불러온 테이블을 RIGHT로 구분한다.

추가하자면 하나의 테이블만 가지고 두번 불러와서 스스로 JOIN하는 것을 Self Join이라고 부르며, 따로 Syntax는 존재하지 않고 위에 나열한 Syntax를 사용한다.

INNER JOIN

INNER JOIN 은 두 테이블 중 양쪽 테이블 모두에 속하는 결과만을 불러오게 된다.

Query 예제는 다음과 같다.

SELECT
	*
FROM
	l_table
INNER JOIN
	r_table2
ON 
	l.table.id = r.table2.id

위의 예제를 보면 ON 을 이용한 것을 볼 수 있는데
이는 서로 다른 두 테이블에서 같은 데이터값을 갖고있는 Column을 매칭시켜 주는 역할을 한다. JOIN에 있어서 필수적인 요소로 볼 수 있다.

또한 USING도 사용할 수 있다.

SELECT
	*
FROM
	l_table
INNER JOIN
	r_table2
USING 
	(table.id)

USINGON 과 같은 역할을 하지만 매칭시키고자 하는 Column 명이 좌우 테이블 모두 동일할 때 쿼리 작성을 간단하게 만들어준다.

아래에 이어서 설명할 다른 JOIN들 역시 기본적인 Query 구조는 위와 같다.

LEFT JOIN(RIGHT JOIN)

LEFT JOINFROM으로 먼저 불러온 Left 테이블에 속하는 데이터를 추출하게 된다.
이해하기 쉽게 설명하자면

데이터가 Left와 Right 모두에 속한다. = 전부 불러옴
데이터가 Left에만 속한다. = Left 데이터를 불러오고 Right 데이터는 Null로 표시된다.
데이터가 Right에만 속한다. = 불러오지 않음
데이터가 어디에도 속하지 않는다. = 불러오지 않음

위와 같이 정리할 수 있다.
RIGHT JOIN 도 있지만 단순 좌우반전 개념이며 LEFT JOIN 으로 치환이 가능하기 때문에 잘 쓰이지 않는다.

Query 예시는 아래와 같다.

SELECT
	*
FROM
	l_table
LEFT JOIN
	r_table2
ON l.table.id = r.table2.id

FULL JOIN

FULL JOIN 은 어느 한 쪽에 데이터가 없더라도 없는 데이터는 NULL 값으로 모두 추출하게 된다.

Query 예시는 아래와 같다.

SELECT
	*
FROM
	l_table
FULL JOIN
	r_table2
ON l.table.id = r.table2.id

CROSS JOIN

CROSS JOIN 은 각 Column들의 결합 가능한 모든 조합을 추출하게 된다.

따라서 ON 이나 USING 을 통해 테이블을 매칭시켜 줄 필요가 없다.

Query 예시는 아래와 같다.

SELECT
	*
FROM
	l_table
CROSS JOIN
	r_table2

SELF JOIN

SELF JOIN은 하나의 테이블만 사용, 해당 테이블을 왼쪽과 오른쪽에 불러와서 스스로 JOIN하는 것을 말한다.

보통의 JOIN은 두 테이블을 결합하여 Column의 데이터를 확장하는데 주로 쓴다면
SELF JOIN은 해당 테이블에 필터를 씌우는 용도로 사용하게 된다.

Syntax는 따로 존재하지 않고, 위의 예시들에서 불러올 테이블만 하나의 테이블로 지정해주면 된다.

profile
https://www.rarebeef.co.kr/

0개의 댓글