테이블을 DB관리자가 원하는 형태로 보기 위해 두개 이상의 테이블을 묶어 하나의 테이블을 만들때 사용합니다.
SELECT 속성이름, ... FROM 테이블A, 테이블B WHERE 조인조건 AND 검색조건;
OR
SELECT 속성이름, ... FROM 테이블A INNER JOIN 테이블B ON 조인조건 WHERE 검색조건;
INNTER JOIN은 JOIN의 Defualt값으로 설정되어 있습니다.
SELECT 속성이름, ... FROM 테이블A INNER JOIN 테이블B ON 조인조건 WHERE 검색조건;
SELECT 속성이름, ... FROM 테이블A JOIN 테이블B ON 조인조건 WHERE 검색조건;
위 두 코드는 완벽하게 같은 매커니즘으로 작동합니다.
OUTER JOIN에는 LEFT OUTER JOIN, FULL OUTER JOIN, RIGHT OUTER JOIN 이 세가지의 경우로 나뉘어 집니다.
SELECT * FROM A a LEFT JOIN B b ON a.KEY = b.KEY
SELECT * FROM A a LEFT JOIN B b ON a.KEY = b.KEY WHERE b.KEY IS NULL
SELECT * FROM A a RIGHT OUTER JOIN B b ON a.KEY = b.KEY
SELECT * FROM A a RIGHT OUTER JOIN B b ON a.KEY = b.KEY WHERE a.KEY IS NULL
SELECT * FROM A a FULL OUTER JOIN B b ON a.KEY = b.KEY
SELECT * FROM A a FULL OUTER JOIN B b ON a.KEY = b.KEY WHERE a.KEY IS NULL OR b.KEY IS NULL
SELF JOIN은 스스로를 JOIN하여 조건을 찾아내는 방법입니다. 하나의 표에서 어떠한 조건만으로 필요한 데이터를 추출하기 위해 필요합니다. 이때, 하나의 표에서 데이터를 JOIN하기 위해서는 AS를 사용하여 표의 이름을 달리 표현해 주어야 가능합니다.
CREATE TABLE users( id INT PRIMARY KEY, name VARCHAR(10), superior_id INT );
테이블 생성
INSERT INTO users VALUES ('1', 'happy', NULL), ('2', 'banana', 1), ('3', 'lucky', 2), ('4', 'orange', 2), ('5', 'apple', NULL);
데이터 추가
SELECT u1.id, u1.name AS '멘티', u2.name AS '멘토' FROM users AS u1 JOIN users AS u2 ON u1.superior_id = u2.id;