JOIN

younghyun·2022년 8월 15일
0

INNER JOIN(교집합)

겹치지 않는 행이 존재할 경우, 그 행은 결과에서 제외.

성능 차이
두 테이블에서 JOIN을 위한 기준 열이 서로 값을 가지고 있는 경우 조회에서 누락되는 행은 존재하지 않음. 그렇다면 LEFT JOININNER JOIN은 같은 조회 결과를 보임. 이때, INNER JOIN이 상대적으로 성능이 좋음.

OUTER JOIN(합집합)

JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용하는 구문.
즉, A, B 테이블을 JOIN할 경우, 조건에 맞지 않는 데이터도 표시하고 싶을 때 OUTER JOIN 사용.

LEFT JOIN
왼쪽의 모든 행을 조회.

RIGHT JOIN
오른쪽의 모든 행을 조회.

FULL JOIN
양쪽의 모든 행을 조회.

사용 방법

SELECT *  // 조회할 컬럼을 선택한다 (모든 컬럼 조회)  
FROM TABLE1  T1                               LEFT/RIGHT/FULL OUTER JOIN TABLE2  T2                  
ON (T1.KEY = T2.KEY) // 두 테이블을 연결할 조건을 명시한다

USING 조건절을 사용하는 경우는 JOIN하는 테이블 내에 있는 컬럼들이 동일한 이름을 가지고 있을 때 사용 가능.

SELECT *   조회할 컬럼을 선택한다 (모든 컬럼 조회)  
FROM TABLE1  T1                               LEFT/RIGHT/FULL OUTER JOIN TABLE2  T2                  
USING (KEY)   두 테이블이 동일하게 갖고 있는 컬럼명으로 조건을 명시한다

LEFT JOIN (LEFT OUTER JOIN)
아래와 같이 KEY 컬럼이 TIMESTAMP와 NUM인 같은 구조의 테이블 A와 B가 있음.

A 테이블에 LEFT OUTER JOIN B를 하는 경우

A,B 테이블의 조인 조건이 맞는 경우 B 테이블의 컬럼에서 해당 데이터를 가져오고, 조인 조건이 맞지 않는 경우 각 테이블의 레코드 중 A 테이블의 레코드는 무조건 결과값에 포함되어 나오고 B테이블에서 가져온 컬럼들은 NULL로 채움.


키 값인 TIMESTAMP와 VIN이 매칭되는 데이터를 함께 보여주고 있지만, 왼쪽 테이블(A)를 기준으로 매칭되지 않는 데이터까지 보여주고 있음.

RIGHT JOIN (RIGHT OUTER JOIN)


키 값인 TIMESTAMP와 VIN이 매칭되는 데이터를 함께 보여주고 있지만, 오른쪽 테이블(B)를 기준으로 매칭되지 않는 데이터까지 보여주고 있음.

FULL JOIN (FULL OUTER JOIN)


키 값인 TIMESTAMP와 VIN이 매칭되는 데이터를 함께 보여주고 있고, 두 테이블 A와 B에서 매칭되지 않는 데이터도 함께 보여주고 있음.

**FULL OUTER JOIN 의 같은 예제로 USING 사용 예시

USING구문은 MS SQL Server, Sybase에서는 지원하지 않음.

참고
https://velog.io/@profile_exe/SQL-LEFT-JOIN-INNER-JOIN-%EC%B0%A8%EC%9D%B4
https://haenny.tistory.com/34

profile
선명한 기억보다 흐릿한 메모

0개의 댓글