테이블명 : FIRST_HALF
테이블명 : JULY
SHIPMENT_ID를 기준으로 예시를 작성할 예정
FIRST_HALF는 101,102,103,104,105,106,109
JULY는 101,102,103,104,105,106,109,209
즉, JULY 테이블이 209의 값이 하나 더 존재
SELECT *
FROM FIRST_HALF
INNER JOIN JULY ON FIRST_HALF.SHIPMENT_ID = JULY.SHIPMENT_ID
ORDER BY FIRST_HALF.SHIPMENT_ID
JOIN 수행 시 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽으 후, 우측 테이블에서 JOIN의 대상 데이터를 읽어오는 과정
우측 테이블에서 만족하는 데이터가 없는 경우 NULL값으로 대체
SELECT *
FROM FIRST_HALF
LEFT JOIN JULY ON FIRST_HALF.SHIPMENT_ID = JULY.SHIPMENT_ID
ORDER BY FIRST_HALF.SHIPMENT_ID
해당 결과값은 위 INNER JOIN과 결과값이 동일하다
왜냐하면 위 코드에서 LFET에 해당하는 테이블은 FIRST_HALF이다
FIRST_HALF를 기준으로 먼저 데이터를 읽고 RIGHT에 해당하는 JULY를 읽기 때문에 209의 데이터가 노출되지 않는다.
LEFT JOIN에서 방향만 바꾼것
우측 테이블을 먼저 읽고 좌측 테이블에서 만족하는 값이 없다면 NULL로 대체
SELECT *
FROM FIRST_HALF
RIGHT JOIN JULY ON FIRST_HALF.SHIPMENT_ID = JULY.SHIPMENT_ID
ORDER BY FIRST_HALF.SHIPMENT_ID
Full Join은 지원하지 않는 DB가 많기 때문에, UNION함수를 사용해서 Full Join을 대체하여 사용하는 경우가 많음
양쪽 테이블에 있는 데이터 중 빈 값은 모두 Null로 채운 뒤 모든 데이터를 보여줌
2개 테이블 데이터의 모든 조합을 불러옴
해당 결과의 개수는 두 테이블 행의 개수를 곱한 값과 동일
SELECT (조회 컬럼)
FROM (테이블 명)
CROSS JOIN Orders ON (조인 조건)
ON절을 지정하기도 하지만 않하는 경우가 더 많음