โ๐ป 23์ผ ๊ณต๋ถ ์ด์ผ๊ธฐ.
USE zerobase
<-- celeb ํ
์ด๋ธ ํ์ธ -->
<-- ํ
์คํธ์ฉ ํ
์ด๋ธ ์์ฑ -->
CREATE TABLE test1
(
no int
)
CREATE TABLE test2
(
no int
)
<-- ๋ฐ์ดํฐ ์
๋ ฅ -->
INSERT INTO test1 VALUES (1);
INSERT INTO test1 VALUES (2);
INSERT INTO test1 VALUES (3);
INSERT INTO test2 VALUES (5);
INSERT INTO test2 VALUES (6);
INSERT INTO test2 VALUES (3);
<-- test1 & test2 ํ
์ด๋ธ ํ์ธ -->
์ฌ๋ฌ ๊ฐ์ SQL๋ฌธ์ ํฉ์ณ์ ํ๋์ SQL ๋ฌธ์ผ๋ก ๋ง๋ค์ด์ค๋ค. ์ด๋, ๊ฐ SQL๋ฌธ์์ ๊ฐ์ ธ์ค๋ ์นผ๋ผ์ ๊ฐ์๊ฐ ๊ฐ์์ผํ๋ค. (์์ง๊ฒฐํฉ)
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2 , ... FROM ํ
์ด๋ธ์ด๋ฆ1
UNION | UNION ALL
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2 , ... FROM ํ
์ด๋ธ์ด๋ฆ2
UNION | UNION ALL |
---|
์์ ) ์ฑ์ด ์ด์จ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ์ฟผ๋ฆฌ์ 1970๋
๋ ์์ ๊ฒ์ํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ค๋ณต์ ํฌํจํ์ฌ ์กฐํํ๋ผ.
USE zerobase
<-- celeb ํ
์ด๋ธ ํ์ธ -->
<-- ํ
์ด๋ธ ์์ฑ -->
CREATE TABLE snl_show
(
ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
SEASON int NOT NULL,
EPISODE int NOT NULL,
BROADCAST_DATE date,
HOST varchar(32) NOT NULL
);
<-- ๋ฐ์ดํฐ ์
๋ ฅ -->
<-- ํ
์ด๋ธ ํ์ธ -->
celeb | snl_show |
---|
๋ ๊ฐ ์ด์์ ํ
์ด๋ธ์ ๊ฒฐํฉํด์ค๋ค. (์ํ๊ฒฐํฉ)
๐ ํ
์ด๋ธA์ ์ปฌ๋ผ1์ ํ
์ด๋ธA.์ปฌ๋ผ1
๊ณผ ๊ฐ์ด ํํํ ์ ์๋ค.
๋ ๊ฐ์ ํ ์ด๋ธ์์ ๊ณตํต๋ ์์๋ค์ ๊ฒฐํฉํด์ค๋ค.
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2, ...
FROM ํ
์ด๋ธ์ด๋ฆ1
INNER JOIN ํ
์ด๋ธ์ด๋ฆ2
ON ํ
์ด๋ธ์ด๋ฆ1.์ปฌ๋ผ์ด๋ฆ = ํ
์ด๋ธ์ด๋ฆ2.์ปฌ๋ผ์ด๋ฆ <-- ๊ธฐ์ค -->
WHERE ์กฐ๊ฑด
์์ ) snl_show์ ํธ์คํธ๋ก ์ถํํ celeb์ ๊ธฐ์ค์ผ๋ก celeb ํ
์ด๋ธ๊ณผ snl_show ํ
์ด๋ธ์ inner join ํ๋ผ.
๋ ๊ฐ์ ํ ์ด๋ธ์์ ๊ณตํต์์ญ์ ํฌํจํ์ฌ ์์ชฝ ํ ์ด๋ธ์ ๋ค๋ฅธ ์์ญ์ ๋ชจ๋ ๋ชจํจํ์ฌ ๊ฒฐํฉํด์ค๋ค.
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2, ...
FROM ํ
์ด๋ธ์ด๋ฆ1
FULL OUTER JOIN ํ
์ด๋ธ์ด๋ฆ2
ON ํ
์ด๋ธ์ด๋ฆ1.์ปฌ๋ผ์ด๋ฆ = ํ
์ด๋ธ์ด๋ฆ2.์ปฌ๋ผ์ด๋ฆ <-- ๊ธฐ์ค -->
WHERE ์กฐ๊ฑด
MySQL์์๋ ์ง์ํ์ง ์๋ ๋ฌธ๋ฒ์ด๋ฏ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์ ๋ ฅํด์ค์ผํ๋ค.
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2, ...
FROM ํ
์ด๋ธ์ด๋ฆ1
LEFT JOIN ํ
์ด๋ธ์ด๋ฆ2 ON ํ
์ด๋ธ์ด๋ฆ1.์ปฌ๋ผ์ด๋ฆ = ํ
์ด๋ธ์ด๋ฆ2.์ปฌ๋ผ์ด๋ฆ
UNION
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2, ...
FROM ํ
์ด๋ธ์ด๋ฆ1
RIGHT JOIN ํ
์ด๋ธ์ด๋ฆ2 ON ํ
์ด๋ธ์ด๋ฆ1.์ปฌ๋ผ์ด๋ฆ = ํ
์ด๋ธ์ด๋ฆ2.์ปฌ๋ผ์ด๋ฆ
WHERE ์กฐ๊ฑด
์์ ) snl_show์ ํธ์คํธ๋ก ์ถํํ celeb์ ๊ธฐ์ค์ผ๋ก celeb ํ
์ด๋ธ๊ณผ snl_show ํ
์ด๋ธ์ full outer join ํ๋ผ.
๋ ๊ฐ์ ํ ์ด๋ธ์์ ๊ณตํต์์ญ์ ํฌํจํด ์ผ์ชฝ ํ ์ด๋ธ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ ๊ฒฐํฉํด์ค๋ค.
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2, ...
FROM ํ
์ด๋ธ์ด๋ฆ1 <-- LEFT TABLE -->
LEFT JOIN ํ
์ด๋ธ์ด๋ฆ2
ON ํ
์ด๋ธ์ด๋ฆ1.์ปฌ๋ผ์ด๋ฆ = ํ
์ด๋ธ์ด๋ฆ2.์ปฌ๋ผ์ด๋ฆ <-- ๊ธฐ์ค -->
WHERE ์กฐ๊ฑด
์์ ) snl_show์ ํธ์คํธ๋ก ์ถํํ celeb์ ๊ธฐ์ค์ผ๋ก celeb ํ
์ด๋ธ๊ณผ snl_show ํ
์ด๋ธ์ left join ํ๋ผ.
๋ ๊ฐ์ ํ ์ด๋ธ์์ ๊ณตํต์์ญ์ ํฌํจํด ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ ๊ฒฐํฉํด์ค๋ค.
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2, ...
FROM ํ
์ด๋ธ์ด๋ฆ1
RIGHT JOIN ํ
์ด๋ธ์ด๋ฆ2 <-- RIGHT TABLE -->
ON ํ
์ด๋ธ์ด๋ฆ1.์ปฌ๋ผ์ด๋ฆ = ํ
์ด๋ธ์ด๋ฆ2.์ปฌ๋ผ์ด๋ฆ <-- ๊ธฐ์ค -->
WHERE ์กฐ๊ฑด
์์ ) snl_show์ ํธ์คํธ๋ก ์ถํํ celeb์ ๊ธฐ์ค์ผ๋ก celeb ํ
์ด๋ธ๊ณผ snl_show ํ
์ด๋ธ์ right join ํ๋ผ.
๋ ๊ฐ์ ํ ์ด๋ธ์์ ๊ธฐ์ค์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ ๊ฒฐํฉํด์ค๋ค.
SELECT ์ปฌ๋ผ์ด๋ฆ1, ์ปฌ๋ผ์ด๋ฆ2, ...
FROM ํ
์ด๋ธ์ด๋ฆ1, ํ
์ด๋ธ์ด๋ฆ2 <-- ํ
์ด๋ธ์ด ์ฌ๋ฌ๊ฐ ๋ค์ด๊ฐ -->
WHERE ์กฐ๊ฑด <-- ๊ธฐ์ค -->
์์ ) snl_show์ ํธ์คํธ๋ก ์ถํํ celeb์ ๊ธฐ์ค์ผ๋ก celeb ํ
์ด๋ธ๊ณผ snl_show ํ
์ด๋ธ์ self join ํ๋ผ.
์์ ) celeb ํ
์ด๋ธ์ ์ฐ์์ธ ์ค, snl_show์ host๋ก ์ถํํ๊ณ , ์ํ๋ฐฐ์ฐ๋ ์๋๋ฉด์ YG์ํฐํ
์ด๋จผํธ ์์์ด๊ฑฐ๋, 40์ธ ์ด์์ด๋ฉด์ YG์ํฐํ
์ด๋จผํธ ์์์ด ์๋ ์ฐ์์ธ์ ์ด๋ฆ๊ณผ ๋์ด, ์ง์
, ์์์ฌ, ์์ฆ, ์ํผ์๋ ์ ๋ณด๋ฅผ ์กฐํํ๋ผ.