JOIN => ํ
์ด๋ธ ๊ฐ์ ์ฐ๊ฒฐ
๋ํดํธ ๊ฐ : INNER JOIN
๊ฐ๋ค -> ๋ฑ๊ฐ์กฐ์ธ Equal Join
๊ฐ๋ค๊ฐ ์๋ ๋ค๋ฅธ -> ๋น๋ฑ๊ฐ์กฐ์ธ Non-Equal Join
INNER JOIN : ์กฐ์ธ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ ์ปฌ๋ผ์ด NULL์ธ ๊ฒฝ์ฐ, ํด๋น ํ์ด ์ฌ๋ผ์ง๋๋ค.
OUTER JOIN : ์กฐ์ธ ๊ธฐ์ค ์ปฌ๋ผ์ด ์์ด๋, ํด๋น ํ ์ ์ง
NULL๊น์ง ๋ค ํ์๋จ! -> ๋ํ
์ด๋ธ ๋ชจ๋ ํ์ด ๋ค๋จ๋๊ฑฐ์ง
1) 1๋ฒ ๋ฐฉ์
SELECT ๊ฐ์ ธ์ฌ ์ปฌ๋ผ๋ช
*
FROM ํ
์ด๋ธA ๋ณ๋ช
A
INNER JOIN ํ
์ด๋ธB ๋ณ๋ช
B
ON ๋ณ๋ช
A.์ปฌ๋ผ๋ช
= ๋ณ๋ช
B.์ปฌ๋ผ๋ช
; --๊ณตํต์ ์ธ ์ปฌ๋ผ
2) 2๋ฒ ๋ฐฉ์
SELECT ๊ฐ์ ธ์ฌ ์ปฌ๋ผ๋ช
*
FROM ํ
์ด๋ธA ๋ณ๋ช
A, ํ
์ด๋ธB ๋ณ๋ช
B
WHERE ๋ณ๋ช
A.์ปฌ๋ผ๋ช
= ๋ณ๋ช
B.์ปฌ๋ผ๋ช
; --๊ณตํต์ ์ธ ์ปฌ๋ผ
1) 1๋ฒ ๋ฐฉ์
SELECT ๊ฐ์ ธ์ฌ ์ปฌ๋ผ๋ช
*
FROM ํ
์ด๋ธA ๋ณ๋ช
A
LEFT OUTER JOIN ํ
์ด๋ธB ๋ณ๋ช
B
RIGHT OUTER JOIN ํ
์ด๋ธB ๋ณ๋ช
B
ON ๋ณ๋ช
A.์ปฌ๋ผ๋ช
= ๋ณ๋ช
B.์ปฌ๋ผ๋ช
; --๊ณตํต์ ์ธ ์ปฌ๋ผ
2) 2๋ฒ ๋ฐฉ์
SELECT ๊ฐ์ ธ์ฌ ์ปฌ๋ผ๋ช
*
FROM ํ
์ด๋ธA ๋ณ๋ช
A, ํ
์ด๋ธB ๋ณ๋ช
B
WHERE ๋ณ๋ช
A.์ปฌ๋ผ๋ช
= ๋ณ๋ช
B.์ปฌ๋ผ๋ช
(+); --LEFT OUTER JOIN (A์๋ค๊ฐ B๋ฅผ ์์ฐํฐ์กฐ์ธ)
WHERE ๋ณ๋ช
A.์ปฌ๋ผ๋ช
(+) = ๋ณ๋ช
B.์ปฌ๋ผ๋ช
; --RIGHT OUTER JOIN (B์๋ค๊ฐ A๋ฅผ ์์ฐํฐ์กฐ์ธ) -> ์ด๋ ๊ฒ ์ฐ๋๊ฑฐ๋ณด๋จ
WHERE ๋ณ๋ช
B.์ปฌ๋ผ๋ช
= ๋ณ๋ช
A.์ปฌ๋ผ๋ช
(+); --์ด๋ ๊ฒ ์ฐ๋๊ฒ ๋๋ซ๋ค!
--ํ์ํ
์ด๋ธ๊ณผ ๊ต์ํ
์ด๋ธ์ ๊ต์๋ฒํธ ๊ธฐ์ค์ผ๋ก joinํด์
--ํ๋ฒ ํ์์ด๋ฆ ๊ต์๋ฒํธ ๊ต์์ด๋ฆ์ ์ ํํด์ ์ถ๋ ฅํ์ธ์
==> ๋ฑ๊ฐ์กฐ์ธ..!
--1๋ฒ๋ฐฉ์
SELECT
s.studno ํ๋ฒ,
s.name ํ์์ด๋ฆ,
p.profno ๊ต์๋ฒํธ,
p.name ๊ต์์ด๋ฆ
FROM student s
INNER JOIN professor p
ON s.profno = p.profno; --๊ณตํต์ ์ธ ์ปฌ๋ผ
--<<<<< 2๋ฒ๋ฐฉ์ >>>>>>
SELECT
s.studno ํ๋ฒ,
s.name ํ์์ด๋ฆ,
p.profno ๊ต์๋ฒํธ,
p.name ๊ต์์ด๋ฆ
FROM student s , professor p
WHERE s.profno = p.profno; --๊ณตํต์ ์ธ ์ปฌ๋ผ
๐ป
--๋ช์ ์ผ๋ ๋ชํ์ ์ด๋ค!
--๊ฐ ์ ์๋ณ ํ์ ์ ํจ๊ป ํ์
--ํ๋ฒ ์ ์ ํ์
==> ๋น๋ฑ๊ฐ์กฐ์ธ..!
SELECT *
FROM score; --์ ์ํ
์ด๋ธ
SELECT *
FROM hakjum; --ํ์ ํ
์ด๋ธ
SELECT
s.studno,
s.total,
h.grade
FROM score s, hakjum h
WHERE s.total BETWEEN h.min_point AND h.max_point;
--์ ์๊ฐ ์ด ์ฌ์ด์ ๋ค์ด๊ฐ๋์ง
๐ป
--student, score, hakjum ํ
์ด๋ธ์ ํ์ฉํ์ฌ ๋ค์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ์ธ์.
--๊ฐ ํ์ ๋ณ๋ก ์ ์๊ฐ ๋ช์ ์ด๊ณ ๊ทธ ์ ์๊ฐ ์ด๋ค ํ์ ์ธ์ง๋ฅผ ํ์ธํ๊ณ ์ถ์ต๋๋ค.
--ํ๋ฒ ์ด๋ฆ ์ ์ ํ์ ์์ผ๋ก ์กฐํํ์ธ์.
SELECT
st.studno ํ๋ฒ,
st.name ์ด๋ฆ,
sc.total ์ ์,
h.grade ํ์
FROM student st, score sc, hakjum h
WHERE st.studno = sc.studno
AND sc.total BETWEEN h.min_point AND h.max_point
ORDER BY sc.total desc;
๐ป
INNER JOIN : ๊ต์งํฉ ๋ถ๋ถ๋ง!
OUTER JOIN -> LEFT : LEFT + ๊ต์งํฉ // WHERE RIGHT IS NULL ์ธ ๊ฒฝ์ฐ๋ LEFT๋ง!!(๊ต์งํฉ X)
-> RIGHT : RIGHT + ๊ต์งํฉ // WHERE LEFT IS NULL ์ธ ๊ฒฝ์ฐ๋ RIGHT๋ง!!(๊ต์งํฉ X)
LEFT OUTER JOIN: ์ผ์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ ์กฐ์ธ
RIGHT OUTER JOIN: ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ ์กฐ์ธ