MySQL ์กฐ์ธ ์ฝ๊ฒ ์ดํดํ๊ธฐ!
์ด ์์์ MySQL์์ ์ฌ๋ฌ ํ
์ด๋ธ์ ์ฐ๊ฒฐํด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฐฉ๋ฒ์ธ **์กฐ์ธ(join)**์ ๋ํด ์ฝ๊ณ ์์ธํ๊ฒ ์ค๋ช
ํฉ๋๋ค. ๋ด๋ถ ์กฐ์ธ๊ณผ ์ธ๋ถ ์กฐ์ธ์ ์ฐจ์ด, ๊ทธ๋ฆฌ๊ณ ์ค์ ์์๋ฅผ ํตํด ์กฐ์ธ์ ์ด๋ป๊ฒ ์ฐ๋์ง ์๋ ค์ค์.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
๋ง๋ฌด๋ฆฌ ์์ฝ
1. ์กฐ์ธ์ด๋? [00:00:19]
โข
์กฐ์ธ์ ์ฌ๋ฌ ํ
์ด๋ธ์ ์ฐ๊ฒฐํด์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์กฐํํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
โข
'์กฐ์ธ'์ ์์ด๋ก '์ฐธ์ฌํ๋ค'๋ผ๋ ๋ป์ฒ๋ผ, ์ฌ๋ฌ ํ
์ด๋ธ์ด ํจ๊ป ์ฐธ์ฌํด์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
โข
ํฌ๊ฒ **๋ด๋ถ ์กฐ์ธ(์ด๋ ์กฐ์ธ)**๊ณผ **์ธ๋ถ ์กฐ์ธ(์์ฐํฐ ์กฐ์ธ)**์ผ๋ก ๋๋๋๋ค.
2. ๋ด๋ถ ์กฐ์ธ(์ด๋ ์กฐ์ธ)๊ณผ ๋๋ฑ ์กฐ์ธ [00:08:36]
โข
๋ด๋ถ ์กฐ์ธ(์ด๋ ์กฐ์ธ): ๋ ํ
์ด๋ธ์์ ๊ณตํต ์กฐ๊ฑด(์: ๊ฐ์ ํค ๊ฐ)์ด ์ผ์นํ๋ ๋ฐ์ดํฐ๋ง ๋ณด์ฌ์ค๋๋ค.
โข
๋๋ฑ ์กฐ์ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฅด๋ฉฐ, ๋ณดํตย ONย ๋ค์ ์กฐ๊ฑด์ ์จ์ ์ฐ๊ฒฐํฉ๋๋ค.
โข
์: ์ฌ์ ํ
์ด๋ธ๊ณผ ๋ถ์ ํ
์ด๋ธ์์ ์ฌ์ ๋ฒํธ๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ง ์กฐํํ๊ธฐ!
โข
์
ํ ์กฐ์ธ(๊ฐ์ ํ
์ด๋ธ์ ๋ ๋ฒ ์กฐ์ธ)์ด๋ ์ธ๋ฏธ ์กฐ์ธ, ์ํฐ ์กฐ์ธ ๊ฐ์ ๋ณํ๋ ์์ง๋ง ๊ธฐ๋ณธ์ ์ด๋ ์กฐ์ธ์
๋๋ค.
3. ์ธ๋ถ ์กฐ์ธ ์ข
๋ฅ: ๋ ํํธ, ๋ผ์ดํธ, ํ ์์ฐํฐ ์กฐ์ธ [00:01:42], [00:26:02]
โข
๋ ํํธ ์์ฐํฐ ์กฐ์ธ(LEFT OUTER JOIN): ์ผ์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ์ผ์นํ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด NULL๋ก ํ์ํฉ๋๋ค.
โข
๋ผ์ดํธ ์์ฐํฐ ์กฐ์ธ(RIGHT OUTER JOIN): ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ์ผ์ชฝ ํ
์ด๋ธ์ ์ผ์นํ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด NULL๋ก ํ์ํฉ๋๋ค.
โข
ํ ์์ฐํฐ ์กฐ์ธ(FULL OUTER JOIN): ์์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ผ์นํ์ง ์๋ ๋ถ๋ถ์ NULL๋ก ํ์ํฉ๋๋ค.
โข
๋ง์ดSQL์ ํ ์์ฐํฐ ์กฐ์ธ์ ์ง์ ์ง์ํ์ง ์์, ๋ ํํธ ์กฐ์ธ๊ณผ ๋ผ์ดํธ ์กฐ์ธ์ ํฉ์น๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํฉ๋๋ค.
4. ์ค์ ํ
์ด๋ธ ์์์ ์กฐ์ธ ์ค์ต [00:13:41]
โข
์์๋กย ์ํ๋ก์ด์ฆ(์ฌ์),ย DPT(์ฌ์ ๋ถ์ ์ด๋ ฅ),ย ๋ํํธ๋จผํธ(๋ถ์)ย ํ
์ด๋ธ์ ์ฌ์ฉํฉ๋๋ค.
โข
๊ฐ ํ
์ด๋ธ ๊ตฌ์กฐ์ ์ปฌ๋ผ์ ์ดํด๋ณด๊ณ , ๊ณตํต ์ปฌ๋ผ(์ฌ์ ๋ฒํธ, ๋ถ์ ๋ฒํธ)์ ๊ธฐ์ค์ผ๋ก ์กฐ์ธ์ ํฉ๋๋ค.
โข
์ฌ์ ๋ฒํธ๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ผ๋ฆฌ, ๋ถ์ ๋ฒํธ๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ผ๋ฆฌ ์ฐ๊ฒฐํด ์กฐํํฉ๋๋ค.
5. ์ํ๋ก์ด์ฆ(์ฌ์), ๋ํํธ๋จผํธ(๋ถ์) ํ
์ด๋ธ ์กฐ์ธํ๊ธฐ [00:14:03]
โข
์ฌ์ ๋ฒํธ(EMP ๋๋ฒ)์ ๋ถ์ ๋ฒํธ(DPT ๋๋ฒ)๋ฅผ ๊ธฐ์ค์ผ๋ก ์กฐ์ธํฉ๋๋ค.
โข
์ธ ํ
์ด๋ธ์ ๋ชจ๋ ์กฐ์ธํ๋ฉด ์ฌ์ ์ด๋ฆ, ๋ถ์๋ช
๋ฑ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ํ ๋ฒ์ ์กฐํํ ์ ์์ต๋๋ค.
โข
SQL ๋ฌธ๋ฒ์ผ๋กย INNER JOINย ํค์๋๋ฅผ ์ฌ์ฉํด ๋ช
ํํ๊ฒ ์กฐ์ธ ์กฐ๊ฑด์ ์ง์ ํฉ๋๋ค.
6. ๋ ํํธ ์์ฐํฐ ์กฐ์ธ ์ค์ต: ๋ถ์ ์๋ ์ฌ์ ํฌํจ ์กฐํ [00:50:05]
โข
๋ ํํธ ์กฐ์ธ์ ์ผ์ชฝ ํ
์ด๋ธ(์ฌ์)์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๊ณ , ๋ถ์๊ฐ ์๋ ์ฌ์์ ๋ถ์๋ช
์ปฌ๋ผ์ด NULL๋ก ํ์๋ฉ๋๋ค.
โข
์๋ฅผ ๋ค์ด ๋ถ์ ๋ฒํธ๊ฐ ์๋ ์ฌ์์ด ์์ด๋ ๊ทธ ์ฌ์ ์ ๋ณด๋ ๋น ์ง์ง ์๊ณ ์กฐํ๋ฉ๋๋ค.
โข
์ค์ต์์๋ ๋ถ์ ๋ฒํธ๊ฐ NULL์ธ ์ฌ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ง๋ค์ด์ ํ์ธํฉ๋๋ค.
7. ๋ผ์ดํธ ์์ฐํฐ ์กฐ์ธ ์ค์ต: ์ฌ์ ์๋ ๋ถ์ ํฌํจ ์กฐํ [00:57:07]
โข
๋ผ์ดํธ ์กฐ์ธ์ ์ค๋ฅธ์ชฝ ํ
์ด๋ธ(๋ถ์)์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๊ณ , ์ฌ์์ด ์๋ ๋ถ์๋ ์ฌ์ ์ ๋ณด๊ฐ NULL๋ก ํ์๋ฉ๋๋ค.
โข
์๋ฅผ ๋ค์ด ๋ง์ผํ
ํ, ๊ฒฝ์ ํ ๋ฑ ์ฌ์์ด ์๋ ๋ถ์๋ ์กฐํ ๊ฒฐ๊ณผ์ ํฌํจ๋ฉ๋๋ค.
โข
๋ถ์์ ์ฌ์์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ํ์ธํ๊ธฐ ์ํด ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์กฐํํฉ๋๋ค.
8. ํ ์์ฐํฐ ์กฐ์ธ๊ณผ ๋ง์ดSQL์์์ ๊ตฌํ ๋ฐฉ๋ฒ [00:59:21]
โข
ํ ์์ฐํฐ ์กฐ์ธ์ ์ฌ์๊ณผ ๋ถ์ ๋ชจ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
โข
๋ง์ดSQL์ ์ง์ ์ง์ํ์ง ์์ผ๋ฏ๋ก,ย ๋ ํํธ ์์ฐํฐ ์กฐ์ธ๊ณผ ๋ผ์ดํธ ์์ฐํฐ ์กฐ์ธ์ย UNION์ผ๋ก ํฉ์ณ์ย ๊ตฌํํฉ๋๋ค.
โข
์ด๋ ๊ฒ ํ๋ฉด ์ฌ์๋ง ์๊ฑฐ๋ ๋ถ์๋ง ์๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ ์กฐํํ ์ ์์ต๋๋ค.
9. ์นดํ์์ ์กฐ์ธ(ํฌ๋ก์ค ์กฐ์ธ) ์ค๋ช
[00:39:08]
โข
์กฐ์ธ ์กฐ๊ฑด ์์ด ๋ ํ
์ด๋ธ์ ๋ชจ๋ ๊ณฑํด์ ์กฐํํ๋ ๋ฐฉ์์
๋๋ค.
โข
์๋ฅผ ๋ค์ด A ํ
์ด๋ธ์ 100๊ฑด, B ํ
์ด๋ธ์ 20๊ฑด์ด ์์ผ๋ฉด ๊ฒฐ๊ณผ๋ 2,000๊ฑด์ด ๋์ต๋๋ค.
โข
๋ณดํต์ ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ, ์กฐ์ธ ์กฐ๊ฑด์ด ์์ ๋ ์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค๊ณ ์ดํดํ๋ฉด ๋ฉ๋๋ค.
๋ง๋ฌด๋ฆฌ ์์ฝ
โข
์กฐ์ธ์ ์ฌ๋ฌ ํ
์ด๋ธ์ ์ฐ๊ฒฐํด ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์กฐํํ๋ ํต์ฌ SQL ๊ธฐ์ ์
๋๋ค.
โข
*๋ด๋ถ ์กฐ์ธ(์ด๋ ์กฐ์ธ)**์ ๊ณตํต ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ๋ณด์ฌ์ฃผ๊ณ ,
โข
*์ธ๋ถ ์กฐ์ธ(์์ฐํฐ ์กฐ์ธ)**์ ํ์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ฉฐ, ์ผ์นํ์ง ์๋ ์ชฝ์ NULL๋ก ํ์ํฉ๋๋ค.
โข
๋ง์ดSQL์์๋ ํ ์์ฐํฐ ์กฐ์ธ์ ์ง์ ์ง์ํ์ง ์์, ๋ ํํธ์ ๋ผ์ดํธ ์กฐ์ธ์ ํฉ์ณ์ ์ฌ์ฉํฉ๋๋ค.
โข
์ค์ ์ฌ์๊ณผ ๋ถ์ ํ
์ด๋ธ ์์๋ก ์กฐ์ธ ๋ฌธ๋ฒ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
โข
์กฐ์ธ์ ์ ํ์ฉํ๋ฉด ๋ณต์กํ ๋ฐ์ดํฐ๋ ํ ๋ฒ์ ์กฐํํ ์ ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฉ๋๊ฐ ํฌ๊ฒ ์ฌ๋ผ๊ฐ๋๋ค!
์์ ๋ณด์๋ฉด์ ์ง์ ์ค์ตํด ๋ณด๋ฉด ์ดํด๊ฐ ํจ์ฌ ์ฌ์์. ์กฐ์ธ, ์ด์ ์ด๋ ต์ง ์์ฃ ? 