MySQL ์๋ธ์ฟผ๋ฆฌ ์ฝ๊ฒ ์ดํดํ๊ธฐ! 
์ด๋ฒ ์์์ MySQL์์ ์์ฃผ ์ฐ์ด๋ย ์๋ธ์ฟผ๋ฆฌ(Subquery)ย ๊ฐ๋
๊ณผ ํ์ฉ๋ฒ์ ์ฝ๊ณ ์์ธํ๊ฒ ์ค๋ช
ํด ์ค๋๋ค. ์๋ธ์ฟผ๋ฆฌ๋ SQL๋ฌธ ์์ ๋ ๋ค๋ฅธ SELECT๋ฌธ์ด ๋ค์ด๊ฐ๋ ํํ๋ก, ๋ณต์กํ ๋ฐ์ดํฐ ์กฐํ๋ฅผ ๊น๋ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ค์.
๋ชฉ์ฐจ
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
์๋ธ์ฟผ๋ฆฌ๋? ๊ธฐ๋ณธ ๊ฐ๋
๊ณผ ๋ถ๋ฅ [00:00:14]
์๋ธ์ฟผ๋ฆฌ๋ SQL๋ฌธ ์์ ๋ค์ด๊ฐ๋ ๋ ๋ค๋ฅธ SELECT๋ฌธ์ด์์. ์ฝ๊ฒ ๋งํด, ํฐ ์ง๋ฌธ(๋ฉ์ธ ์ฟผ๋ฆฌ) ์์ ์์ ์ง๋ฌธ(์๋ธ์ฟผ๋ฆฌ)์ ๋ฃ์ด ๋ต์ ์ฐพ๋ ๊ฑฐ์ฃ .
โข
์คํ ๊ฒฐ๊ณผ์ ๋ฐ๋ฅธ ๋ถ๋ฅ: ๋จ์ผํ(๊ฒฐ๊ณผ๊ฐ ํ ์ค) vs ๋ค์คํ(๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ ์ค)
โข
์ฌ์ฉ ์์น์ ๋ฐ๋ฅธ ๋ถ๋ฅ: SELECT์ , FROM์ , WHERE์ ์ ๋ฐ๋ผ ์ด๋ฆ์ด ๋ฌ๋ผ์ ธ์.
๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ์ ๋ค์คํ ์๋ธ์ฟผ๋ฆฌ ์ฐจ์ด [00:01:11]
โข
๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ: ๊ฒฐ๊ณผ๊ฐ ํ ์ค ํ ๊ฐ ๊ฐ๋ง ๋์์, ๋น๊ต ์ฐ์ฐ์(=, <, > ๋ฑ)์ ํจ๊ป ์ฌ์ฉํด์.
โข
๋ค์คํ ์๋ธ์ฟผ๋ฆฌ: ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ ์ค ์ฌ๋ฌ ๊ฐ์ด ๋์์, IN, ANY, ALL ๊ฐ์ ํค์๋์ ํจ๊ป ์ฌ์ฉํด์.์๋ฅผ ๋ค์ด, โ๊ธ์ฌ๊ฐ 3000 ์ด์์ธ ์ง์๋ค์ ๋ถ์ ์์ด๋โ๋ฅผ ์ฌ๋ฌ ๊ฐ ์กฐํํ ๋ ๋ค์คํ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์จ์.
์๋ธ์ฟผ๋ฆฌ ์ฌ์ฉ ์์น์ ๋ฐ๋ฅธ ์ข
๋ฅ (์ค์นผ๋ผ, ์ธ๋ผ์ธ๋ทฐ, ์ผ๋ฐ ์๋ธ์ฟผ๋ฆฌ) [00:01:49]
โข
์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ: SELECT์ ์ ๋ค์ด๊ฐ์ ํ ๊ฐ ๊ฐ(์: ์ต๋ ๊ธ์ฌ)์ ๋ฐํํด์.
โข
์ธ๋ผ์ธ๋ทฐ: FROM์ ์ ๋ค์ด๊ฐ์ ํ๋์ ํ
์ด๋ธ์ฒ๋ผ ๋์ํ๋ ๊ฒฐ๊ณผ ์งํฉ์ ๋ง๋ค์ด์.
โข
์ผ๋ฐ ์๋ธ์ฟผ๋ฆฌ: WHERE์ ์ ๋ค์ด๊ฐ ์กฐ๊ฑด์ ๊ฑธ ๋ ์ฌ์ฉํด์.
IN, ANY, ALL, EXISTS ํค์๋ ํ์ฉ๋ฒ [00:02:15]
โข
IN: โ๊ฐ์ด ์ฌ๋ฌ ๊ฐ ์ค ํ๋์ ์ผ์นํ๋ฉด OKโ
โข
ANY (๋๋ SOME): โ๋น๊ต ๋์ ์ค ํ๋๋ผ๋ ์กฐ๊ฑด ๋ง์กฑํ๋ฉด OKโ
โข
ALL: โ๋น๊ต ๋์ ๋ชจ๋๊ฐ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ OKโ
โข
EXISTS: โ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์กด์ฌํ๋ฉด OKโ์๋ฅผ ๋ค์ด, ANY๋ โ์ต์ ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ง์โ์ ์ฐพ์ ๋ ์ฐ๊ณ , ALL์ โ๋ถ์ ๋ด ๋ชจ๋ ์ง์ ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ฌโ๋ฅผ ์ฐพ์ ๋ ์จ์.
์ค์ ์์ : ์ต๊ณ ๊ธ์ฌ ์ง์๊ณผ ๋ถ์ ์กฐํํ๊ธฐ [00:03:35]
โข
์ฌ์ ํ
์ด๋ธ์์ ๊ฐ์ฅ ๋์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ง์ ์ด๋ฆ๊ณผ ๋ถ์ ์ด๋ฆ์ ์กฐํํด์.
โข
MAX() ํจ์๋ก ์ต๊ณ ๊ธ์ฌ๋ฅผ ๊ตฌํ๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋จ์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ , ๋ฉ์ธ ์ฟผ๋ฆฌ์์ ๋น๊ตํด์.
โข
๋ถ์ ์์ด๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ์ ํ
์ด๋ธ๊ณผ ์กฐ์ธํด ๋ถ์ ์ด๋ฆ๋ ํจ๊ป ์ถ๋ ฅํฉ๋๋ค.
๋ค์คํ ์๋ธ์ฟผ๋ฆฌ ์์ ์ IN ํค์๋ ์ฌ์ฉ๋ฒ [00:06:33]
โข
๊ธ์ฌ๊ฐ 3000 ์ด์์ธ ์ง์๋ค์ด ์ํ ๋ถ์ ์์ด๋๋ฅผ ์๋ธ์ฟผ๋ฆฌ๋ก ์ฌ๋ฌ ๊ฐ ์กฐํํด์.
โข
IN ํค์๋๋ฅผ ์ฌ์ฉํด โ๋ถ์ ์์ด๋๊ฐ ์ฌ๋ฌ ๊ฐ ์ค ํ๋์ ํด๋นํ๋โ ๋ถ์ ์ ๋ณด๋ฅผ ์กฐํํฉ๋๋ค.
โข
์ด๋ ๊ฒ ํ๋ฉด ์ฌ๋ฌ ๋ถ์์ ์ํ ์ง์ ์ ๋ณด๋ฅผ ํ ๋ฒ์ ์กฐํํ ์ ์์ด์.
ANY์ ALL ํค์๋ ๋น๊ต โ โํ๋๋ผ๋ ๋ง์กฑโ vs โ๋ชจ๋ ๋ง์กฑโ [00:10:03]
โข
ANY: ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ค ํ๋๋ผ๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ๊ฒฐ๊ณผ์ ํฌํจ๋ฉ๋๋ค.
โข
ALL: ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ๋ชจ๋ ๊ฐ๊ณผ ๋น๊ตํด์ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํด์ผ ๊ฒฐ๊ณผ์ ํฌํจ๋ฉ๋๋ค.์) โ๋ถ์ ๋ด ๋ชจ๋ ์ง์ ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ฌโ๋ ALL, โ๋ถ์ ๋ด ์ต์ ๊ธ์ฌ๋ณด๋ค ๋์ ๊ธ์ฌโ๋ ANY๋ฅผ ์ฌ์ฉํด์.
EXISTS ํค์๋๋ก ์กฐ๊ฑด ๋ง์กฑํ๋ ๋ฐ์ดํฐ ์กฐํํ๊ธฐ [00:13:05]
โข
EXISTS๋ ์๋ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์กด์ฌํ๋์ง๋ง ํ์ธํด์.
โข
์๋ฅผ ๋ค์ด, โ๊ธ์ฌ๊ฐ 3000 ์ด์์ธ ์ง์์ด ์ํ ๋ถ์๋ง ์กฐํโํ ๋ ์ฌ์ฉํด์.
โข
์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด TRUE, ์์ผ๋ฉด FALSE๋ก ํ๋จํด ๋ฉ์ธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ๋ฐ์๋ฉ๋๋ค.
์๋ธ์ฟผ๋ฆฌ ์์น๋ณ ์์ (์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ, ์ธ๋ผ์ธ๋ทฐ, WHERE์ ์๋ธ์ฟผ๋ฆฌ) [00:15:20]
โข
์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ: SELECT์ ์์ ์ต๋ ๊ธ์ฌ ๊ฐ์ ๋ฐ๋ก ์กฐํ
โข
์ธ๋ผ์ธ๋ทฐ: FROM์ ์์ ๊ธ์ฌ๊ฐ 3000 ์ด์์ธ ์ง์๋ค๋ง ๋ชจ์๋๊ณ ์กฐํ
โข
WHERE์ ์๋ธ์ฟผ๋ฆฌ: ์กฐ๊ฑด์ผ๋ก ๊ธ์ฌ ๋น๊ต, ๋ถ์๋ณ ์ต๋ ๊ธ์ฌ ๊ฐ์ง ์ง์ ์กฐํ ๋ฑ
์ค์ต: ์ํ๋ก์ด์ฆ ํ
์ด๋ธ ํ์ฉ ์๋ธ์ฟผ๋ฆฌ ์์ฑ [00:18:07]
โข
์ค์ ์ํ๋ก์ด์ฆ(์ฌ์) ํ
์ด๋ธ์ ์ฌ์ฉํด ๋จ์ผํ, ๋ค์คํ ์๋ธ์ฟผ๋ฆฌ ์ค์ต
โข
์) ๊ฐ์ฅ ๋์ ๊ธ์ฌ๋ฅผ ๋ฐ๋ ์ง์ ์กฐํ, ํน์ ๋ถ์์ ์ํ ์ง์ ์กฐํ ๋ฑ
โข
์๋ธ์ฟผ๋ฆฌ ์์ฑ๋ฒ๊ณผ ๊ฒฐ๊ณผ ํ์ธ ๊ณผ์ ์ ๋ณด์ฌ์ค๋๋ค.
๋ง๋ฌด๋ฆฌ ๋ฐ ์์ฝ [01:07:33]
โข
์๋ธ์ฟผ๋ฆฌ๋ SQL ์์ ๋ ๋ค๋ฅธ SELECT๋ฌธ์ ๋ฃ์ด ๋ณต์กํ ์กฐ๊ฑด์ ์ฝ๊ฒ ์ฒ๋ฆฌํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค.
โข
๋จ์ผํ, ๋ค์คํ ์๋ธ์ฟผ๋ฆฌ์ ์์น๋ณ ์๋ธ์ฟผ๋ฆฌ(์ค์นผ๋ผ, ์ธ๋ผ์ธ๋ทฐ, ์ผ๋ฐ ์๋ธ์ฟผ๋ฆฌ)๋ฅผ ๊ตฌ๋ถํด ์ฌ์ฉํ์ธ์.
โข
IN, ANY, ALL, EXISTS ํค์๋๋ฅผ ์ํฉ์ ๋ง๊ฒ ํ์ฉํ๋ฉด ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ ์กฐํํ ์ ์์ด์.
โข
์์์์ ๋ค์ํ ์์ ์ ์ค์ต์ ํตํด ์๋ธ์ฟผ๋ฆฌ ๊ฐ๋
์ ํ์คํ ์ตํ ์ ์์ต๋๋ค.
์๋ธ์ฟผ๋ฆฌ๋ SQL์ ๋ง๋ฒ ๊ฐ์ ๊ธฐ๋ฅ์ด์์! ๋ง์น ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ์ชผ๊ฐ์ ํด๊ฒฐํ๋ ๊ฒ์ฒ๋ผ, ๋ณต์กํ ๋ฐ์ดํฐ๋ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ต๋๋ค. ์์๊ณผ ํจ๊ป ์ฐจ๊ทผ์ฐจ๊ทผ ์ฐ์ตํด ๋ณด์ธ์! 