Community

๐Ÿ•Š๏ธ SQL ๋ชจ๋ฒ” ์‚ฌ๋ก€

SQL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. SQL์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํšจ์œจ์„ฑ, ์ •ํ™•์„ฑ ๋ฐ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šด์˜์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ SQL ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1๏ธโƒฃ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋„ค์ด๋ฐ ๊ทœ์น™ ์‚ฌ์šฉํ•˜๊ธฐ ์กฐ์ง์— ์ ํ•ฉํ•œ ๋„ค์ด๋ฐ ๊ทœ์น™์„ ์„ ํƒํ•˜๊ณ  ์ด๋ฅผ ์ง€ํ‚ค์„ธ์š”. ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ €๋Š” snake_case ๊ทœ์น™์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ``` CREATE TABLE customer_orders ( order_id INT PRIMARY KEY, customer_id INT, order_date DATE, order_total DECIMAL(10, 2) ); ``` 2๏ธโƒฃ ์šด์˜ ํ™˜๊ฒฝ์—์„œ SELECT * ์‚ฌ์šฉ ์ง€์–‘ํ•˜๊ธฐ ํ…Œ์ด๋ธ”์—์„œ ๋ชจ๋“  ์—ด์„ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด SELECT * ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ฟผ๋ฆฌ ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ธฐ ๋งˆ๋ จ์ž…๋‹ˆ๋‹ค. SELECT ๋ฌธ์—๋Š” ํ•„์š”ํ•œ ์—ด์„ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜์—ดํ•˜์„ธ์š”. 3๏ธโƒฃ Index๋ฅผ ํ˜„๋ช…ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—…๋ฐ์ดํŠธ ์†๋„๋ฅผ ๋Šฆ์ถœ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ˜„๋ช…ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. WHERE ์ ˆ ๋˜๋Š” JOIN ์กฐ๊ฑด์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์—ด์—๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. 4๏ธโƒฃ ์ •๊ธฐ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…ํ•˜๊ธฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์€ ์žฌํ•ด ๋ณต๊ตฌ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ •๊ธฐ์ ์ธ ๋ฐฑ์—…์„ ์˜ˆ์•ฝํ•˜๊ณ  ์•ˆ์ „ํ•œ ์œ„์น˜์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 5๏ธโƒฃ ์ฝ”๋“œ ๋ฌธ์„œํ™”ํ•˜๊ธฐ SQL ์ฝ”๋“œ๋ฅผ ๋ฌธ์„œํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ฟผ๋ฆฌ์™€ ํ…Œ์ด๋ธ”์˜ ๋ชฉ์ ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ์— ์ฃผ์„์„ ํฌํ•จํ•˜์„ธ์š”. 6๏ธโƒฃ ๋งค๊ฐœ ๋ณ€์ˆ˜ํ™”๋œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SQL ์ฃผ์ž… ๋ฐฉ์ง€ํ•˜๊ธฐ SQL ์ฃผ์ž…(Injection)์€ ๊ณต๊ฒฉ์ž๊ฐ€ ์ฟผ๋ฆฌ์— ์•…์˜์ ์ธ SQL ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋งค๊ฐœ ๋ณ€์ˆ˜ํ™”๋œ ์ฟผ๋ฆฌ๋Š” SQL ์ฃผ์ž…์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. 7๏ธโƒฃ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์›์ž์„ฑ ๋ณด์žฅํ•˜๊ธฐ ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—… ๊ทธ๋ฃน์ด ํ•˜๋‚˜์˜ ์›์ž ๋‹จ์œ„๋กœ ์ทจ๊ธ‰๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์˜ ์ผ๋ถ€๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ „์ฒด ํŠธ๋žœ์žญ์…˜์ด ๋กค๋ฐฑ ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•จ๊ป˜ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์‹คํŒจํ•ด์•ผ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜์„ธ์š”. 8๏ธโƒฃ DROP DATABASE ์ฟผ๋ฆฌ๋Š” ๋จธ๋ฆฌ ์†์—์„œ ์ง€์šฐ๊ธฐ! ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ์ ์ ˆํ•œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฐฉ์ด ์น˜๋ฃŒ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค!

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค