JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 주며, Relation Database 에서 가장 많이 쓰인다.

ON 절과 함께 사용되며, ON의 조건을 만족하는 데이터만 가져온다.
표준 SQL과는 달리 MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 모두 같은 의미로 사용된다.
INNER JOIN 문법 예시
SELECT * FROM A_TABLE INNER JOIN B_TABLE ON 조인 조건 WHERE 검색 조건

INNER JOIN은 두 테이블에 모두 데이터가 있어야만 결과가 나오지만, OUTER JOIN은 한쪽에만 데이터가 있어도 결과가 나온다.
OUTER JOIN 문법 예시
SELECT * FROM A_TABLE LEFT 테이블 <LEFT | RIGHT | FULL> OUTER JOIN B_TABLE RIGHT 테이블 ON 조인 조건 WHERE 검색 조건
OUTER JOIN의 종류

첫 번째 테이블을 기준으로 두 번째 테이블을 조합한다.
ON 의 조건을 만족하지 않는 경우에는 첫 번째 테이블의 필드 값은 그대로 가져오고
두 번째 테이블의 필드 값은 모두 NULL로 표시된다.
LEFT OUTER JOIN 문법 예시
SELECT * FROM A_TABLE LEFT JOIN B_TABLE ON 조인 조건 WHERE 검색 조건

LEFT OUTER JOIN과 반대로 두 번째 테이블을 기준으로 첫 번째 테이블을 조합한다.
ON 의 조건을 만족하지 않는 경우에는 두 번째 테이블의 필드 값은 그대로 가져오고
첫 번째 테이블의 필드 값은 모두 NULL로 표시된다.
RIGHT OUTER JOIN 문법 예시
SELECT * FROM A_TABLE RIGHT JOIN B_TABLE ON 조인 조건 WHERE 검색 조건

양쪽 테이블의 모든 행을 반환한다.
조건이 일치하면 JOIN, 일치하지 않으면 NULL 을 채운다.
FULL OUTER JOIN 문법 예시(PostgreSQL, Oracle 등)
SELECT * FROM A_TABLE FULL OUTER JOIN B_TABLE ON 조인 조건
MySQL에서는 FULL JOIN을 지원하지 않는다.
LEFT OUTER JOIN, RIGHT OUTER JOIN을 함께 사용하여 같은 결과를 도출할 수는 있다.
FUlL JOIN → LEFT JOIN + RIGHT JOIN 문법 예시
SELECT * FROM A_TABLE LEFT JOIN B_TABLE ON 조인 조건 UNION SELECT * FROM A_TABLE RIGHT JOIN B_TABLE ON 조인 조건
중복되지 않은 유일한 값을 추출하는 경우 or 중복되는 모든 값까지 추출하는 경우에 쓰인다.
SELECT *
FROM A_TABLE
LEFT JOIN B_TABLE
UNION
SELECT *
FROM A_TABLE
RIGHT JOIN B_TABLE
SELECT *
FROM A_TABLE
LEFT JOIN B_TABLE
UNION ALL
SELECT *
FROM A_TABLE
RIGHT JOIN B_TABLE

한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능
상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼 된다.
카티션 곱(CARTESIAN PRODUCT)이라고도 한다.
CROSS JOIN 문법 예시
SELECT * FROM A_TABLE CROSS JOIN B_TABLE

SELF JOIN은 자기 자신과 조인하므로 1개의 테이블을 사용한다.
별도의 문법이 있는 것은 아니고 1개로 JOIN하면 자체 JOIN이 된다.
SELF JOIN 문법 예시
SELECT * FROM A_TABLE A INNER JOIN A_TABLE B WHERE 검색 조건