[SQL-์ค๋ผํด] ์กฐ์ธ - EQUI join, NON-EQUI join, OUTER join, SELF join
์กฐ์ธ
๊ฐ๋
- ํ๋์ SQL ๋ช ๋ น๋ฌธ์ ์ํด ์ฌ๋ฌ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์กฐํํ ์ ์๋ ๊ธฐ๋ฅ
- ๋๊ฐ ์ด์์ ํ ์ด๋ธ์ '๊ฒฐํฉ'ํ๋ค๋ ์๋ฏธ
์ข ๋ฅ
- ์นดํฐ์ ๊ณฑ, EQUI join, NON-EQUI join, OUTER join, SELF join
์นผ๋ผ ์ด๋ฆ ์ ๋งค๋ชจํธ์ฑ
- ์๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ ์๋ ๋์ผํ ์นผ๋ผ ์ด๋ฆ์ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ ์นผ๋ผ ์ด๋ฆ ์์ ํ ์ด๋ธ ์ด๋ฆ์ ์ ๋์ฌ๋ก ์ฌ์ฉ
- ํ ์ด๋ธ ์ด๋ฆ๊ณผ ์นผ๋ผ์ ์ ( . )์ผ๋ก ๊ตฌ๋ถ
- ํ ์ด๋ธ๋ช .์นผ๋ผ๋ช
ํ ์ด๋ธ ๋ณ๋ช
- ํ ์ด๋ธ ์ด๋ฆ์ ๋์ ํ๋ ๋ณ๋ช ์ฌ์ฉ ๊ฐ๋ฅ
- from์ ์์ ํ ์ด๋ธ ์ด๋ฆ ๋ค์์ ๊ณต๋ฐฑ์ ๋๊ณ ๋ณ๋ช ์ ์
- ํ ์ด๋ธ ๋ณ๋ช ์์ฑ ๊ท์น
- ํ ์ด๋ธ ๋ณ๋ช ์ 30์๊น์ง ๊ฐ๋ฅ
- from์ ์์ ํ ์ด๋ธ ์ด๋ฆ์ ๋ช ์ํ๊ณ ๊ณต๋ฐฑ์ ๋ ๋ค์ ํ ์ด๋ธ ๋ณ๋ช ์ง์
- ํ๋์ SQL ๋ช ๋ น๋ฌธ์์ ํ ์ด๋ธ ์ด๋ฆ๊ณผ ๋ณ๋ช ์ ํผ์ฉํ ์ ์์
- ํ ์ด๋ธ์ ๋ณ๋ช ์ ํด๋น SQL ๋ช ๋ น๋ฌธ ๋ด์์๋ง ์ ํจ
AND ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๊ฒ์ ์กฐ๊ฑด ์ถ๊ฐ
- WHERE์ ์์ ์กฐ์ธ ์กฐ๊ฑด์ AND์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ฐ์ ์ธ ๊ฒ์ ์กฐ๊ฑด๊ณผ ๊ฒฐํฉ ๊ฐ๋ฅ
- ์ผ๋ฐ ๊ฒ์ ์กฐ๊ฑด ์ถ๊ฐ๋ ์กฐ์ธ ๋์ ์งํฉ์ ์ค์ฌ ์กฐ์ธ์ ์ฒ๋ฆฌ ์ฑ๋ฅ ํฅ์์ ๋์
์นดํฐ์ ๊ณฑ
- ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๋ํด ์ฐ๊ฒฐ ๊ฐ๋ฅํ ํ์ ๋ชจ๋ ๊ฒฐํฉ
- WHERE์ ์์ ์กฐ์ธ ์กฐ๊ฑด์ ์ ์๋ตํ๊ฑฐ๋ ์๋ชป ์ค์ ํ ๊ฒฝ์ฐ ๋ฐ์
- ๊ฐ ํ ์ด๋ธ์ ํ์ ์๋ฅผ ๊ณฑํ ๋งํผ ์กฐ์ธ ๊ฒฐ๊ณผ ์์ฑ
- ๋์ฉ๋ ํ ์ด๋ธ์์ ๋ฐ์ํ ๊ฒฝ์ฐ SQL๋ช ๋ น๋ฌธ ์ฒ๋ฆฌ์๋ ์ ํ
select ํ
์ด๋ธ1.์นผ๋ผ๋ช
, ํ
์ด๋ธ2.์นผ๋ผ๋ช
from [ํ
์ด๋ธ1, ํ
์ด๋ธ2 | ํ
์ด๋ธ1 cross join ํ
์ด๋ธ2]
EQUI JOIN
- ์กฐ์ธ ๋์ ํ ์ด๋ธ์์ ๊ณตํต ์นผ๋ผ์ ' = '(equal) ๋น๊ต๋ฅผ ํตํด ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ ํ์ ์ฐ๊ฒฐํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ์กฐ์ธ ๋ฐฉ๋ฒ
- SQL ๋ช ๋ น๋ฌธ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ
- ์กฐ์ธ ์ ํธ๋ฆฌ๋ทฐํธ : EQUI JOIN์์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ๊ฐ ๋๋ ๊ณตํต ์นผ๋ผ
# ์ค๋ผํด ํ์ค ๋ฐฉ์
select ํ
์ด๋ธ1.์นผ๋ผ๋ช
, ํ
์ด๋ธ2.์นผ๋ผ๋ช
from ํ
์ด๋ธ1, ํ
์ด๋ธ2
where ํ
์ด๋ธ1.์นผ๋ผ๋ช
, = ํ
์ด๋ธ2.์นผ๋ผ๋ช
โช from : ์กฐ์ธ ๋์ ํ ์ด๋ธ์ ๊ธฐ์ , ํ ์ด๋ธ์ ์ฝค๋ง( , )๋ก ๊ตฌ๋ถ
โช where : ์กฐ์ธ ์ ํธ๋ฆฌ๋ทฐํธ์ ' = ' ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ์ธ ์กฐ๊ฑด์ ๊ธฐ์ ํ๋ค
# ANSI ํ์ค ๋ฐฉ์
select ํ
์ด๋ธ1.์นผ๋ผ๋ช
, ํ
์ด๋ธ2.์นผ๋ผ๋ช
from ํ
์ด๋ธ1 join ํ
์ด๋ธ2 on ํ
์ด๋ธ1.์นผ๋ผ๋ช
= ํ
์ด๋ธ2.์นผ๋ผ๋ช
EQUI JOIN - NATURAL JOIN
- WHERE์ ์ ์ฌ์ฉํ์ง ์๊ณ NATURAL JOIN ํค์๋ ์ฌ์ฉ
- ์ค๋ผํด์์ ์๋์ ์ผ๋ก ํ ์ด๋ธ์ ๋ชจ๋ ์นผ๋ผ์ ๋์์ผ๋ก ๊ณตํต ์นผ๋ผ์ ์กฐ์ฌํ ํ, ๋ด๋ถ์ ์ผ๋ก ์กฐ์ธ๋ฌธ ์์ฑ
select ํ
์ด๋ธ1.์นผ๋ผ๋ช
, ํ
์ด๋ธ2.์นผ๋ผ๋ช
from ํ
์ด๋ธ1 natural join ํ
์ด๋ธ2;
โช ์กฐ์ธ ์ ํธ๋ฆฌ๋ทฐํธ์ ํ ์ด๋ธ ๋ณ๋ช ์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ ๋ฐ์
EQUI JOIN - JOIN ~ USING
- USING์ ์ ์กฐ์ธ ๋์ ์นผ๋ผ์ ์ง์
- ์นผ๋ผ ์ด๋ฆ์ ์กฐ์ธ ๋์ ํ ์ด๋ธ์์ ๋์ผํ ์ด๋ฆ์ผ๋ก ์ ์
select ํ
์ด๋ธ1.์นผ๋ผ๋ช
, ํ
์ด๋ธ2.์นผ๋ผ๋ช
from ํ
์ด๋ธ1 JOIN ํ
์ด๋ธ2
using (๊ณตํต์นผ๋ผ๋ช
);
โช ์กฐ์ธ ์ ํธ๋ฆฌ๋ทฐํธ์ ํ ์ด๋ธ ๋ณ๋ช ์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ ๋ฐ์
NON-EQUI JOIN
- ' < ', BETWEEN a AND b์ ๊ฐ์ด ' = ' ์กฐ๊ฑด์ด ์๋ ์ฐ์ฐ์ ์ฌ์ฉ
- ๋ฒ์ ์ฌ์ฉ <, >, <=, >=
OUTER JOIN
- EQUI JOIN์ ์กฐ์ธ ์กฐ๊ฑด์์ ์์ธก ์นผ๋ผ ๊ฐ ์ค, ์ด๋ ํ๋๋ผ๋ NULL์ด๋ฉด ' = ' ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ด ๋์ด
NULL ๊ฐ์ ๊ฐ์ง ํ์ ์กฐ์ธ ๊ฒฐ๊ณผ๋ก ์ถ๋ ฅ ๋ถ๊ฐ๋ฅ
- ์์ธก ์นผ๋ผ ๊ฐ ์ค ํ๋๊ฐ NULL์ด์ง๋ง ์กฐ์ธ ๊ฒฐ๊ณผ๋ก ์ถ๋ ฅํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ OUTER JOIN ์ฌ์ฉ
> (+) ๊ธฐํธ๋ฅผ ์ฌ์ฉํ OUTER JOIN
- ์ค๋ผํด ํ์ค ๋ฐฉ์
- WHERE์ ์ ์กฐ์ธ ์กฐ๊ฑด์์ OUTER JOIN ์ฐ์ฐ์์ธ (+) ๊ธฐํธ ์ฌ์ฉ
- ์กฐ์ธ ์กฐ๊ฑด๋ฌธ์์ NULL์ด ์ถ๋ ฅ๋๋ ์นผ๋ผ์ด ์๋ ํ ์ด๋ธ์ ์นผ๋ผ์ (+) ๊ธฐํธ ์ถ๊ฐ
select ํ
์ด๋ธ1.์นผ๋ผ๋ช
, ํ
์ด๋ธ2.์นผ๋ผ๋ช
from ํ
์ด๋ธ1, ํ
์ด๋ธ2
where ํ
์ด๋ธ1.์นผ๋ผ๋ช
(+) = ํ
์ด๋ธ2.์นผ๋ผ๋ช
๋๋ ํ
์ด๋ธ1.์นผ๋ผ๋ช
= ํ
์ด๋ธ2.์นผ๋ผ๋ช
(+)
โช NULL์ด ์กด์ฌํ๋ ์นผ๋ผ์ชฝ์ (+) ํ์
โช IN ์ฐ์ฐ์ ์ฌ์ฉ ๋ถ๊ฐ
โช OR ์ฐ์ฐ์ ๊ฒฐํฉ ๋ถ๊ฐ
โช ์์ชฝ์ (+) ์ค ์ ์์
> OUTER JOIN ~ ON์ ์ฌ์ฉํ OUTER JOIN
- ANSI ํ์ค ๋ฐฉ์
- ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ค ๋์ค๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ์นผ๋ผ์ ๊ธฐ์ค์ผ๋ก left(์ผ), right(์ค), full(์์ชฝ ๋ค)
select ํ
์ด๋ธ1.์นผ๋ผ๋ช
, ํ
์ด๋ธ2.์นผ๋ผ๋ช
from ํ
์ด๋ธ1 [right | left | full] outer join ํ
์ด๋ธ2
on ํ
์ด๋ธ1.์นผ๋ผ๋ช
= ํ
์ด๋ธ2.์นผ๋ผ๋ช
โช ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์ฌ ํ ์ด๋ธ ๋ฐฉํฅ์ผ๋ก OUTER JOIN๋ฌธ ์์ฑ
> > FULL OUTER JOIN
- LEFT OUTER JOIN๊ณผ RIGHT OUTER JOIN์ ๋์์ ์คํํ ๊ฒฐ๊ณผ ์ถ๋ ฅ (UNION ํฉ์งํฉ)
- ์ค๋ผํด ๋ฐฉ์ (+) ์์๋ FULL OUTER JOIN ์์
SELF JOIN
- ํ๋์ ํ ์ด๋ธ ๋ด์ ์๋ ์นผ๋ผ๋ผ๋ฆฌ ์ฐ๊ฒฐํ๋ ์กฐ์ธ์ด ํ์ํ ๊ฒฝ์ฐ
- ์กฐ์ธ ๋์ ํ ์ด๋ธ์ด ์์
> WHERE ์ ์ ์ฌ์ฉํ SELF JOIN
- ํ ํ ์ด๋ธ์์ ๋ ๊ฐ์ ์นผ๋ผ์ ์ฐ๊ฒฐํ์ฌ EQUI JOIN
- FROM์ ์์ ํ๋์ ํ ์ด๋ธ์ ํ ์ด๋ธ ๋ณ๋ช ์ง์
select ๋ณ์นญ1.์นผ๋ผ๋ช
, ๋ณ์นญ2.์นผ๋ผ๋ช
from ํ
์ด๋ธ ๋ณ์นญ1, ํ
์ด๋ธ ๋ณ์นญ2
where ๋ณ์นญ1.์นผ๋ผ๋ช
= ๋ณ์นญ2.์นผ๋ผ๋ช
;
> JOIN ~ ON์ ์ฌ์ฉํ SELF JOIN
select ๋ณ์นญ1.์นผ๋ผ๋ช
, ๋ณ์นญ2.์นผ๋ผ๋ช
from ํ
์ด๋ธ ๋ณ์นญ1 join ํ
์ด๋ธ ๋ณ์นญ2
on ๋ณ์นญ1.์นผ๋ผ๋ช
= ๋ณ์นญ2.์นผ๋ผ๋ช
;
์ฐธ๊ณ ๋์ : ์ค๋ผํด ์ค์ฌ์ SQL๋ฐฐ์ํฐ, ์ฐ์ฉํ ์ธ ๊ณต์ , ์๋ฅ์ถํ์ฌ, 2007๋
'Ability ๐ฑ > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL-์ค๋ผํด] ์๋ธ์ฟผ๋ฆฌ(๋จ์ผํ, ๋ค์คํ, ์ํธ์ฐ๊ด, ์ค์นผ๋ผ, ์ธ๋ผ์ธ ๋ทฐ) (0) | 2022.06.19 |
---|---|
[SQL-์ค๋ผํด] SQL ํจ์ - ๋ฌธ์, ์ซ์, ๋ ์ง, ๋ณํ, ์ผ๋ฐ (0) | 2022.06.18 |
[SQL-์ค๋ผํด] ๊ทธ๋ฃน ํจ์ (0) | 2022.06.17 |
[SQL-์ค๋ผํด] ์กฐ๊ฑด ๊ฒ์ ๋ฐ ํ์ ์ ๋ ฌ (0) | 2022.06.16 |
[SQL-์ค๋ผํด] ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด (0) | 2022.04.19 |