๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ“– ๋Ÿฌ๋‹ SQL

Chanho Lee
๋‹ค์–‘ํ•œ ๋ถ„์•ผ๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” ํ•™์ƒ
์ •๋ณด

ํ•œ๋น›๋ฏธ๋””์–ด <๋‚˜๋Š” ๋ฆฌ๋ทฐ์–ด๋‹ค> ํ™œ๋™์„ ์œ„ํ•ด์„œ ์ฑ…์„ ์ œ๊ณต๋ฐ›์•„ ์ž‘์„ฑ๋œ ์„œํ‰์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฆฌ๋ทฐ์–ด๋‹ค 2021

Book Infoโ€‹

ํŒ

์ฑ… ์ด๋ฏธ์ง€๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ต๋ณด๋ฌธ๊ณ  ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค!

์ฑ…

  • ์ œ๋ชฉ: ๋Ÿฌ๋‹ SQL
  • ์ €์ž: Alan Beaulieu
  • ์—ญ์ž: ๋ฅ˜์ˆ˜๋ฏธ, ์†กํฌ์ •
  • ์ถœํŒ์‚ฌ: ํ•œ๋น›๋ฏธ๋””์–ด
  • ์ถœ๊ฐ„: 2021-03-30

๐ŸŽฌ Introโ€‹

๋‚˜๋Š” ์ปดํ“จํ„ฐ ๊ณตํ•™ ์ „๊ณต์ƒ์ด์ง€๋งŒ ์•„์ง๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณต๋ถ€๋ฅผ ์ œ๋Œ€๋กœ ํ•ด๋ณธ ์ ์ด ์—†๋‹ค. ์šฐ๋ฆฌ ํ•™๊ณผ๋Š” Computer Science๋ณด๋‹ค Computer Engineering์— ๋” ๊ฐ€๊นŒ์šด ํ•™๊ณผ์ด๊ธฐ์— 4ํ•™๋…„ 2ํ•™๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณผ๋ชฉ์ด ๋ฐฐ์ •๋˜์–ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์›น ๋ฐฑ์—”๋“œ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋‹ˆ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ SQL ๊ณต๋ถ€์˜ ํ•„์š”์„ฑ์„ ๋Š๋ผ๊ฒŒ ๋๊ณ  "์–ธ์  ๊ฐ€ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค."๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋งˆ์นจ ํ•œ๋น›๋ฏธ๋””์–ด ์ถœํŒ์‚ฌ์˜ ๋‚˜๋Š” ๋ฆฌ๋ทฐ์–ด๋‹ค์— ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์–ด ์ด ์ฑ…์„ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋๋‹ค.

๐Ÿ“– Book Reviewโ€‹

SQLโ€‹

์ด ์ฑ…์€ ์ œ๋ชฉ์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด SQL์„ ๊ณต๋ถ€ํ•˜๋Š” ์ฑ…์ด๋‹ค. SQL์€ MySQL, ORACLE DATABASE, IBM DB2, Microsoft SQL Server, PostgreSQL ๋‘ฅ๊ณผ ๊ฐ™์ด ์ข‹๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•˜๋‹ค. ๊ทธ์ค‘ ์ด ์ฑ…์€ ๊ฐ€์žฅ ๋Œ€์ค‘์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” MySQL์„ ์ค‘์ ์œผ๋กœ ์„ค๋ช…ํ•œ๋‹ค. ๊ฐ€๋” MySQL ์ด์™ธ์˜ SQL ์˜ˆ์ œ๋“ค์ด ๋‚˜์˜ค๊ธฐ๋„ ํ•˜์ง€๋งŒ SQL ๋ฌธ๋ฒ• ์ž์ฒด๊ฐ€ ๊ฑฐ์˜ ๋น„์Šทํ•˜์—ฌ ํฐ ์–ด๋ ค์›€์€ ์—†๋‹ค.

์‹ค์Šต ํ™˜๊ฒฝโ€‹

katacoda

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

์ด ์ฑ…์„ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” MySQL์„ ์„ค์น˜ํ•˜๊ณ  Sakila ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊นŒ์ง€ ๋ฐ›์•„์•ผ ํ•˜์ง€๋งŒ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์šด ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ด ์ฑ…์˜ ์›์„œ ์ถœํŒ์‚ฌ์ธ O'REILLY์—์„œ Katacoda๋ผ๋Š” ์‹ค์Šต ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค. ์ด์ œ ๋ง‰ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•œ ์‚ฌ๋žŒ๋“ค ์ž…์žฅ์—์„œ๋Š” ๋งค์šฐ ํŽธํ•˜๊ฒŒ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์‰ฌ์šด ์ผ์€ ์•„๋‹ˆ๊ธฐ์— ๊ฐ€์žฅ ์ธ์ƒ์ ์ธ ๋ถ€๋ถ„์ด์—ˆ๋‹ค.

wsl2

์ด์™ธ์—๋„ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์Šค์Šค๋กœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์ฑ…์˜ ์˜ˆ์ œ๋ฅผ ๋”ฐ๋ผ ํ•˜๋ฉฐ ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค. ๋‚˜๋Š” WSL2(Windows Subsystem for Linux 2)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MySQL ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” Windows์—์„œ MySQL์„ ์‚ฌ์šฉํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ์ด ์ฑ…์€ ํ„ฐ๋ฏธ๋„์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์— ๋‚˜๋„ MySQL Workbench๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ„ฐ๋ฏธ๋„์—์„œ ์‹ค์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ž…๋ฌธ์— ๊ทธ์น˜์ง€ ์•Š๋Š” ์ฑ…โ€‹

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

๊ณต๋ถ€ํ•˜๊ธฐ ํŽธํ•œ ์ฑ…โ€‹

์ด ์ฑ…์€ 455 ํŽ˜์ด์ง€๋กœ ๊ฝค ๋‘๊บผ์šด ์ฑ…์ด์ง€๋งŒ Chapter๊ฐ€ 18๊นŒ์ง€ ์žˆ์–ด ์กฐ๊ธˆ์”ฉ ๋ณด๊ธฐ ์ข‹๋‹ค. ํ•˜๋ฃจ์— ํ•œ Chapter์”ฉ ๋ณด๋ฉด 18์ผ์ด๋ฉด ๋‹ค ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์งง๊ฒŒ Chapter๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ์ฑ…์„ ์ฝ๋Š”๋ฐ ๋ถ€๋‹ด์„ ๋œํ–ˆ๋‹ค.

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

๋งˆ์ง€๋ง‰์œผ๋กœ ์‹ค์Šตํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์œผ๋ฉฐ, ์ข…์ข… ์˜ˆ์ œ ์ฝ”๋“œ๋งˆ๋‹ค ์–ด๋– ํ•œ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์ ํ˜€ ์žˆ์—ˆ๋‹ค. SQL์„ ์ž‘์„ฑํ•˜๋ฉด์„œ ์–ด๋ ค์šด ๋ถ€๋ถ„์ด ์žˆ์„ ๋•Œ ๋ ˆํผ๋Ÿฐ์Šค๋กœ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ์ฝ๊ธฐ์—๋„ ์ข‹์€ ์ฑ…์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.

๐Ÿ”– ๋Œ€์ƒ ๋…์žโ€‹

๊ฐ€๋” ํ•œ Chapter์—์„œ ์„ค๋ช…ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฃผ์ œ๊ฐ€ ์žˆ์ง€๋งŒ, ๊ทธ ์ฃผ์ œ์™€ ์กฐ๊ธˆ ๋ฒ—์–ด๋‚œ ๋‹ค๋ฅธ Chapter์˜ ์ฝ”๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์„ค๋ช…ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— SQL์„ ์ ์–ด๋„ ํ•œ ๋ฒˆ ๊ณต๋ถ€ํ•ด๋ณธ ์‚ฌ๋žŒ์ด ์ฝ์œผ๋ฉด ์–ป๋Š” ๊ฒƒ์ด ๋” ๋งŽ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.

SQL์„ ์™„์ „ํžˆ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋…์ž๋ผ๋ฉด ๋‹ค๋ฅธ ์ฑ…๋„ ๊ฐ™์ด ์ฝ์œผ๋ฉด์„œ ๊ณต๋ถ€ํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•˜๊ณ , SQL์„ ๊ณต๋ถ€ํ•ด๋ณธ ๋…์ž๋ผ๋ฉด ์ด ์ฑ…์˜ ์ฝ”๋“œ๋“ค์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹ค์Šตํ•ด๋ณด๋ฉด์„œ ๋ณต์Šตํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ฝ์œผ์‹œ๋ฉด ๋„์›€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.