๐ŸŒฑ[๊ตฌ๋””์•„์นด๋ฐ๋ฏธ IT๊ตญ๋น„์ง€์›]

๊น€ํฌ์ง„ยท2023๋…„ 4์›” 19์ผ
0

[๊ตฌ๋””์•„์นด๋ฐ๋ฏธ IT๊ตญ๋น„์ง€์›] mariadb(RDBMS) ์„ค์น˜์™€ DDL์˜ ๊ธฐ์ดˆ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ , ์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ดํด๋ฆฝ์Šค์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค.


๐Ÿ’ก mariadb (RDBMS)

์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ ๋ฐฉ๋ฒ• (html, css)์™€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• (java)์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. ์ด์ œ ์ด ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ฐจ๋ก€๋‹ค. ๋ฐ์ดํ„ฐ ์ €์žฅ์€ RDBMS, SQL ๋“ฑ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์šฐ๋ฆฌ๋Š” ๊ทธ ์ค‘ mariadb๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋Š” ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ(=2์ฐจ์› ํ˜•ํƒœ๋กœ) ์ €์žฅ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ๋žŒ ํ•œ๋ช…์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์‚ฌ๋žŒ ํ•œ๋ช…์˜ ์ •๋ณด๋Š” ํ•œ ํ–‰์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉฐ, ์—ด์€ ์ด๋ฆ„, ๋‚˜์ด, ์ง์—… ๋“ฑ์ด ๋  ๊ฒƒ์ด๋‹ค. ์ด๋•Œ ์—ด์„ ์†์„ฑ์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•˜๊ณ , ํด๋ž˜์Šค์—์„œ๋Š” ํ•„๋“œ(๋˜๋Š” ๋ฉค๋ฒ„๋ณ€์ˆ˜)์™€ ๊ฐ™์€ ๊ฐœ๋…์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ์˜ ์ฃผ์˜ํ•  ์ ์ด ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ํ‚ค ๊ฐ’(ํ•˜๋‚˜์˜ ์—ด ๊ฐ’)์ด ๊ผญ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์‚ฌ๋žŒ์˜ ๊ฒฝ์šฐ๋ผ๋ฉด ์ฃผ๋ฏผ๋ฒˆํ˜ธ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ , ์‹๋‹น์ด๋ผ๋ฉด ์‚ฌ์—…์ž๋“ฑ๋ก๋ฒˆํ˜ธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์œ ์ผํ•œ ํ‚ค ๊ฐ’์ด ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ์ผํ•œ ์ •๋ณด๊ฐ€ ์—†๋‹ค๋ฉด ๊ฐ๊ฐ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•˜๋ฉด ๋œ๋‹ค.

๋˜ํ•œ, ์ž˜ ๋งŒ๋“  ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์€ ์ด์ƒํ˜„์ƒ์ด ์žˆ์œผ๋ฉด ์•ˆ ๋œ๋‹ค.
์ด์ƒํ˜„์ƒ์€ ์„ธ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋˜๋Š”๋ฐ,
์‚ฝ์ž…์ด์ƒ: ex) ๊ฐ™์€ 11๋ฐ˜์ธ๋ฐ ํ•œ๋ช…์€ java, ํ•œ๋ช…์€ ํŒŒ์ด์ฌ. ๊ฐ™์€ ๋ฐ˜์ธ๋ฐ ๋‹ค๋ฅธ ๊ณผ๋ชฉ์ด ์ž…๋ ฅ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด์ƒํ˜„์ƒ์ด ์ƒ๊น€
์‚ญ์ œ์ด์ƒ: ex) ์œ ์ผํ•˜๊ฒŒ ์žˆ์—ˆ๋˜ c# ๊ณผ์ •์ธ ์‚ฌ๋žŒ์˜ ์ •๋ณด๋ฅผ ์ง€์›€, ๋ฐ์ดํ„ฐ์— c#์ด๋ผ๋Š” ๊ณผ์ •์ด ์•„์˜ˆ ์กด์žฌ์กฐ์ฐจ ํ•˜์ง€ ์•Š๊ฒŒ ๋จ, ์‚ฌ๋žŒ์˜ ์ •๋ณด๋ฅผ ์ง€์› ์„ ๋ฟ ๊ณผ์ •์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒํ˜„์ƒ์ด ์ƒ๊น€
์ˆ˜์ •์ด์ƒ: ex) ๊ฐ™์€ 11๋ฐ˜ ๊ฐ™์€ java ์˜€๋Š”๋ฐ ํ•œ๋ช…์„ ํŒŒ์ด์ฌ์œผ๋กœ ์ˆ˜์ •ํ•จ. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด์ƒํ˜„์ƒ์ด ์ƒ๊น€

์ด๋Ÿฌํ•œ ์ด์ƒํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ผ ๋ฐฉ๋ฒ•์€ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋ฐ˜๊ณผ ๊ณผ์ •์„ ๋งค์นญํ•œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ ์ž‘์„ฑ๋„ ์ค„์—ฌ์„œ ์˜ค๋ฅ˜๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์„ ์ •๊ทœํ™”๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ด๋ ‡๊ฒŒ ์ •๊ทœํ™”ํ•œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„(2๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„) ์—ฐ๊ฒฐํ•ด์„œ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋Š” ๊ฒƒ์„ ์กฐ์ธ(Join)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
๋ฐ์ดํ„ฐ ๊ทœ๋ชจ์— ๋”ฐ๋ผ ์ •๊ทœํ™”ํ•œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ๋‹ค์‹œ ์›๋ž˜๋Œ€๋กœ ๋Œ๋ฆฌ๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์€ ์—ญ์ •๊ทœํ™” ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ ๊ทœ๋ชจ์— ๋”ฐ๋ผ ์ •๊ทœํ™”๋ฅผ ํ• ์ง€, ์•ˆ ํ• ์ง€ ์„ ํƒํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.


๐Ÿ“Œ ์„ค์น˜๋ฐฉ๋ฒ•

์„ค์น˜๋Š” ์ด๊ณณ์—์„œ ํ•œ๋‹ค.


ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ์‹œ์˜ ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•ด ๋„ˆ๋ฌด ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ๋Š” ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
๋˜ํ•œ, ์ด๋ก ์ ์œผ๋กœ ํ†ฐ์บฃ๊ณผ ๊ฐ™์€ ๋“œ๋ผ์ด๋ธŒ์— ์„ค์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.


๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ํ•ดํ‚น์„ ๋ง‰๊ธฐ ์œ„ํ•ด ๋„ˆ๋ฌด ์‰ฌ์šด ๋ฒˆํ˜ธ๋กœ๋Š” ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. root ์ ‘๊ทผ ํ—ˆ์šฉ๋„ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์ˆ˜์—…์ด๋‹ˆ๊นŒ ์ฒดํฌํ–ˆ๋‹ค. ๋งˆ์ง€๋ง‰ utf-8์€ ์ฒดํฌํ•ด์ฃผ์–ด์•ผ ํ•œ๊ธ€์ด ๊นจ์ง€์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.


์ž๋ฐ”์—์„œ mariadb ์„œ๋ฒ„ ์ ‘์† ์‹œ ํฌํŠธ๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„์•ผํ•˜๋Š”๋ฐ, ์ด ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์–ตํ•˜๋ฉด ๋œ๋‹ค.



์„ค์น˜๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ด๊ณณ์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ค. mariadb์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค ํ”„๋กœ๊ทธ๋žจ์ด๋ผ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.


์„ค์น˜๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€๋„ ์œ„์—์„œ์˜ ๋ฐฉ๋ฒ•๋ฐ–์— ์—†๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ mariadb๋Š” ์„œ๋ฒ„ํˆด์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ ๋ˆˆ์œผ๋กœ ํ™•์ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ™์ด ์„ค์น˜๋œ(ํŒจํ‚ค์ง€๋กœ ๋ฌถ์—ฌ์žˆ์Œ) HeidSQL์ด๋ผ๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์ด์šฉํ•œ๋‹ค.


ํฌํŠธ๋ฒˆํ˜ธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ip๋„ ์ž˜ ๊ธฐ์–ตํ•ด๋‘”๋‹ค. 127.0.0.1 ์ž๊ธฐ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ip๋‹ค. (=๋กœ์ปฌํ˜ธ์ŠคํŠธ) ๋งŒ์•ฝ db๊ฐ€ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์— ์žˆ์œผ๋ฉด ๊ทธ ์•„์ดํ”ผ๋ฅผ ์“ฐ๋ฉด ๋˜์ง€๋งŒ, ์ง€๊ธˆ์€ ์šฐ๋ฆฌ๋Š” ์ž์‹ ์˜ ์ปดํ“จํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ•ด๋‹น ์•„์ดํ”ผ๊ฐ€ ๋œฌ๋‹ค.
๋˜ํ•œ, ์‚ฌ์šฉ์ž๋„ root๋ฉด ์•ˆ๋˜๊ณ  ๋”ฐ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์—ฐ์Šต์ด๋ฏ€๋กœ ๋„˜์–ด๊ฐ”๋‹ค.

์˜ค๋ฅ˜๋ฐœ์ƒ!
์œˆ๋„์šฐ 10์˜ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๊ณณ์—์„œ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„ ์„ค์น˜ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค.


์„ธ์…˜์„ ์ƒ์„ฑํ•œ ํ›„ ๋“ค์–ด๊ฐ€์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค. ๋ฐ์ดํ„ฐ๊ตฌ์กฐ๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ…Œ์ด๋ธ”ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์‡ผํ•‘๋ชฐ์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒํ’ˆ, ๊ณ ๊ฐ, ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์šฐ์„  diary๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.


๋‹ค์‹œ ๋“ค์–ด์˜ฌ ๋•Œ ์ด๊ณณ์—์„œ diary๋ฅผ ์„ ํƒํ•˜๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


๋‹ค์‹œ ๋Œ์•„์™€์„œ, ์ด์ œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.


์ƒ์„ฑํ•œ ํ…Œ์ด๋ธ”์— ์ด๋ฆ„์„ ๋„ฃ์–ด์ฃผ๊ณ , ์—ด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ค€๋‹ค. ๋˜๋„๋ก์ด๋ฉด NULL์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํ–‰์ด ์ƒ์„ฑ๋œ ๋‚ ์งœ(createdate)์™€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •๋œ ๋‚ ์งœ(updatedate)๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ๊ผญ ์žˆ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค!


๊ธฐ๋ณธํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์•ž์„œ ๋งํ–ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ํ‚ค๊ฐ€ ๋งˆ๋•…ํžˆ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ๊ฐ’์„ AUTO_INCREMENT ๋กœ ์ฃผ์–ด ์ž๋™์œผ๋กœ ์ˆœ์ฐจ์ ์ธ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๋ฒˆํ˜ธ๋Š” ์ด์ „์— ์ƒ์„ฑ๋œ ์  ์žˆ๋˜ ์ˆซ์ž๋ณด๋‹ค ํฐ ๋ฒˆํ˜ธ๋กœ ์ƒ์„ฑ ๋œ๋‹ค. (ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ด๋„)


๋˜ํ•œ, ์ด๋ ‡๊ฒŒ PRIMARY ๋ฅผ ์ฃผ๋ฉด ์ค‘๋ณต๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ธฐ

ํ…Œ์ŠคํŠธ๋‚˜ ์—ฐ์Šต์„ ์œ„ํ•ด ์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๊ณณ์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ค.


๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹์œผ๋กœ ์ž‘์„ฑํ•œ ๋’ค ์ €์žฅํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์™€ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

  • ์ŠคํŽ ๋ง ์˜คํƒ€ ์•ˆ๋‚˜๊ฒŒ ์ฃผ์˜
  • ํ…Œ์ด๋ธ” ์ž‘์„ฑ์‹œ ์„ ํƒํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ๊ฐ™๋„๋ก ์ฃผ์˜
  • ๋ฐ์ดํ„ฐํƒ€์ž„์€ ์ž๋ฐ”์—์„œ ์‚ฌ์šฉ์‹œ ํฌ๋งท์ด yyyy-mm-dd ํ˜•์‹์œผ๋กœ ๋‚˜์™€์•ผํ•จ
  • Rows, Format, Table Name๋„ ์žŠ์ง€ ๋ง๊ณ  ์ž…๋ ฅํ•˜๊ธฐ

๐Ÿ’ก DML ๊ธฐ์ดˆ

SQL์€ RDBMS์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด์ด๋ฉฐ DDL, DCL, DML, TCL๋กœ ์„ธ๋ถ„ํ™”๋œ๋‹ค. ์ด์ค‘์—์„œ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ๋ณด๊ฒŒ๋  ์–ธ์–ด๋Š” DML์ด๋‹ค.
DML์€ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ(insert), ์ˆ˜์ •(update), ์‚ญ์ œ(delete), ์กฐํšŒ(select)ํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค. ์ด์ค‘์—์„œ๋„ SELECT๋Š” ๊ฐ€์žฅ ์ž์ฃผ์“ฐ๊ฒŒ ๋œ๋‹ค.

# table ๋งŒ๋“œ๋Š” SQL์ฟผ๋ฆฌ - DDL(create, alter, drop)
# table ์‚ฌ์šฉ์„ ํ—ˆ๊ฐ€ํ•˜๋Š” ๊ถŒํ•œ - DCL(grant, revoke)
# table ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ/์ˆ˜์ •/์‚ญ์ œ/์กฐํฌ - DML(insert, update, delete, select)
# TCL(commit, rollback)

# ์‚ฝ์ž…ํ•˜๊ธฐ
INSERT INTO notice(
notice_title,notice_content,notice_writer,createdate,updatedate)
VALUES ('์ฒซ๋ฒˆ์งธ๊ณต์ง€','์•ˆ๋…•ํ•˜์„ธ์š”','๊ตฌ๋””',NOW(),NOW());
INSERT INTO notice(
notice_title,notice_content,notice_writer,createdate,updatedate)
VALUES ('๋‘๋ฒˆ์งธ๊ณต์ง€','๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค','๊ตฌ๋””2',NOW(),NOW());
# COMMIT; #auto commit ์˜ต์…˜์ด on๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— commit์„ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค


# ์ˆ˜์ •ํ•˜๊ธฐ
UPDATE notice SET notice_content='์•ˆ๋…•ํžˆ ๊ฐ€์„ธ์š”'
WHERE notice_no = 2;


# ์กฐํšŒํ•˜๊ธฐ
#๋ชจ๋“  ์—ด๊ณผ ํ–‰ ์กฐํšŒ (WHERE ์ƒ๋žต)
SELECT * FROM notice;

# ์›ํ•˜๋Š” ์—ด ๋˜๋Š” ์›ํ•˜๋Š” ํ–‰์„ ๊ณจ๋ผ์„œ ๋ณผ ์ˆ˜ ์žˆ์Œ
# ์›ํ•˜๋Š” ํ–‰๋งŒ ์กฐํšŒ (WHERE ์‚ฌ์šฉ)
SELECT * FROM notice WHERE notice_no = 2;
# ์›ํ•˜๋Š” ์—ด๋งŒ ์กฐํšŒ
SELECT notice_no, notice_title FROM notice;
# ์›ํ•˜๋Š” ํ–‰์˜ ์›ํ•˜๋Š” ์—ด๋งŒ ์กฐํšŒ ํ•˜๋ ค๋ฉด ์œ„ ๋‘ ์ฝ”๋“œ๋ฅผ ํ•ฉ์น˜๋ฉด ๋จ
SELECT notice_no, notice_title from notice where notice_no = 2;


# ์‚ญ์ œํ•˜๊ธฐ
DELETE FROM notice WHERE notice_writer = '๊ตฌ๋””2';
# where์ ˆ์ด ์ƒ๋žต๋˜๋ฉด ์ „๋ถ€ ์‚ญ์ œ๋จ
DELETE FROM notice

์ด ์ค‘ SELECT๋ฅผ ๋” ํ™œ์šฉํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

SELECT notice_no, notice_title FROM notice
ORDER BY notice_no DESC
LIMIT 0, 10; 

# ๋‚ด๋ฆผ์ฐจ์ˆœ ์กฐํšŒ
# 0๋ถ€ํ„ฐ 10๊ฐœ, ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ 10๊ฐœ ๋ณด๋ ค๋ฉด 9, 10

SELECT * FROM notice WHERE notice_no = 500;
# ๋ชฉ๋ก์—์„œ 500๋ฒˆ ๊ธ€์˜ ์ œ๋ชฉ์„ ํด๋ฆญํ•˜๋ฉด 500๋ฒˆ ๊ธ€์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ๊ฐ’์„ ์กฐํšŒ

๐Ÿ’ก ์ž๋ฐ”(์ดํด๋ฆฝ์Šค)์—์„œ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ

์ด๋ ‡๊ฒŒ ํ…Œ์ด๋ธ”์— ์ง์ ‘ INSERT ํ•˜๊ฑฐ๋‚˜ ์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์„ ์ž๋ฐ”(์ดํด๋ฆฝ์Šค)์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜

์ดํด๋ฆฝ์Šค์—์„œ mariadb ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด๊ณณ์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ค.


๋‹ค์šด๋ฐ›์€ ํŒŒ์ผ์„ ์ž‘์—…ํ•  ํ”„๋กœ์ ํŠธ์˜ ํ•ด๋‹น ์œ„์น˜์— ๋„ฃ์–ด์ค€๋‹ค. jar ํŒŒ์ผ์€ ํด๋ž˜์Šค๋“ค์„ ๋ชจ์•„๋†“์€ ํŒจํ‚ค์ง€์ธ๋ฐ, ์ด ํŒŒ์ผ์„ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค.


org.maridb.jdbc.Driver ํด๋ž˜์Šค๋Š” ์ด๊ณณ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ์‹ค์Šต (1)

๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•œ ํ›„ ์ด์ œ ์ง์ ‘ jsp ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  ์ถœ๋ ฅํ•ด๋ณด๋Š” ์‹ค์Šต์„ ํ•ด๋ณด์•˜๋‹ค.

๐Ÿ“ ์ž‘์„ฑ - noticeList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@ page import = "java.sql.ResultSet" %>
<%
	// select ์ฟผ๋ฆฌ๋ฅผ mariadb์— ์ „์†ก ํ›„ ๊ฒฐ๊ณผ์…‹์„ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•˜๋Š” ํŽ˜์ด์ง€
	// select notice_no, notice_title from notice order by notice_no desc
	
	// 1) mariadb ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver");
	System.out.println("๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ์„ฑ๊ณต");
	
	// 2) mariadb ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ ํ›„ ์ ‘์†์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„์•ผ ํ•œ๋‹ค
	Connection conn = null; // ์ ‘์†์ •๋ณด ํƒ€์ž…
	conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/diary","****","****");
	System.out.println("์ ‘์†์„ฑ๊ณต"+conn);
	
	// 3) ์ฟผ๋ฆฌ์ƒ์„ฑ ํ›„ ์‹คํ–‰
	String sql = "select notice_no, notice_title from notice order by notice_no desc";
	PreparedStatement stmt = conn.prepareStatement(sql);
	ResultSet rs = stmt.executeQuery();
	// ResultSet๋„ ๋ฐฐ์—ด์˜ ํ•œ ์ข…๋ฅ˜๋กœ ์ƒ๊ฐ, ์ด ๋ฐฐ์—ด์€ ์‚ฌ์ด์ฆˆ๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค ํ•˜์ง€๋งŒ ๊ณ„์†ํ•ด์„œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
	// ๊ทธ๋ž˜์„œ ์ถ”๊ฐ€ํ•  ์ •๋ณด๊ฐ€ ์—†์œผ๋ฉด ํŽ„์Šค ์ถœ๋ ฅ
	// ์ด๊ฑธ ์ด์šฉํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆด ์ˆ˜ ์žˆ์Œ
	System.out.println("์ฟผ๋ฆฌ์‹คํ–‰์„ฑ๊ณต"+rs);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>noticeList.jsp</title>
</head>
<body>
	<table>
		<tr>
			<th>notice_no</th>
			<th>notice_title</th>
		</tr>
		
		<%
			while(rs.next()) {
		%>
			<tr>
				<td><%=rs.getInt("notice_no") %></td>
				<td><a href=""><%=rs.getString("notice_title") %></a></td>
			</tr>
		<%
			}
		%>
	</table>
</body>
</html>
  • ๋‹ฌ๋‹ฌ ์™ธ์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ
  • DriverManager.getConnection("","",""); : ๋งค๊ฐœ๋ณ€์ˆ˜ 3๊ฐœ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ฃผ์†Œ, ๊ณ„์ •, ์•”ํ˜ธ. ์ฃผ์†Œ๋Š” "ํ”„๋กœํ† ์ฝœ(jdbc:mariadb)://์ฃผ์†Œ(๋‚ด์•„์ดํ”ผ127.0.0.1):ํฌํŠธ๋ฒˆํ˜ธ(3306)/์ž์›(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฆ„)"์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š”๋ฐ ๊ตณ์ด ์™ธ์šฐ๊ณ ์žˆ์„ ํ•„์š”๊นŒ์ง€๋Š” ์—†๋‹ค.
  • rs.next() : ํ–‰์— ๊ฐ’์ด ์žˆ๋Š”์ง€ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ, ๊ฐ’์ด ์—†์œผ๋ฉด false๋ฅผ ์ถœ๋ ฅ, ๊ทธ๋ž˜์„œ whlie๋ฌธ ์„ ์ด์šฉํ•œ๋‹ค.

๐Ÿ“ ๊ฒฐ๊ณผ

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์— ์ž…๋ ฅํ–ˆ๋˜ 500๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

๐Ÿ“Œ ์‹ค์Šต (2)

์ด๋ฒˆ์—๋Š” ์ง์ ‘ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ƒ์„ฑ๋ถ€ํ„ฐ ์ดํด๋ฆฝ์Šค๋ฅผ ์ด์šฉํ•ด ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ˜ผ์ž ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

๐Ÿ“ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

๐Ÿ“ ์ฟผ๋ฆฌ ์ž‘์„ฑ
INSERT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋„ฃ์–ด์คฌ๋‹ค.

SELECT * FROM student;

INSERT INTO student(
student_no,student_name,student_age,createdate,updatedate)
values(1,'๊ตฌOO',31,NOW(),NOW());
INSERT INTO student(
student_no,student_name,student_age,createdate,updatedate)
values(2,'๊ถŒOO',24,NOW(),NOW());
INSERT INTO student(
student_no,student_name,student_age,createdate,updatedate)
values(3,'๊น€OO',31,NOW(),NOW());

๐Ÿ“ ์ž‘์„ฑ - studentList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.PreparedStatement" %>
<%@ page import = "java.sql.ResultSet" %>
<%
	// select ์ฟผ๋ฆฌ๋ฅผ mariadb์— ์ „์†ก ํ›„ ๊ฒฐ๊ณผ์…‹์„ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•˜๋Š” ํŽ˜์ด์ง€
	
	// 1) mariadb ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋”ฉ
	Class.forName("org.mariadb.jdbc.Driver");
	System.out.println("๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ ์„ฑ๊ณต");
	
	// 2) mariadb ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ ํ›„ ์ ‘์†์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„์•ผ ํ•œ๋‹ค
	Connection conn = null; // ์ ‘์†์ •๋ณด ํƒ€์ž…
	conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/diary","****","****");
	System.out.println("์ ‘์†์„ฑ๊ณต"+conn);
	
	// 3) ์ฟผ๋ฆฌ์ƒ์„ฑ ํ›„ ์‹คํ–‰
	String sql = "select student_no, student_name, student_age from student";
	PreparedStatement stmt = conn.prepareStatement(sql);
	ResultSet rs = stmt.executeQuery();
	System.out.println("์ฟผ๋ฆฌ์‹คํ–‰์„ฑ๊ณต"+rs);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>studentList.jsp</title>
<!-- Latest compiled and minified CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- Latest compiled JavaScript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container mt-3">
	<h2>ํ•™์ƒ๋ชฉ๋ก</h2>
 	<table class="table">
		<thead class="table-success">
			<tr>
				<th>no</th>
				<th>name</th>
				<th>age</th>
			</tr>
		</thead>
		<tbody>
		
		<%
			while(rs.next()) {
		%>
			<tr>
				<td><%=rs.getInt("student_no") %></td>
				<td><%=rs.getString("student_name") %></td>
				<td><%=rs.getInt("student_age") %></td>
			</tr>
		<%2
			}
		%>
		</tbody>
	</table>
</div>
</body>
</html>

๐Ÿ“ ์ถœ๋ ฅ


๐Ÿง ํ•˜๋ฃจ๋ฅผ ๋งˆ์น˜๋ฉฐ

์ด๋ฒˆ์—๋Š” ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐฐ์šฐ๋‹ค๋ณด๋‹ˆ ์ฒ˜์Œ์—” ๋„ˆ๋ฌด ๋‚ฏ์„ค๊ณ  ์–ด๋ ต๊ฒŒ ๋Š๊ปด์กŒ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณตํ•ด์„œ ์ง์ ‘ ๋ถ€๋”ชํ˜€๋ณด๋‹ˆ ์ ์ฐจ ์ ์‘ํ•˜๋Š” ๊ฒƒ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‚ฏ์„ค๊ณ  ์–ด๋ ค์šธ์ˆ˜๋ก ์—ฌ๋Ÿฌ๋ฒˆ ๋ณด๊ณ , ์—ฌ๋Ÿฌ๋ฒˆ ์ง์ ‘ ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค์‹œ๊ธˆ ๋Š๋‚„ ์ˆ˜ ์žˆ๋Š” ํ•˜๋ฃจ์˜€๋‹ค.


profile
ํ•˜๋ฃจ ํ•œ๊ฑธ์Œ์”ฉ๐Ÿ’ช ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž ๋„์ „๊ธฐ ๐ŸŒฑ๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€