JavaRush /Java Blog /Random-KO /๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL ์–ธ์–ด๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค - "Java ํ”„๋กœ์ ํŠธ A๋ถ€ํ„ฐ Z๊นŒ์ง€"
Roman Beekeeper
๋ ˆ๋ฒจ 35

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL ์–ธ์–ด๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค - "Java ํ”„๋กœ์ ํŠธ A๋ถ€ํ„ฐ Z๊นŒ์ง€"

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
Java ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์— ๊ด€ํ•œ ์‹œ๋ฆฌ์ฆˆ ๊ธฐ์‚ฌ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ชฉํ‘œ๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ์„ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋Š” ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†Œ๊ฐœ ๋ถ€๋ถ„์€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค . ์•ˆ๋…•ํ•˜์„ธ์š”, ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด ์—ฌ๋Ÿฌ๋ถ„. ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL ์–ธ์–ด์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. โ€œA๋ถ€ํ„ฐ Z๊นŒ์ง€์˜ Java ํ”„๋กœ์ ํŠธโ€: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ SQL ์–ธ์–ด ๋ถ„์„ - 1์ด ๊ธ€์€ ๋ˆ„๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธ€์ธ๊ฐ€์š”? ๋„ค, ๊ด€์‹ฌ ์žˆ๋Š” ๋ชจ๋“  ๋ถ„๋“ค. ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ์ด ๊ธฐ์‚ฌ๋กœ ์—ฌํ–‰์„ ์‹œ์ž‘ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ํฅ๋ฏธ๋กœ์šด ์‚ฌ์‹ค์— ๋Œ€ํ•œ ๊ธฐ์–ต์„ ๋˜์‚ด๋ฆด ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ์ˆœ์ „ํžˆ ์ด๋ก ์ ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL ๊ตฌ๋ฌธ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ธฐ ์ „์— ์ด๋ฅผ ์—ฐ๊ตฌํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„ ์—์„œ๋Š” SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค . ์ด ๊ธฐ์‚ฌ ์‹œ๋ฆฌ์ฆˆ์—์„œ๋Š” NoSQL์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: ๊ทธ๊ฒŒ ๋ญ์•ผ?

โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 2๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(์ดํ•˜ DB)๋ž€ ์งˆ์˜์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ •ํ˜•ํ™”๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณณ์„ ๋งํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋Œ€์šฉ๋Ÿ‰์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  ์‚ฌํ•ญ: ์ผ๋ถ€ ๊ธฐ์ค€์— ๋”ฐ๋ผ Excel์—์„œ ๊ฐ’ ์ง‘ํ•ฉ์„ ๋น ๋ฅด๊ฒŒ ๋ณ€๊ฒฝํ•ด ๋ณด์„ธ์š”. ์›์น™์ ์œผ๋กœ ๋ณต์žกํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋””์ง€ํ„ธํ™”๋˜์ง€ ์•Š์€ ํ˜„์‹ค ์„ธ๊ณ„์™€๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฐจ์„ , ๊ฑฐ๋ฆฌ, ๋„์‹œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ€์ƒ์ด๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ž…๋ ฅ๋˜๋ฉด ์ •๊ทœํ™”๋˜๋ฉฐ ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์†Œํ•œ ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์ €์žฅ ๋งค์ฒด๊ฐ€ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งฅ๋ฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์šฉ SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ทธ์— ๋”ฐ๋ผ ์ดํ•ดํ•˜๊ณ  ์‘๋‹ตํ•˜๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋„์‹œ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Dnepropetrovsk์˜ ์ด๋ฆ„์„ Dnipro๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
UPDATE city SET name = โ€œะ”ะฝะธะฟั€ะพโ€ WHERE id = 1231;
์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋ชจ๋“  ํ›„์† ์š”์ฒญ์€ ์ด๋ฏธ ํ•„์š”ํ•œ ์ด๋ฆ„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

์ด๋ฏธ ๋งํ–ˆ๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ฐ์ดํ„ฐ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์ผํ•œ ์ „๋ณด ๋ด‡์— ๋Œ€ํ•ด. ์šฐ๋ฆฌ๋Š” ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ด‡์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ผ๋ฐ˜ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์‚ฌ์šฉ์ž์˜ ๋‹‰๋„ค์ž„์ด๋‚˜ ์ฑ„ํŒ… ID๋ฅผ ์ €์žฅํ•˜๋Š” Set์ด๋ผ๋Š” ๊ณ ์œ ํ•œ ์š”์†Œ๋ฅผ ๋งŽ์ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ž‘๋™ํ• ๊นŒ์š”? ํ•  ๊ฒƒ์ด๋‹ค. ์ •ํ™•ํžˆ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘์ง€๋  ๋•Œ๊นŒ์ง€, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹œ์ž‘๋˜์ž๋งˆ์ž ๊ณ ์œ  ์š”์†Œ ์„ธํŠธ๋Š” ๋น„์–ด ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ €์žฅ๋˜์–ด ์žˆ๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋Œ€๋กœ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹œ์Šคํ…œ ์ƒํƒœ(๋ฐ์ดํ„ฐ) ์ €์žฅ์†Œ๋ฅผ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ CSV ํ˜•์‹์œผ๋กœ ์ปดํ“จํ„ฐ์˜ ์ผ๋ฐ˜ ํŒŒ์ผ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ํŒŒ์ผ์—์„œ ํ•œ ์ค„๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค‘์ง€๋˜๊ธฐ ์ „์— ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…นํ™” ์„ฑ๊ณต์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ 100%์— ๊ฐ€๊น์ง€ ์•Š์ง€๋งŒ, ์„œ๋ฒ„์˜ ์ „์› ์ฝ”๋“œ๋งŒ ๋ฝ‘์œผ๋ฉด ๋…นํ™”๊ฐ€ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ์‹ฌ๊ฐํ•œ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํŒŒ์ผ ์ˆ˜์ค€์—์„œ ์ •๋ณด๋ฅผ ์–ป๊ณ , ์ง‘๊ณ„ํ•˜๊ณ , ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋ฌผ๋ก  ํŒŒ์ผ์„ ์ฝ๊ณ  ๊ทธ์— ๋Œ€ํ•œ ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋งค๋ฒˆ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํŽŒํ•‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ช‡ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์™€ ๊ฐ™์ด ๋งŽ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉด ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ? ํ…Œ์ด๋ธ”๊ณผ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด. ์ด๊ฒƒ์ด ๋ชจ๋“  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค.

SQL: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ดํ•ดํ•˜๋Š” ์–ธ์–ด

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(์ดํ•˜ DBMS)์ด ์žˆ๋Š”๋ฐ ๊ทธ๋“ค์ด ์ดํ•ดํ•˜๋Š” ์–ธ์–ด๋Š” SQL์ด๋‹ค. SQL์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆผ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 3์‚ฌ์šฉ์ž๊ฐ€ DBMS์— SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‚ด๊ณ , DBMS๋Š” ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์„ ์ดํ•ดํ•˜๊ณ  ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์š”์ฒญ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋ฉด ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์šฐ๋ฆฌ๋Š” SQL ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ๋งˆ์Šคํ„ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. โ€œ์•„, ๋˜ ๋‹ค๋ฅธ ์–ธ์–ด๊ตฌ๋‚˜.โ€๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋‹˜์˜ ๋„์›€์œผ๋กœ ์ €๋Š” ์—ฌ๊ธฐ์„œ ์ž๋ฐ”๋ฅผ ๊ฑฐ์˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋Š”๋ฐ ๋‹น์‹ ์€ ์ฆ‰์‹œ ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๊ณ„์‹ญ๋‹ˆ๋‹ค.โ€ ์ด๋Š” ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. SQL์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ฑฐ๋ฆฌ๊ฐ€ ๋จผ ํšŒ๊ณ„์‚ฌ๊ฐ€ ์ด ์–ธ์–ด๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก DBMS์˜ ์‚ฌ์–‘ ์–ธ์–ด๋กœ ๋ฐœ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์—ฐ์Šต-์—ฐ์Šต-์—ฐ์Šต์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด๋ก ์ด ์žˆ์ง€๋งŒ ๋‹ค์Œ ๊ธฐ์‚ฌ๋Š” ์‹ค์Šต์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” 2์ฐจ์› ๋ฐฐ์—ด ํ…Œ์ด๋ธ”๊ณผ ์ด๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„ ์ง‘ํ•ฉ์ด๋ฏ€๋กœ ์ž‘์—…์€ ์ด๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๋ฉด "๊ตญ๊ฐ€"์™€ "๋„์‹œ"๋ผ๋Š” ๋‘ ํ…Œ์ด๋ธ”์ด ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 4์ด ๋‹จ๊ณ„์—์„œ๋Š” ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ Java ์„ธ๊ณ„์˜ ์ผ๋ถ€ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด ๋‘ ํ…Œ์ด๋ธ”์€ Java์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
๊ธ€์Ž„์š”, ์•„๋ฆ„๋‹ต์ง€ ์•Š๋‚˜์š”? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์›ํ•˜๋Š” ์ˆ˜์˜ ํ…Œ์ด๋ธ”์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ๊ตฌ์กฐ

๋‚˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  Excel ํ‘œ๋ฅผ ์ ‘ํ•ด ๋ดค๊ณ  ํ–‰ ๊ณผ ์—ด ์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค . ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋งฅ๋ฝ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ ˆ์ฝ”๋“œ์™€ ํ•„๋“œ์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 5๋”ฐ๋ผ์„œ City ํด๋ž˜์Šค์˜ ๊ฐ ๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋ผ๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ํ‚ค

โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 6๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•„๋“œ๊ฐ€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ–๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฆ„, ์„ฑ, ์‹ฌ์ง€์–ด๋Š” ๋ถ€์นญ์œผ๋กœ ๋‘ ๋ช… ์ด์ƒ์˜ ์‚ฌ๋žŒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์†Œ์…œ ๋„คํŠธ์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๋ ˆ์ฝ”๋“œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ํ•„๋“œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฒซ ๋ฒˆ์งธ ํ‚ค ๋˜๋Š” ๊ธฐ๋ณธ ํ‚ค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ID(id) ํ•„๋“œ๋Š” ์ด๋Ÿฌํ•œ ํ‚ค๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹๋ณ„์ž์˜ ์•ฝ์–ด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ชจ๋“  ํ…Œ์ด๋ธ”์— ID ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค .โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 7

์™ธ๋ถ€ ํ‚ค

์ด ์˜ˆ์—์„œ ์ด๋Ÿฌํ•œ ํ•„๋“œ๋Š” Country์˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” City ํ…Œ์ด๋ธ”์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋„์‹œ๋Š” ํ•ด๋‹น ๊ตญ๊ฐ€์— ๋Œ€ํ•œ ๊ณ ์œ ํ•œ ์ •๋ณด ์‹๋ณ„์ž๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ๊ฐ€์ ธ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ•ด๋‹น ๊ตญ๊ฐ€์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์ •๋ณด๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋‘ ํ…Œ์ด๋ธ” ์‚ฌ์ด์—๋Š” ๊ด€๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 8์—ฌ๊ธฐ์—๋Š” ์™ธ๋ž˜ ํ‚ค์˜ ์›๋ฆฌ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

SQL์—๋Š” ์–ด๋–ค ์„น์…˜์ด ์žˆ๋‚˜์š”?

๊ทธ๋Ÿฐ๋ฐ ์ธํ„ฐ๋ทฐ ์ค‘์— SQL์— ์–ด๋–ค ์ž‘์—…์ด ์žˆ๋Š”์ง€ ๋ฌป๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • DDL(Data Definition Language)์€ ํ…Œ์ด๋ธ”, ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ ๋“ฑ์„ ๋ณ€๊ฒฝ/์ƒ์„ฑํ•˜๋Š” ์—ฐ์‚ฐ์ž ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํ…Œ์ด๋ธ” ์ƒ์„ฑ, ์‚ญ์ œ, ํ…Œ์ด๋ธ”์˜ ํ•„๋“œ ์ƒ์„ฑ/์‚ญ์ œ; ์ƒˆ๋กœ์šด ๊ธฐ๋ณธ ํ‚ค ์ƒ์„ฑ ๋“ฑ
  • DML(Data Manipulation Language)์€ ๋ฐ์ดํ„ฐ ์ˆ˜์ •์„ ๊ด€๋ฆฌํ•˜๋Š” ์—ฐ์‚ฐ์ž ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…์€ ์ถ”๊ฐ€, ๊ฐ€์ ธ์˜ค๊ธฐ, ๋ณ€๊ฒฝ ๋ฐ ์‚ญ์ œ์ž…๋‹ˆ๋‹ค.
  • DCL(Data Control Language)์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋Š” ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค. DDL/DML ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŠน์ • ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ก์„ธ์Šค ๋ฐ ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

SQL์—๋Š” ์–ด๋–ค ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํ…Œ์ด๋ธ”์€ ํŠน์ • ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์žˆ๋Š” ๋ชจ๋“  ๋‚ด์šฉ์€ Java์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ฉ์‹œ๋‹ค. ๊ทธ ์ค‘ ์„ธ ๊ฐœ๋งŒ ์žˆ์œผ๋ฉฐ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 9๊ทธ๋ฆผ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • INT - ์ •์ˆ˜ ๊ฐ’. ๊ณ ์œ  ์‹๋ณ„์ž ๋ฐ ๋‹จ์ˆœ ์ •์ˆ˜์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • VARCHAR ์€ ๋ฌธ์ž์—ด ์ž…๋‹ˆ๋‹ค .
  • DATE ๋Š” LocalDate์ž…๋‹ˆ๋‹ค.
์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ„๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ฃ ? ํ•„๋“œ ์œ ํ˜•์€ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ํ•„๋“œ์— ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๊ฐ’์„ ์“ฐ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

SQL ์—ฐ์‚ฐ์ž๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์—ฐ์‚ฐ์ž๋Š” ์ผ๋ถ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ณ„๋„์˜ ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž๋Š” ๋ฌธ์žฅ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ฌธ์žฅ์€ ์ฟผ๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์›Œ๋“œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. โ€œJava-ะฟั€ะพะตะบั‚ ะพั‚ ะ ะดะพ ะฏโ€: ั€ะฐะทะฑะธั€ะฐะตะผ ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… ะธ ัะทั‹ะบ SQL - 10์—ฌ๊ธฐ์„œ๋Š” ๋” ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ฟผ๋ฆฌ๊ฐ€ ์ด๋ฏธ ์ž‘์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๊ฑฐ๊ธฐ์„œ ๋ฌด์—‡์„ ํ•˜๊ณ  ์žˆ๋‚˜์š”? ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. "Clients ํ…Œ์ด๋ธ”์—์„œ ์„ธ ๊ฐœ์˜ ํ•„๋“œ(Name, Age ๋ฐ CreatedDate)๋ฅผ ์„ ํƒํ•˜๊ณ  ์ด๋ฆ„์ด Roman๊ณผ ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ๋งŒ ์„ ํƒํ•˜์„ธ์š”."

๊ฒฐ๋ก 

์ด ๊ธฐ์‚ฌ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ตฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€, ์™œ ํ•„์š”ํ•œ์ง€ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ์šฐ๋ฆฌ๋Š” SQL์˜ ์ฒซ ๋ฒˆ์งธ ์ง•ํ›„๋ฅผ ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ, ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ๊ธฐ์‚ฌ์—์„œ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ‰์†Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ GitHub์— ๋“ฑ๋กํ•˜๊ณ  ๋‚ด ๊ณ„์ •์„ ํŒ”๋กœ์šฐํ•˜์—ฌ ์ด ์‹œ๋ฆฌ์ฆˆ์™€ ๋‚ด๊ฐ€ ๊ทธ๊ณณ์—์„œ ์ž‘์—…ํ•˜๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ํŒ”๋กœ์šฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ˆ™์ œ

JRTB์— ๊ด€ํ•œ ์ด ๊ธฐ์‚ฌ ์‹œ๋ฆฌ์ฆˆ์— ํฅ๋ฏธ๋ฅผ ๋”ํ•˜๊ธฐ ์œ„ํ•ด ๋•Œ๋•Œ๋กœ ์ˆ™์ œ๊ฐ€ ์ฃผ์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์˜ค๋Š˜์˜ ๊ณผ์ œ๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ ๊ธฐ์‚ฌ๋Š” ์—ฐ์Šต์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž‘์—…์€ ์ปดํ“จํ„ฐ์— MySQL DBMS๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ฝ˜์†”์ด๋‚˜ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ์–ด์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ณง ๋งŒ๋‚˜์š”!

์‹œ๋ฆฌ์ฆˆ์˜ ๋ชจ๋“  ์ž๋ฃŒ ๋ชฉ๋ก์€ ์ด ๊ธฐ์‚ฌ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION