๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/Tech Basics

15์ผ์ฐจ. IT ๊ฐœ๋… ์ •๋ฆฌ

by GreenJin_S2 2025. 10. 29.

 

 

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ–‰ ๋ฐ ์—ด๋กœ ๊ตฌ์„ฑ๋˜๋Š” ํ…Œ์ด๋ธ”๋กœ ์‹œ๊ฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ €์žฅ๋˜๋Š”๋ฐ, ์—ด์€ ๋ฐ์ดํ„ฐ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๊ณ  ํ–‰์€ ๋ฐ์ดํ„ฐ์˜ ๋Œ€์ƒ ์—”ํ„ฐํ‹ฐ ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ƒํ˜ธ ์ž‘์šฉ์„ ์œ„ํ•ด ๊ตฌ์กฐ์  ์ฟผ๋ฆฌ ์–ธ์–ด(SQL)๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ด๋ ‡๊ฒŒ ๋ช…๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๊ด€๊ณ„๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ œํ’ˆ ํ…Œ์ด๋ธ”์—๋Š” ์ œํ’ˆ ์ด๋ฆ„, ์œ ํ˜•, ๋น„์šฉ ๋“ฑ๊ณผ ๊ฐ™์€ ์—ด์ด ์žˆ๊ณ  ํ–‰์—๋Š” ๊ฐœ๋ณ„ ์ œํ’ˆ์— ๋Œ€ํ•œ ๊ฐ’์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ ํ…Œ์ด๋ธ”์—๋Š” ๊ณ ๊ฐ ์ด๋ฆ„ ๋ฐ ์—ฐ๋ฝ์ฒ˜ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์—ด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ๊ฐ์ด ๊ตฌ๋งคํ•œ ์ œํ’ˆ๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ์„ธ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ตฌํ˜„ ๋ฐ ์ž‘์—…์ด ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ง๊ด€์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ์‚ฐ์—…์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž˜ ์ •์˜๋œ ์Šคํ‚ค๋งˆ ๋ฐ ๊ด€๊ณ„ํ˜• ํ…Œ์ด๋ธ”์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ฝ ์กฐ๊ฑด์ด ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ์— ๊ทœ์น™์„ ์ ์šฉํ•˜๋ฏ€๋กœ ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ฒฉ๋ฆฌ์„ฑ, ๋‚ด๊ตฌ์„ฑ(ACID)์˜ ๋„ค ๊ฐ€์ง€ ์†์„ฑ ์„ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ์›์ž์„ฑ์€ ์ž‘์—… ์‹œํ€€์Šค(ํŠธ๋žœ์žญ์…˜)์˜ ๋ชจ๋“  ๋ถ€๋ถ„์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ „ํ˜€ ์™„๋ฃŒ๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๊ด€์„ฑ์€ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•œ ์œ ํšจํ•œ ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ์œ ํšจํ•œ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฉ๋ฆฌ์„ฑ์€ ํŠธ๋žœ์žญ์…˜์ด ์„œ๋กœ ๊ฐ„์„ญํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ด๊ตฌ์„ฑ์€ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๋ฉด ์‹œ์Šคํ…œ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ˆœ์ฐจ์  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋กค๋ฐฑ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ๊ทœ๋ชจ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ธ๋ฑ์‹ฑ ๋ฐ ์ตœ์ ํ™” ๊ธฐ์ˆ ์„ ์ œ๊ณตํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋”๋ผ๋„ ๋น ๋ฅธ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ, ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ฐ ์žฅ์•  ์กฐ์น˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ€๋™ ์‹œ๊ฐ„์„ ์œ ์ง€ํ•˜๊ณ  ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์šด์˜ ์ค‘๋‹จ์œผ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ํŽธ์˜์„ฑ 

SQL์€ ์ตœ์†Œํ•œ์˜ ๋ณ€๊ฒฝ์œผ๋กœ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ํ™”๋œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ SQL ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ ๊ฐ„์— ๊ฐ„ํŽธํ•˜๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์ธํ…”๋ฆฌ์ „์Šค(BI) ํ”Œ๋žซํผ, ๋ถ„์„ ์†Œํ”„ํŠธ์›จ์–ด, ๋ณด๊ณ  ๋„๊ตฌ๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋„๊ตฌ์™€๋„ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ํ™œ๋ฐœํ•œ ๋Œ€๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฆฌ์†Œ์Šค, ๋„๊ตฌ ๋ฐ ์ง€์›์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋‚˜์š”?

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ธฐ๋ณธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋””์Šคํฌ์˜ ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด MySQL์€ InnoDB ๋ฐ MyISAM์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ฉ˜ํƒˆ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ถ”์ƒํ™”ํ•˜๋ฏ€๋กœ ๋ฌผ๋ฆฌ์  ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š” ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์„ ํƒ์€ ์„ฑ๋Šฅ, ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋ฐ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ

์Šคํ‚ค๋งˆ๋Š” ํ…Œ์ด๋ธ”, ํ…Œ์ด๋ธ” ๊ด€๊ณ„, ์ œ์•ฝ ์กฐ๊ฑด์„ ๋น„๋กฏํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์€ ํ–‰(๋ ˆ์ฝ”๋“œ)๊ณผ ์—ด(ํ•„๋“œ)๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์—ด์€ ํŠน์ • ๋ฐ์ดํ„ฐ ์œ ํ˜•(์˜ˆ: ์ •์ˆ˜, ํ…์ŠคํŠธ, ๋‚ ์งœ)์„ ๊ฐ€์ง€๋ฉฐ ํŠน์ • ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ–‰์€ ๋‹จ์ผ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

SQL ์–ธ์–ด

SQL์€ ๋ชจ๋“  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์  ์ฟผ๋ฆฌ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์„ ํƒ, ์‚ฝ์ž…, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ์™€ ๊ฐ™์€ ๋ช…๋ น์€ ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์ •์˜์™€ ๊ฐ™์€ ๋ช…๋ น์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐํƒ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜

์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋‹ค์–‘ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ธ๋ฑ์Šค๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŠน์ˆ˜ ์กฐํšŒ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ์—ด ๋˜๋Š” ์—ด ์„ธํŠธ์— ์ƒ์„ฑ๋˜๋ฏ€๋กœ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰์„ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 


 

 

์Šคํ‚ค๋งˆ, ์ธ์Šคํ„ด์Šค

[Database] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šฉ์–ด - ๋ฆด๋ ˆ์ด์…˜, ์–ดํŠธ๋ฆฌ๋ทฐํŠธ, ํŠœํ”Œ, ๋„๋ฉ”์ธ, ์ฐจ์ˆ˜, ์นด๋””๋„๋ฆฌํ‹ฐ, ์Šคํ‚ค๋งˆ-์•Œ๋ ค์ค˜

<!--br {mso-data-placement:same-cell;}-->

์šฉ์–ด (์˜๋ฌธ)ํ•œ๊ธ€ ๋ช…์นญ์ •์˜์˜ˆ์‹œ (ํ•™์ƒ ํ…Œ์ด๋ธ”)
Relation ๋ฆด๋ ˆ์ด์…˜ - ํ…Œ์ด๋ธ”(ํ‘œ) ์ž์ฒด๋ฅผ ์˜๋ฏธ - ์ˆ˜ํ•™์  ์ง‘ํ•ฉ๋ก ์˜ '๊ด€๊ณ„(relation)'์—์„œ ์œ ๋ž˜ ํ•™์ƒ ํ…Œ์ด๋ธ” ์ „์ฒด
Attribute ์–ดํŠธ๋ฆฌ๋ทฐํŠธ - ๋ฆด๋ ˆ์ด์…˜์˜ ์—ด(์ปฌ๋Ÿผ) - ๊ฐ ์—ด์ด ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ์˜ ์†์„ฑ ํ•™๋ฒˆ, ์ด๋ฆ„, ํ•™๊ณผ
Tuple ํŠœํ”Œ - ๋ฆด๋ ˆ์ด์…˜์˜ ํ–‰(๋ ˆ์ฝ”๋“œ) - ํ•˜๋‚˜์˜ ์—”ํ‹ฐํ‹ฐ ์ธ์Šคํ„ด์Šค (2023001, ๊น€์ฒ ์ˆ˜, ์ปด๊ณต)
Domain ๋„๋ฉ”์ธ - ๊ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ์ง‘ํ•ฉ(ํ—ˆ์šฉ ๋ฒ”์œ„) - ์ž๋ฃŒํ˜• + ์ œ์•ฝ์กฐ๊ฑด ํ•™๋ฒˆ: 8์ž๋ฆฌ ์ˆซ์ž ๋ฌธ์ž์—ด ์ด๋ฆ„: 20์ž ์ด๋‚ด ํ•œ๊ธ€
Degree ์ฐจ์ˆ˜ - ๋ฆด๋ ˆ์ด์…˜์— ํฌํ•จ๋œ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ(์—ด)์˜ ๊ฐœ์ˆ˜ 3 (ํ•™๋ฒˆ, ์ด๋ฆ„, ํ•™๊ณผ)
Cardinality ์นด๋””๋„๋ฆฌํ‹ฐ - ๋ฆด๋ ˆ์ด์…˜์— ํฌํ•จ๋œ ํŠœํ”Œ(ํ–‰)์˜ ๊ฐœ์ˆ˜ 150 (ํ•™์ƒ 150๋ช…)
Schema ์Šคํ‚ค๋งˆ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ(ํ…Œ์ด๋ธ” ์ •์˜, ์ œ์•ฝ์กฐ๊ฑด ๋“ฑ)๋ฅผ ๊ธฐ์ˆ ํ•œ ์„ค๊ณ„๋„ ```CREATE:disable-run

ํ•œ ์ค„ ์š”์•ฝ

  • ๋ฆด๋ ˆ์ด์…˜ = ํ…Œ์ด๋ธ”
  • ์–ดํŠธ๋ฆฌ๋ทฐํŠธ = ์—ด
  • ํŠœํ”Œ = ํ–‰
  • ๋„๋ฉ”์ธ = ์—ด์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„
  • ์ฐจ์ˆ˜ = ์—ด ๊ฐœ์ˆ˜
  • ์นด๋””๋„๋ฆฌํ‹ฐ = ํ–‰ ๊ฐœ์ˆ˜
  • ์Šคํ‚ค๋งˆ = ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ์ •์˜
 

 
 

2๏ธโƒฃ ์„œ๋ธŒ์ฟผ๋ฆฌ ์ข…๋ฅ˜

  1. ๋‹จ์ผ๊ฐ’ ์„œ๋ธŒ์ฟผ๋ฆฌ(Scalar Subquery)
    • ๊ฒฐ๊ณผ๊ฐ€ ํ•œ ํ–‰, ํ•œ ์—ด
    • ์˜ˆ: = (SELECT ...)
  2. ๋‹ค์ค‘๊ฐ’ ์„œ๋ธŒ์ฟผ๋ฆฌ(Multi-row Subquery)
    • ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ ํ–‰
    • ์˜ˆ: IN (SELECT ...)
  3. ๋‹ค์ค‘์—ด ์„œ๋ธŒ์ฟผ๋ฆฌ(Multi-column Subquery)
    • ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ ์—ด
    • ์˜ˆ: (col1, col2) IN (SELECT col1, col2 FROM ...)

 

โ‘  WHERE์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ

  •   ์กฐ๊ฑด์œผ๋กœ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉ
  •   ๋‹จ์ผ๊ฐ’(scalar) ๋˜๋Š” ๋‹ค์ค‘๊ฐ’(multi-row) ๋ชจ๋‘ ๊ฐ€๋Šฅ

์˜ˆ์‹œ:

 
-- Scalar Subquery SELECT player_name FROM player WHERE team_id = (SELECT team_id FROM team WHERE team_name = '๋“œ๋ž˜๊ณค์ฆˆ'); -- Multi-row Subquery SELECT player_name FROM player WHERE team_id IN (SELECT team_id FROM team WHERE city = '์„œ์šธ');

โ‘ก FROM์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ (Inline View / Derived Table)

  •   ์ž„์‹œ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉ
  •   SELECT์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์กฐํšŒ ๊ฐ€๋Šฅ

์˜ˆ์‹œ:

 
SELECT team_id, avg_height FROM (SELECT team_id, AVG(height) AS avg_height FROM player GROUP BY team_id) AS sub WHERE avg_height > 175;

โ‘ข SELECT์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ

  •   ์ปฌ๋Ÿผ ๊ฐ’์œผ๋กœ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ
  •   ๋ณดํ†ต ๋‹จ์ผ๊ฐ’(scalar) ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ

์˜ˆ์‹œ:

 
SELECT player_name, (SELECT team_name FROM team WHERE team.team_id = player.team_id) AS team_name FROM player;

โ‘ฃ HAVING์ ˆ ์„œ๋ธŒ์ฟผ๋ฆฌ

  •   ์ง‘๊ณ„ ์กฐ๊ฑด์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

SELECT team_id, COUNT(*) AS player_count
FROM player
GROUP BY team_id
HAVING COUNT(*) > (SELECT AVG(count) 
                   FROM (SELECT COUNT(*) AS count 
                         FROM player 
                         GROUP BY team_id) AS sub);

 

 

 


์ฃผ์š” SQL ํ‚ค์›Œ๋“œ ์ •๋ฆฌํ‘œ

ํ‚ค์›Œ๋“œ ์˜๋ฏธ ์˜ˆ์‹œ
SELECT ๋ฐ์ดํ„ฐ ์กฐํšŒ SELECT name
FROM ํ…Œ์ด๋ธ” ์ง€์ • FROM player
WHERE ์กฐ๊ฑด ํ•„ํ„ฐ WHERE team_id = 'K02'
JOIN ... ON ํ…Œ์ด๋ธ” ์—ฐ๊ฒฐ JOIN team ON ...
AND / OR ์กฐ๊ฑด ๊ฒฐํ•ฉ AND height > 170
IN (...) ์—ฌ๋Ÿฌ ๊ฐ’ ํฌํ•จ IN ('K02', 'K10')
BETWEEN a AND b ๋ฒ”์œ„ ์กฐ๊ฑด BETWEEN 170 AND 180
LIKE '๊ณ %' ํŒจํ„ด ๋งค์นญ ์„ฑ์ด ๊ณ ์”จ
IS NULL ๊ฐ’์ด ์—†์Œ position IS NULL
COALESCE(a, b) NULL์ด๋ฉด b ๋ฐ˜ํ™˜ COALESCE(height, 0)
`   `
::TEXT ํ˜•๋ณ€ํ™˜ (์ˆซ์ž→๋ฌธ์ž) 175::TEXT
CASE ... END ์กฐ๊ฑด๋ฌธ CASE WHEN ... THEN ...
ROUND(x, 2) ์†Œ์ˆ˜์  2์ž๋ฆฌ ROUND(22.222, 2)
ORDER BY ์ •๋ ฌ ORDER BY height DESC
DESC ๋‚ด๋ฆผ์ฐจ์ˆœ ํฐ → ์ž‘๊ฒŒ
ASC ์˜ค๋ฆ„์ฐจ์ˆœ ์ž‘ → ํฌ๊ฒŒ (๊ธฐ๋ณธ)
NULLS LAST NULL์€ ๋งจ ๋’ค