๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์กฐ์ธ(Join)์ด๋
๋ ์ด์์ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ฒฐ๊ณผ ํ๋ฉด์ผ๋ก ๊ฒฐํฉํด์ ์กฐํํ๋ ๊ฒ์ ๋งํด์! เผผ ใค โ_โ เผฝใค
SQLD ์ํ์์๋ ๊ฐ ์กฐ์ธ์ ํน์ง๊ณผ ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ๋์ค๋์ง ๋น๊ตํ๋ ๋ฌธ์ ๊ฐ ๋ฌด์กฐ๊ฑด ์ถ์ ๋๋,
์๋ 4๊ฐ์ง ํต์ฌ ์กฐ์ธ์ ๊ผญ ๋ง์คํฐํ์ ์ผ ํด์! ๐
1. ๋ด๋ถ ์กฐ์ธ (INNER JOIN)
- ๊ฐ๋ : ๋ ํ ์ด๋ธ์์ ์กฐ์ธ ์กฐ๊ฑด์ด ์ผ์นํ๋ ๊ณตํต๋ ๋ฐ์ดํฐ๋ง ๊ฒฐํฉํ์ฌ ์ถ์ถํฉ๋๋ค.
- ํน์ง: ๊ต์งํฉ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ํธํด์. ํ์ชฝ ํ ์ด๋ธ์๋ง ์กด์ฌํ๊ณ ๋ค๋ฅธ ์ชฝ์๋ ์๋ ๋ฐ์ดํฐ๋ ๊ฒฐ๊ณผ์์ ์์ ํ ์ ์ธ๋ฉ๋๋ค.
2. ์ธ๋ถ ์กฐ์ธ (LEFT / RIGHT / FULL OUTER JOIN)
- ๊ฐ๋ : ์กฐ๊ฑด์ด ๋ง์ง ์์๋ ๊ธฐ์ค์ด ๋๋ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ ์ถ์ถํฉ๋๋ค. ๋ฐ๋์ชฝ ํ ์ด๋ธ์ ๋งค์นญ๋๋ ๊ฐ์ด ์์ผ๋ฉด NULL๋ก ์ฑ์์ง๋๋ค.
- ์ข
๋ฅ:
- LEFT OUTER JOIN: ์ผ์ชฝ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ ๋ฌด์กฐ๊ฑด ๋ค ๋์ค๊ณ , ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋งค์นญ๋๋ ๊ฒ๋ง ๊ฐ์ ธ์ต๋๋ค. (๊ฐ์ฅ ๋ง์ด ์ฐ์ฌ์!)
- RIGHT OUTER JOIN: ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ๋ค ๊ฐ์ ธ์ต๋๋ค.
- FULL OUTER JOIN: ์์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฉ์งํฉ ํํ๋ก ๊ฐ์ ธ์ต๋๋ค.
3. ์ํธ ์กฐ์ธ (CROSS JOIN / CARTESIAN PRODUCT)
- ๊ฐ๋ : ์กฐ๊ฑด ์์ด ๋ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ์ํธ ๊ฐ์ ๋ฌด์กฐ๊ฑด ๊ณฑํ๋(์กฐํฉํ๋) ๋ฐฉ์์ ๋๋ค.
- ํน์ง: A ํ ์ด๋ธ ํ์ด 5๊ฐ, B ํ ์ด๋ธ ํ์ด 4๊ฐ๋ผ๋ฉด ๊ฒฐ๊ณผ๋ ์ด $5 \times 4 = 20$๊ฐ๊ฐ ๋์ต๋๋ค. ๋๋์ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ๋ ์ธ์๋ ์ฑ๋ฅ์ ๋ถํ๋ฅผ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ค๋ฌด์์๋ ์ฃผ์ํด์ ์จ์ผ ํด์.
4. ์ ํ ์กฐ์ธ (SELF JOIN)
- ๊ฐ๋ : ๋ณ๋์ ํ ์ด๋ธ์ด ์๋๋ผ ์๊ธฐ ์์ ํ ์ด๋ธ๊ณผ ์กฐ์ธํ๋ ๋ฐฉ์์ ๋๋ค.
- ํน์ง: ํ ํ ์ด๋ธ ๋ด์์ '์ฌ์'๊ณผ '๋ด๋น ์ฌ์(๋งค๋์ )'์ ๊ด๊ณ์ฒ๋ผ, ๊ณ์ธตํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ํ๋์ ํ ์ด๋ธ ์์์ ์ฐ๊ฒฐํด์ ์กฐํํ ๋ ํ์ฉํฉ๋๋ค.
๐ก SQLD ํต์ฌ ์ฒดํฌํฌ์ธํธ!
์กฐ์ธ์ ํ ๋๋ ๋ ํ ์ด๋ธ์ ์ฐ๊ฒฐํด ์ค ๊ณตํต ์ปฌ๋ผ(์: ํ์ ํ ์ด๋ธ์ ํ์ID์ ์ฃผ๋ฌธ ํ ์ด๋ธ์ ํ์ID)์ ON ์ ์ ์ ํํ ๋ช ์ํด ์ฃผ์ด์ผ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฌถ์ ๋๋ค.
'4. Backend & DB ๐๏ธ > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SQLD] ์ ๊ทํ์ด๋? (0) | 2026.05.31 |
|---|---|
| [๋ฐ์ดํฐ ๋ถ์] Python, Pandas Library์ mode() ํจ์๋ฅผ ์ด์ฉํด์ ์ต๋น๊ฐ ๊ตฌํ๊ธฐ (0) | 2025.10.12 |
| โ 2025 ๋ง๋ฐ์ง SQLD ๊ณต๋ถ๋ฒ ์ด ์ ๋ฆฌ โ (1) | 2025.09.28 |
| ERgrin FK ์ฝ์ ๋ฒ (0) | 2025.05.27 |
| MySQL Shell ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ (0) | 2025.05.26 |