Search

MySQL ์„œ๋ธŒ์ฟผ๋ฆฌ

MySQL ์„œ๋ธŒ์ฟผ๋ฆฌ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ!

์ด๋ฒˆ ์˜์ƒ์€ MySQL์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š”ย ์„œ๋ธŒ์ฟผ๋ฆฌ(Subquery)ย ๊ฐœ๋…๊ณผ ํ™œ์šฉ๋ฒ•์„ ์‰ฝ๊ณ  ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด ์ค๋‹ˆ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” SQL๋ฌธ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ SELECT๋ฌธ์ด ๋“ค์–ด๊ฐ€๋Š” ํ˜•ํƒœ๋กœ, ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค˜์š”.

๋ชฉ์ฐจ

1.
์„œ๋ธŒ์ฟผ๋ฆฌ๋ž€? ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๋ถ„๋ฅ˜ [00:00:14]
2.
๋‹จ์ผํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ ์ฐจ์ด [00:01:11]
3.
์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ ์œ„์น˜์— ๋”ฐ๋ฅธ ์ข…๋ฅ˜ (์Šค์นผ๋ผ, ์ธ๋ผ์ธ๋ทฐ, ์ผ๋ฐ˜ ์„œ๋ธŒ์ฟผ๋ฆฌ) [00:01:49]
4.
IN, ANY, ALL, EXISTS ํ‚ค์›Œ๋“œ ํ™œ์šฉ๋ฒ• [00:02:15]
5.
์‹ค์ „ ์˜ˆ์ œ: ์ตœ๊ณ  ๊ธ‰์—ฌ ์ง์›๊ณผ ๋ถ€์„œ ์กฐํšŒํ•˜๊ธฐ [00:03:35]
6.
๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ ์˜ˆ์ œ์™€ IN ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ๋ฒ• [00:06:33]
7.
ANY์™€ ALL ํ‚ค์›Œ๋“œ ๋น„๊ต โ€“ โ€œํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑโ€ vs โ€œ๋ชจ๋‘ ๋งŒ์กฑโ€ [00:10:03]
8.
EXISTS ํ‚ค์›Œ๋“œ๋กœ ์กฐ๊ฑด ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ [00:13:05]
9.
์„œ๋ธŒ์ฟผ๋ฆฌ ์œ„์น˜๋ณ„ ์˜ˆ์ œ (์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ, ์ธ๋ผ์ธ๋ทฐ, WHERE์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ) [00:15:20]
10.
์‹ค์Šต: ์ž„ํ”Œ๋กœ์ด์ฆˆ ํ…Œ์ด๋ธ” ํ™œ์šฉ ์„œ๋ธŒ์ฟผ๋ฆฌ ์ž‘์„ฑ [00:18:07]
11.
๋งˆ๋ฌด๋ฆฌ ๋ฐ ์š”์•ฝ [01:07:33]

์„œ๋ธŒ์ฟผ๋ฆฌ๋ž€? ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๋ถ„๋ฅ˜ [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์˜ ๋งˆ๋ฒ• ๊ฐ™์€ ๊ธฐ๋Šฅ์ด์—์š”! ๋งˆ์น˜ ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ์ชผ๊ฐœ์„œ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ์˜์ƒ๊ณผ ํ•จ๊ป˜ ์ฐจ๊ทผ์ฐจ๊ทผ ์—ฐ์Šตํ•ด ๋ณด์„ธ์š”!