๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Data/MariaDB

DB] DML 1 - INSERT / UPDATE / DELETE / UPSERT

by bamDal 2022. 4. 28.

 

DML (Data Manipulation Language) ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด

: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์— ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž… / ์ˆ˜์ • / ์‚ญ์ œ / ์กฐํšŒ ํ•˜๋Š” ๋ช…๋ น์–ด

 

INSERT : ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

UPDATE : ๋ฐ์ดํ„ฐ ์ˆ˜์ •

DELETE : ๋ฐ์ดํ„ฐ ์‚ญ์ œ

UPSERT : ์ž…๋ ฅ๋˜๋Š” KEY๊ฐ€ ์ค‘๋ณต์ผ ๊ฒฝ์šฐ UPDATE, ์•„๋‹ ๊ฒฝ์šฐ INSERT

SELECT : ๋ฐ์ดํ„ฐ ์กฐํšŒ

 

1. ๋ฐ์ดํ„ฐ ์‚ฝ์ž… (INSERT)
INSERT INTO [ํ…Œ์ด๋ธ”๋ช…] ([์ปฌ๋Ÿผ๋ช…]) VALUES ([์ปฌ๋Ÿผ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’]);

๋ณด๊ธฐ ์‰ฌ์šฐ๋ผ๊ณ  ์ค„๋ฐ”๊พธ๊ธฐ๋ฅผ ํ•ด๋†จ์ง€๋งŒ ๋ถ™์—ฌ์จ๋„ ๋œ๋‹ค.

๊ฐ ์ปฌ๋Ÿผ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋“ค์„ ์ปฌ๋Ÿผ ์ˆœ์„œ๋Œ€๋กœ ์จ์ค€๋‹ค.

ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ค„ ๋• ์ปฌ๋Ÿผ ์ž๋ฆฌ์— * ์„ ์จ์ฃผ๋ฉด ๋œ๋‹ค.
ํ•˜์ง€๋งŒ DB๋Š” ํ˜ผ์ž ๋ณด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปฌ๋Ÿผ๋ช…์„ ๋ชจ๋‘ ์จ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๊ณ ,
* ์„ ์‚ฌ์šฉํ•˜๋ฉด values๋ฅผ ์ปฌ๋Ÿผ์ด ํ…Œ์ด๋ธ”์— ๋“ค์–ด๊ฐ€์žˆ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์จ์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ • ์ปฌ๋Ÿผ๋งŒ ์ ์–ด์ฃผ๋ฉด ๊ทธ ๊ฐ’๋“ค๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ( ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์€ ์ปฌ๋Ÿผ์€ null ์ด ๋“ค์–ด๊ฐ„๋‹ค.)

8๊ฐœ์˜ ์ปฌ๋Ÿผ ์ค‘ 4๊ฐœ์˜ ์ปฌ๋Ÿผ์—๋งŒ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.
commission(๊ฐ’์„ ๋„ฃ์ง€ ์•Š์€ ์ปฌ๋Ÿผ)์— null

 

2. ๋ฐ์ดํ„ฐ ์ˆ˜์ •
UPDATE [ํ…Œ์ด๋ธ”๋ช…] SET [์ปฌ๋Ÿผ๋ช…] = [๋ณ€๊ฒฝํ•  ๊ฐ’] where [์กฐ๊ฑด];

๋ถ€์„œ๋ฒˆํ˜ธ(depart_no)๊ฐ€ null ์ธ ๊ณณ๋“ค์˜ depart_no ๋ฅผ 'dev002'๋กœ ์ˆ˜์ •ํ•ด๋ผ.

UPDATE [ํ…Œ์ด๋ธ”] : [ํ…Œ์ด๋ธ”]์„ ์ˆ˜์ •ํ•ด๋ผ
SET [์ปฌ๋Ÿผ๋ช…] = [๋ณ€๊ฒฝํ•  ๊ฐ’] : ์ด ๊ฐ’์œผ๋กœ ์„ธํŒ…
WHERE [์กฐ๊ฑด] : ์ด ์กฐ๊ฑด์ธ ๊ณณ์„

- ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ where ์ ˆ์„ ํ†ตํ•ด์„œ ์กฐ๊ฑด์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋ฐ์ดํ„ฐ ์‚ญ์ œ
DELETE FROM [ํ…Œ์ด๋ธ”๋ช…];

ํ…Œ์ด๋ธ” employees ์—์„œ first_name(์ปฌ๋Ÿผ) ์ด null ์ธ ๊ณณ๋“ค์„ ์‚ญ์ œํ•ด๋ผ.

ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋Š” ์กฐ๊ฑด์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

 

4. UPSERT
upsert : ๊ฐ’์ด ์—†์œผ๋ฉด ๋„ฃ๊ณ (insert), ๊ฐ’์ด ์žˆ์œผ๋ฉด ์ˆ˜์ •(update) ํ•œ๋‹ค.

INSERT INTO [ํ…Œ์ด๋ธ”๋ช…(์ปฌ๋Ÿผ) VALUES (์ปฌ๋Ÿผ ๊ฐ’) ON DUPLICATE KEY UPDATE (๋ณ€๊ฒฝํ•  ๊ฐ’);

๊ทธ๋ƒฅ insert ๋ฌธ์— on duplicate key update ๋ฅผ ๋ถ™์ธ ๊ฒƒ.

์šฐ์„  emp_no ๊ฐ€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ œ์•ฝ์กฐ๊ฑด์ด ๊ฑธ๋ ค์žˆ๋‹ค๋Š” ์ „์ œํ•˜์—

emp_no ์— 112๊ฐ€ ์—†๋‹ค๋ฉด insert ๋ฌธ์— ์žˆ๋Š” ๊ฐ’๋“ค์„ ๋„ฃ๋Š”๋‹ค.

ํ•˜์ง€๋งŒ emp_no ์— 112๊ฐ€ ์ด๋ฏธ ์žˆ๋‹ค๋ฉด on duplicate key ๋’ค์— ์žˆ๋Š” update ๊ตฌ๋ฌธ์„ ์‹คํ–‰ํ•œ๋‹ค.

๋‚˜๋Š” ์ด๋ฏธ ํ…Œ์ด๋ธ”์— emp_no = 112๋ฅผ ๋„ฃ์–ด๋†จ์œผ๋ฏ€๋กœ ์™•๋งŒ๋‘๊ฐ€ ์™•๊ฐ์ž๋กœ ์ˆ˜์ •๋œ๋‹ค.

 

> DML 2 ์—์„œ SELECT ๋ฌธ์„ ์ž์„ธํžˆ ๋‹ค๋ฃฌ๋‹ค.

https://bamdal.tistory.com/entry/DB-DML-2-select