์กฐ์ธ ๊ฐ์
INNER JOIN
์์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ์กด์ฌํ๋ ๋ฐ์ดํฐjoin()
LEFT JOIN
์ผ์ชฝ ํ
์ด๋ธ ๊ธฐ์ค, ์ค๋ฅธ์ชฝ์ OptionalleftJoin()
Self JOIN
๊ฐ์ ํ
์ด๋ธ์ ์กฐ์ธalias ์ฌ์ฉ
M:N JOIN
๋ค๋๋ค ๊ด๊ณ ์กฐ์ธ์ค๊ฐ ํ
์ด๋ธ ํ์ฉ
INNER JOIN
์์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ง ์กฐํํฉ๋๋ค.๊ธฐ๋ณธ JOIN
INNER JOIN ์ฌ์ฉ ์๊ธฐ:
- ๊ด๊ณ๊ฐ ํ์์ธ ๊ฒฝ์ฐ (NOT NULL ์ธ๋ ํค)
- ์์ชฝ์ ๋ฐ์ดํฐ๊ฐ ์์ด์ผ ํ๋ ๊ฒฝ์ฐ
- ์: ์ง์ โ ์ฌ์ฉ์ (๋ชจ๋ ์ง์์ ๋ฐ๋์ ์ฌ์ฉ์ ๊ณ์ ์ด ์์)
์ฌ๋ฌ ํ ์ด๋ธ JOIN
LEFT JOIN
์ผ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ , ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ์์ผ๋ฉด ํฌํจํฉ๋๋ค.๊ธฐ๋ณธ LEFT JOIN
LEFT JOIN ์ฌ์ฉ ์๊ธฐ:
- ๊ด๊ณ๊ฐ ์ ํ์ ์ธ ๊ฒฝ์ฐ (NULLABLE ์ธ๋ ํค)
- ์ผ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- ์: ์ง์ โ ๋ถ์ (์ผ๋ถ ์ง์์ ๋ถ์๊ฐ ์์ ์ ์์)
INNER JOIN vs LEFT JOIN ๋น๊ต
๋ณตํฉ LEFT JOIN
INNER + LEFT JOIN ํผํฉ
ํ์ ๊ด๊ณ๋ INNER JOIN, ์ ํ ๊ด๊ณ๋ LEFT JOIN์ ์ฌ์ฉํฉ๋๋ค.Self JOIN - ์๊ธฐ ์ฐธ์กฐ
๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ ๋๋ **๋ณ์นญ(alias)**์ ์ฌ์ฉํฉ๋๋ค.๋ถ์ ๊ณ์ธต๊ตฌ์กฐ ์์
| childId | childName | parentId | parentName |
|---|---|---|---|
| 1 | ๋ณธ๋ถ | null | null |
| 2 | ๊ฐ๋ฐํ | 1 | ๋ณธ๋ถ |
| 3 | ๋์์ธํ | 1 | ๋ณธ๋ถ |
| 4 | ๋ฐฑ์๋ํ | 2 | ๊ฐ๋ฐํ |
์ฌ์ฉ์ ์ถ์ฒ์ธ ์์
Many-to-Many ์กฐ์ธ
๋ค๋๋ค(M:N) ๊ด๊ณ๋ ์ค๊ฐ ํ ์ด๋ธ์ ํตํด ์กฐ์ธํฉ๋๋ค.ํ๋ก์ ํธ โ ์ง์ ์์
- ํ๋ก์ ํธ 1๊ฐ์ ์ง์ N๋ช โ N๊ฐ ํ
- ์ง์์ด ์๋ ํ๋ก์ ํธ โ 1๊ฐ ํ (employee ํ๋๋ null)
M:N ์ง์๋ณ๋ก ๊ทธ๋ฃนํ
์๋ธ์ฟผ๋ฆฌ ์กฐ์ธ
์๋ธ์ฟผ๋ฆฌ๋ฅผ ํ ์ด๋ธ์ฒ๋ผ ์กฐ์ธํ ์ ์์ต๋๋ค.๋ถ์๋ณ ํต๊ณ ์กฐ์ธ
์ต์ ๋ก๊ทธ์ธ ์กฐ์ธ
์กฐ์ธ + WHERE ์กฐ๊ฑด
์กฐ์ธ ์ ํํฐ๋ง
์กฐ์ธ ํ ์ง๊ณ
์ค์ ์์
์ฌ์ฉ์ ํ๋กํ ์กฐํ
ํ๋ก์ ํธ ์์ธ + ์ฐธ์ฌ์ ๋ชฉ๋ก
๋ถ์ ๊ณ์ธต๊ตฌ์กฐ ์กฐํ
ํ์ ์์ ์ฑ
Puri์ ์กฐ์ธ์ ํ์ ์์ ํฉ๋๋ค.LEFT JOIN๊ณผ ํ์
:
- LEFT JOIN๋ ํ
์ด๋ธ์ ์ปฌ๋ผ์
T | nullํ์ - INNER JOIN๋ ํ
์ด๋ธ์ ์ปฌ๋ผ์
Tํ์ - ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์๋์ผ๋ก null ์ฒดํฌ ๊ฐ์