
모든 표는 하나의 주제만 가져야 한다.
=> 이를 해결하기 위한 JOIN
FROM ~에서, 기존 테이블 LEFT JOIN 대상 테이블 ON 연결 키
FROM ~에서, 기존 테이블 LEFT OUTER JOIN 대상 테이블 ON 연결 키
FROM ~에서, 기존 테이블 INNER JOIN 대상 테이블 ON 연결 키
FROM ~에서, 기존 테이블 JOIN 대상 테이블 WHERE 연결 키
FROM ~에서, 기존 테이블,(콤마) 대상 테이블 WHERE 연결 키
연결키 부분이 JOIN ~ WHERE 연결키 AND로 묶여도 가능.
(LEFT JOIN은 안됨)
JOIN에 대한 직관적인 이해를 위한 사이트
https://sql-joins.leopard.in.ua/
FROM 기존의 테이블
LEFT JOIN 붙이고자하는 테이블
ON 연결키
왼쪽의 표를 기준으로 계속 표를 붙일 수 있다.
기준 테이블엔 값이 있지만, 대상 테이블에 연결되는 값이 없다면 전부 NULL로 표시된다.
대상 테이블엔 값이 있지만, 기준 테이블에 연결되는 값이 없다면 무시된다.
이와 반대로 RIGHT JOIN이 있다. (거의 안씀.)
FROM 기존의 테이블
INNER JOIN 붙이고자하는 테이블
ON 연결키
','로 묶는 것도 교집합이다.
기준 테이블엔 값이 있지만, 대상 테이블에 모두 값이 있어야 표시된다.
둘 중 하나라도 연결되는 값이 없다면 무시된다.
같은 결과를 만들지 않지만,NULL을 빼버리니까 LEFT JOIN보다 상대적으로 성능이 좋다.
FROM 기존의 테이블
FULL OUTER JOIN 붙이고자하는 테이블
ON 연결키
기존의 명령어로도 구현 가능
이론적으로는
LEFT JOIN + RIGHT JOIN - INNER JOIN
(LEFT JOIN) UNION (RIGHT JOIN)
UNION 에는 DISTINCT가 생략되어 있다. (자동으로 중복 제거)