GROUP BY 다음으로 중요한 구문.
여러 개의 테이블에서 동시에 데이터를 불러온다. 각각의 테이블에는 key들이 존재하고 (각각의 테이블의 관계를 만듦), 각각의 key들을 연결시키는 것이 JOIN.
- JOIN 연산자는 두 테이블 간의 관계를 나타내기 위해 사용
SELECT * FROM table A JOIN B ON 조건~
# 조인을 위한 테이블 ex3, ex4 생성
CREATE TABLE ex3(
`id` TINYINT,
`NAME` VARCHAR(10),
`age` TINYINT
)
;
INSERT INTO ex3
(`id`, `name`, `age`)
VALUES
(1,'이상훈',34),
(2,'박상훈',30),
(3,'최상훈',20)
;
CREATE TABLE ex4(
`id` TINYINT,
`region` VARCHAR(10)
)
;
INSERT INTO ex4
(`id`, `region`)
VALUES
(1,'서울'),
(4,'대구'),
(5,'부산')
;
#inner join
SELECT *
FROM ex3
JOIN ex4 ON ex3.id = ex4.id;
SELECT *
FROM ex3
LEFT JOIN ex4 ON ex3.id = ex4.id;
SELECT *
FROM ex3
LEFT JOIN ex4 ON ex3.id = ex4.id
WHERE ex4.id IS NULL;
SELECT *
FROM ex3
RIGHT JOIN ex4 ON ex3.id = ex4.id;
UNION은 두 테이블의 데이터를 세로로 쭉 나열하는 역할.
COLUMN의 수가 같아야 하며 중복은 제거함.SELECT id FROM ex3 UNION SELECT id FROM ex4;
- UNION ALL 은 중복을 그대로 표시
SELECT ex3.id, ex3.name, ex3.age, ex4.id, ex4.region
FROM ex3
LEFT JOIN ex4 ON ex3.id = ex4.id
UNION
SELECT ex3.id, ex3.name, ex3.age, ex4.id, ex4.region
FROM ex3
RIGHT JOIN ex4 ON ex3.id=ex4.id
WHERE ex3.id IS NULL;