๐ŸŒ 2-3-1. DML

๊ณผ๋ชฉ2. SQL ๊ธฐ๋ณธ๊ณผ ํ™œ์šฉ

์ œ3์žฅ ๊ด€๋ฆฌ ๊ตฌ๋ฌธ

์ œ1์ ˆ DML

์•ž ์ ˆ์—์„œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” ๋งŒ๋“ค์–ด์ง„ ํ…Œ์ด๋ธ”์— ๊ด€๋ฆฌํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ์ž๋ฃŒ๋“ค์„ ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒํ•˜๋Š” DML(DATA MANIPULATION LANGUAGE) ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณธ๋‹ค.

1. INSERT

๊ฐ€. ๋‹จ์ผ ํ–‰ INSERT ๋ฌธ

ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์œผ๋ฉฐ ํ•œ ๋ฒˆ์— ํ•œ ๊ฑด๋งŒ ์ž…๋ ฅ๋œ๋‹ค.

INSERT INTO ํ…Œ์ด๋ธ”๋ช… (COLUMN_LIST)
    VALUES (COLUMN_LIST ์—๋„ฃ์„VALUE_LIST); 
INSERT INTO ํ…Œ์ด๋ธ”๋ช…
    VALUES (์ „์ฒดCOLUMN ์—๋„ฃ์„VALUE_LIST); 

ํ•ด๋‹น ์นผ๋Ÿผ๋ช…๊ณผ ์ž…๋ ฅ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐ’์„ ์„œ๋กœ 1:1๋กœ ๋งคํ•‘ํ•ด์„œ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. ํ•ด๋‹น ์นผ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด CHAR๋‚˜ VARCHAR2 ๋“ฑ ๋ฌธ์ž ์œ ํ˜•์ผ ๊ฒฝ์šฐ ใ€Ž ' ใ€(SINGLE QUOTATION)๋กœ ์ž…๋ ฅํ•  ๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค. ์ˆซ์ž์ผ ๊ฒฝ์šฐ ใ€Ž ' ใ€(SINGLE QUOTATION)์„ ๋ถ™์ด์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์œ ํ˜•์€ ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋•Œ ์นผ๋Ÿผ์˜ ์ˆœ์„œ๋Š” ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ ์ˆœ์„œ์™€ ๋งค์น˜ํ•  ํ•„์š”๋Š” ์—†์œผ๋ฉฐ, ์ •์˜ํ•˜์ง€ ์•Š์€ ์นผ๋Ÿผ์€ Default๋กœ NULL ๊ฐ’์ด ์ž…๋ ฅ๋œ๋‹ค. ๋‹จ, Primary Key๋‚˜ Not NULL ๋กœ ์ง€์ •๋œ ์นผ๋Ÿผ์€ NULL์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋‘ ๋ฒˆ์งธ ์œ ํ˜•์€ ๋ชจ๋“  ์นผ๋Ÿผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ๋กœ ๊ตณ์ด COLUMN_LIST๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ, ์นผ๋Ÿผ์˜ ์ˆœ์„œ๋Œ€๋กœ ๋น ์ง์—†์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค.

[์˜ˆ์ œ] ์„ ์ˆ˜ ํ…Œ์ด๋ธ”์— ๋ฐ•์ง€์„ฑ ์„ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ถ€ ์นผ๋Ÿผ๋งŒ ์ž…๋ ฅํ•œ๋‹ค.

[์˜ˆ์ œ]

โ–ถ ํ…Œ์ด๋ธ”๋ช… : PLAYER

1๊ฐœ์˜ ํ–‰์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.

[ํ‘œ โ…ก-1-11]์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์— ์žˆ๋Š” PLAYER ํ…Œ์ด๋ธ”์— ๋ฐ•์ง€์„ฑ ์„ ์ˆ˜ ์ •๋ณด๊ฐ€ ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค. INSERT ๋ฌธ์žฅ์—์„œ BACK_NO๊ฐ€ ๋งˆ์ง€๋ง‰์— ์ •์˜๊ฐ€ ๋˜์—ˆ๋”๋ผ๋„ ํ…Œ์ด๋ธ”์—๋Š” ์นผ๋Ÿผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋‹ค. ์นผ๋Ÿผ๋ช…์ด ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ NULL ๊ฐ’์ด ์ž…๋ ฅ๋˜์—ˆ๋‹ค.

[์˜ˆ์ œ] ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ์ด์ฒญ์šฉ ์„ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•ด๋ณธ๋‹ค.

[์˜ˆ์ œ]

1๊ฐœ์˜ ํ–‰์ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ ์ •์˜๋˜์ง€ ์•Š์€ ๋ฏธ์ง€์˜ ๊ฐ’์ธ E_PLAYER_NAME์€ ๋‘ ๊ฐœ์˜ ใ€Ž '' ใ€SINGLE QUOTATION์„ ๋ถ™์—ฌ์„œ ํ‘œํ˜„ํ•˜๊ฑฐ๋‚˜, NATION์ด๋‚˜ BIRTH_DATE์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ NULL์ด๋ผ๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚˜. ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๋‹ค์ค‘ ํ–‰ INSERT ๋ฌธ

2. UPDATE

์ž…๋ ฅํ•œ ์ •๋ณด ์ค‘์— ์ž˜๋ชป ์ž…๋ ฅ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ UPDATE ๋ฌธ์žฅ์˜ ๊ธฐ๋ณธ ํ˜•ํƒœ์ด๋‹ค. UPDATE ๋‹ค์Œ์— ์ˆ˜์ •๋˜์–ด์•ผ ํ•  ์นผ๋Ÿผ์ด ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”๋ช…์„ ์ž…๋ ฅํ•˜๊ณ  SET ๋‹ค์Œ์— ์ˆ˜์ •๋˜์–ด์•ผ ํ•  ์นผ๋Ÿผ๋ช…๊ณผ ํ•ด๋‹น ์นผ๋Ÿผ์— ์ˆ˜์ •๋˜๋Š” ๊ฐ’์œผ๋กœ ์ˆ˜์ •์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

[์˜ˆ์ œ] ์„ ์ˆ˜ ํ…Œ์ด๋ธ”์˜ ๋ฐฑ๋„˜๋ฒ„๋ฅผ ์ผ๊ด„์ ์œผ๋กœ 99๋กœ ์ˆ˜์ •ํ•œ๋‹ค.

[์˜ˆ์ œ]

480๊ฐœ์˜ ํ–‰์ด ์ˆ˜์ •๋˜์—ˆ๋‹ค.

[์˜ˆ์ œ] ์„ ์ˆ˜ ํ…Œ์ด๋ธ”์˜ ํฌ์ง€์…˜์„ ์ผ๊ด„์ ์œผ๋กœ 'MF'๋กœ ์ˆ˜์ •ํ•œ๋‹ค.

[์˜ˆ์ œ]

480๊ฐœ์˜ ํ–‰์ด ์ˆ˜์ •๋˜์—ˆ๋‹ค.

3. DELETE

ํ…Œ์ด๋ธ”์˜ ์ •๋ณด๊ฐ€ ํ•„์š” ์—†๊ฒŒ ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋‹ค์Œ์€ DELETE ๋ฌธ์žฅ์˜ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์ด๋‹ค. DELETE FROM ๋‹ค์Œ์— ์‚ญ์ œ๋ฅผ ์›ํ•˜๋Š” ์ž๋ฃŒ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ…Œ์ด๋ธ”๋ช…์„ ์ž…๋ ฅํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค. ์ด๋•Œ FROM ๋ฌธ๊ตฌ๋Š” ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•œ ํ‚ค์›Œ๋“œ์ด๋ฉฐ, ๋’ค์—์„œ ๋ฐฐ์šธ WHERE ์ ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.

[์˜ˆ์ œ] ์„ ์ˆ˜ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ ์‚ญ์ œํ•œ๋‹ค.

[์˜ˆ์ œ]

480๊ฐœ์˜ ํ–‰์ด ์‚ญ์ œ๋˜์—ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” DDL ๋ช…๋ น์–ด์™€ DML ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์— ์žˆ์–ด์„œ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋‹ค. DDL(CREATE, ALTER, RENAME, DROP) ๋ช…๋ น์–ด์ธ ๊ฒฝ์šฐ์—๋Š” ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— DDL ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์ˆœ๊ฐ„ ๋ช…๋ น์–ด์— ํ•ด๋‹นํ•˜๋Š” ์ž‘์—…์ด ์ฆ‰์‹œ(AUTO COMMIT) ์™„๋ฃŒ๋œ๋‹ค. ํ•˜์ง€๋งŒ DML(INSERT, UPDATE, DELETE, SELECT) ๋ช…๋ น์–ด์˜ ๊ฒฝ์šฐ, ์กฐ์ž‘ํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”์„ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ์˜ฌ๋ ค๋†“๊ณ  ์ž‘์—…์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ…Œ์ด๋ธ”์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฒ„ํผ์—์„œ ์ฒ˜๋ฆฌํ•œ DML ๋ช…๋ น์–ด๊ฐ€ ์‹ค์ œ ํ…Œ์ด๋ธ”์— ๋ฐ˜์˜๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” COMMIT ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ TRANSACTION์„ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ SQL Server์˜ ๊ฒฝ์šฐ๋Š” DML์˜ ๊ฒฝ์šฐ๋„ AUTO COMMIT์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ํ…Œ์ด๋ธ”์— ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด COMMIT ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ, ์‹œ์Šคํ…œ ํ™œ์šฉ ์ธก๋ฉด์—์„œ๋Š” ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๊ทธ๋กœ ์ €์žฅํ•˜๋Š” DELETE TABLE ๋ณด๋‹ค๋Š” ์‹œ์Šคํ…œ ๋ถ€ํ•˜๊ฐ€ ์ ์€ TRUNCATE TABLE์„ ๊ถŒ๊ณ ํ•œ๋‹ค. ๋‹จ, TRUNCATE TABLE์˜ ๊ฒฝ์šฐ ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ์˜ ๋กœ๊ทธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ROLLBACK์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ SQL Server์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•œ ํ›„ TRUNCATE TABLE์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ ์ดํ›„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜์–ด, ๋‹ค์‹œ ๋ณต๊ตฌ๋ฅผ ์›ํ•  ๊ฒฝ์šฐ ROLLBACK ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์› ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ํŠธ๋žœ์žญ์…˜๊ณผ COMMIT, ROLLBACK์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ ์ ˆ์—์„œ ์„ค๋ช…ํ•œ๋‹ค.

4. MERGE

์ถœ์ฒ˜ : ๋ฐ์ดํ„ฐ์˜จ์—์–ด โ€“ ํ•œ๊ตญ๋ฐ์ดํ„ฐ์‚ฐ์—…์ง„ํฅ์›(https://dataonair.or.krarrow-up-right)

Last updated