join๊ณผ leftJoin์ ์ฌ๋ฌ ํ
์ด๋ธ์ ์ฐ๊ฒฐํ์ฌ ๊ด๊ณ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฉ์๋์
๋๋ค. ํ์
์์ ํ๊ฒ ํ
์ด๋ธ์ ์กฐ์ธํ๊ณ , ๋ณต์กํ ์กฐ์ธ ์กฐ๊ฑด์ ์ง์ํฉ๋๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
INNER JOIN
LEFT JOIN
INNER JOIN: ์์ชฝ ํ
์ด๋ธ ๋ชจ๋์ ๋งค์นญ๋๋ ๋ ์ฝ๋๋ง ๋ฐํ LEFT JOIN: ์ผ์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ๋ ์ฝ๋
๋ฐํ (์ค๋ฅธ์ชฝ์ null ๊ฐ๋ฅ)
ํ ์ด๋ธ ๋ณ์นญ (Alias)
๋ณ์นญ ์ฌ์ฉ
๊ฐ์ ํ ์ด๋ธ ์ฌ๋ฌ ๋ฒ ์กฐ์ธ
๋ณต์กํ ์กฐ์ธ ์กฐ๊ฑด
์ฝ๋ฐฑ ํจ์ ์ฌ์ฉ
์ฌ๋ฌ ์กฐ๊ฑด์ ์กฐํฉํ ์ ์์ต๋๋ค.OR ์กฐ๊ฑด
์กฐ๊ฑด๊ฐ๊ณผ ๋น๊ต
์ปฌ๋ผ๊ณผ ๋ฆฌํฐ๋ด ๊ฐ์ ๋น๊ตํ ๋๋on() ๋์ onVal()์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. on()์ ์ธ์๋ฅผ ์ปฌ๋ผ ์ฐธ์กฐ๋ก ์ฒ๋ฆฌํ๋ฏ๋ก, ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ธ๋ฉํ๋ ค๋ฉด onVal()์ด ํ์ํฉ๋๋ค.
๊ฐ ๋ฐ์ธ๋ฉ (onVal)
onVal์ ์กฐ์ธ ์กฐ๊ฑด์์ ๊ฐ์ ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ์ผ๋ก ์์ ํ๊ฒ ๋น๊ตํฉ๋๋ค. on์ด ๋ ์ปฌ๋ผ ๊ฐ ๋น๊ต์ ์ฌ์ฉ๋๋ ๋ฐ๋ฉด, onVal์ ์ปฌ๋ผ๊ณผ ๋ฆฌํฐ๋ด ๊ฐ์ ๋น๊ต์ ์ฌ์ฉ๋ฉ๋๋ค.
andOnVal / orOnVal
andOnVal์ onVal์ ๋ช
์์ ์ธ AND ๋ฒ์ ์ด๊ณ , orOnVal์ OR ์กฐ๊ฑด์ผ๋ก ๊ฐ์ ๋น๊ตํฉ๋๋ค.
on vs onVal:
on("col1", "col2")๋ ๋ ์ปฌ๋ผ์ ๋น๊ตํฉ๋๋ค. onVal("col", value)๋ ์ปฌ๋ผ๊ณผ ๊ฐ์
๋น๊ตํ๋ฉฐ, ๊ฐ์ SQL ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ธ๋ฉํฉ๋๋ค.์๋ธ์ฟผ๋ฆฌ ์กฐ์ธ
์๋ธ์ฟผ๋ฆฌ๋ฅผ ํ ์ด๋ธ์ฒ๋ผ ์กฐ์ธํ ์ ์์ต๋๋ค.์ฌ๋ฌ ํ ์ด๋ธ ์กฐ์ธ
์์ฐจ์ ์ผ๋ก ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ ์ ์์ต๋๋ค.์ค์ ์์
- ๊ฒ์๋ฌผ + ์์ฑ์
- ์ฃผ๋ฌธ + ์ฌ์ฉ์ + ์ํ
- ํต๊ณ ์ฟผ๋ฆฌ
- ์ ํ ์กฐ์ธ
- ์๋ธ์ฟผ๋ฆฌ ์กฐ์ธ
์กฐ์ธ ์กฐ๊ฑด ๊ทธ๋ฃนํ
๋ณต์กํ ์กฐ์ธ ์กฐ๊ฑด์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ ์ ์์ต๋๋ค.NULL ์ฒ๋ฆฌ (LEFT JOIN)
LEFT JOIN ๊ฒฐ๊ณผ๋ nullable ํ์ ์ผ๋ก ์๋ ์ถ๋ก ๋ฉ๋๋ค.์ฑ๋ฅ ์ต์ ํ
1. ํ์ํ ์ปฌ๋ผ๋ง ์ ํ
2. ์กฐ์ธ ์์
3. LEFT JOIN vs INNER JOIN
ํ์ ์์ ์ฑ
์กฐ์ธํ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ํ์ ์๋ ์์ฑ๊ณผ ๊ฒ์ฆ์ ์ง์ํฉ๋๋ค.์ฃผ์์ฌํญ
1. ๋ณ์นญ ํ์ (์๋ธ์ฟผ๋ฆฌ)
2. ์กฐ์ธ ์กฐ๊ฑด ํ ์ด๋ธ ํ์ธ
3. ์ค๋ณต ์ปฌ๋ผ๋ช
4. N+1 ๋ฌธ์
JOIN vs Loader
Puri๋ ๋ ๊ฐ์ง ๊ด๊ณ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.JOIN (1:1 ๊ด๊ณ)
Loader (1:N ๊ด๊ณ)
JOIN์ ํ์ด ๊ณฑํด์ง๋ฏ๋ก, 1:N ๊ด๊ณ์๋ Loader๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ค์ ๋จ๊ณ
where
์กฐ๊ฑด ํํฐ๋งํ๊ธฐ
select
์กฐํํ ํ๋ ์ ํํ๊ธฐ
order-by
๊ฒฐ๊ณผ ์ ๋ ฌํ๊ธฐ
Subset
์๋ธ์
์ผ๋ก ๊ด๊ณ ๋ฐ์ดํฐ ๋ก๋ฉ