Search

MySQL ํŠธ๋ฆฌ๊ฑฐ

MySQL ํŠธ๋ฆฌ๊ฑฐ

MySQL ํŠธ๋ฆฌ๊ฑฐ์— ๋Œ€ํ•ด ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ์˜์ƒ์ž…๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ์˜ ๊ฐœ๋…๋ถ€ํ„ฐ ์ƒ์„ฑ ๋ฐฉ๋ฒ•, ํ™œ์šฉ ์˜ˆ์‹œ(์žฌ๊ณ  ๊ด€๋ฆฌ, ๊ธ‰์—ฌ ์ด๋ ฅ ๊ด€๋ฆฌ)๊นŒ์ง€ ์ฐจ๊ทผ์ฐจ๊ทผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

1.
ํŠธ๋ฆฌ๊ฑฐ๋ž€? [00:00:00]
2.
ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ ๋ฐฉ๋ฒ•๊ณผ ๊ตฌ์กฐ [00:02:30]
3.
NEW์™€ OLD ํ‚ค์›Œ๋“œ ์˜๋ฏธ์™€ ํ™œ์šฉ [00:08:00]
4.
ํŠธ๋ฆฌ๊ฑฐ ํ™œ์šฉ ์˜ˆ์‹œ: ์ฃผ๋ฌธ ํ›„ ์žฌ๊ณ  ๊ด€๋ฆฌ [00:07:20]
5.
๊ธ‰์—ฌ ์ด๋ ฅ ๊ด€๋ฆฌ ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ [00:10:20]
6.
ํŠธ๋ฆฌ๊ฑฐ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒฐ๊ณผ ํ™•์ธ [00:15:40]
7.
๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ [00:17:50]

ํŠธ๋ฆฌ๊ฑฐ๋ž€? [00:00:00]

ํŠธ๋ฆฌ๊ฑฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ • ์ž‘์—…(INSERT, UPDATE, DELETE)์ด ๋ฐœ์ƒํ•  ๋•Œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํŠน๋ณ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด์—์š”.
์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒŒ์‹œ๊ธ€์„ ์‚ญ์ œํ•˜๋ฉด ๊ด€๋ จ ๋Œ“๊ธ€๋„ ์ž๋™ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜, ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์‹œ ์ž‘์„ฑ์ž์—๊ฒŒ ํฌ์ธํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”.
์ฆ‰, โ€œ๋ฐฉ์•„์‡ (Trigger)โ€์ฒ˜๋Ÿผ ์–ด๋–ค ์‚ฌ๊ฑด์ด ๋ฐœ์ƒํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ ๋ฐฉ๋ฒ•๊ณผ ๊ตฌ์กฐ [00:02:30]

ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋‹ค์Œ ์š”์†Œ๋ฅผ ์ง€์ •ํ•ด์š”:
1.
ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฆ„
2.
์‹คํ–‰ ์‹œ์ : BEFORE(์ด์ „), AFTER(์ดํ›„)
3.
์ด๋ฒคํŠธ ์ข…๋ฅ˜: INSERT(์‚ฝ์ž…), UPDATE(์ˆ˜์ •), DELETE(์‚ญ์ œ)
4.
์ ์šฉํ•  ํ…Œ์ด๋ธ”
5.
FOR EACH ROW: ๊ฐ ๋ฐ์ดํ„ฐ ํ–‰๋งˆ๋‹ค ์‹คํ–‰
6.
ํŠธ๋ฆฌ๊ฑฐ ์•ˆ์—์„œ ์‹คํ–‰ํ•  SQL ์ฝ”๋“œ ๋ธ”๋ก (BEGIN ... END)
์˜ˆ๋ฅผ ๋“ค์–ด, โ€œ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋œ ํ›„ ์žฌ๊ณ ๋ฅผ ์ค„์ธ๋‹คโ€ ๊ฐ™์€ ์ž‘์—…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.

NEW์™€ OLD ํ‚ค์›Œ๋“œ ์˜๋ฏธ์™€ ํ™œ์šฉ [00:08:00]

โ€ข
NEW: ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’
โ€ข
OLD: ๊ธฐ์กด์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ ๊ฐ’
INSERT๋Š” ํ•ญ์ƒ NEW๋งŒ ์‚ฌ์šฉํ•˜๊ณ , UPDATE๋Š” OLD(์ˆ˜์ • ์ „ ๊ฐ’)์™€ NEW(์ˆ˜์ • ํ›„ ๊ฐ’)๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.
DELETE๋Š” ์‚ญ์ œ๋˜๊ธฐ ์ „ ๊ฐ’์ด OLD์ด๊ณ , ์‚ญ์ œ ํ›„์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋‹ˆ NEW๋Š” NULL์ด์—์š”.
์˜ˆ๋ฅผ ๋“ค์–ด, ๊ธ‰์—ฌ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ด์ „ ๊ธ‰์—ฌ(OLD)์™€ ์ƒˆ ๊ธ‰์—ฌ(NEW)๋ฅผ ๋น„๊ตํ•ด ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์ฃ .

ํŠธ๋ฆฌ๊ฑฐ ํ™œ์šฉ ์˜ˆ์‹œ: ์ฃผ๋ฌธ ํ›„ ์žฌ๊ณ  ๊ด€๋ฆฌ [00:07:20]

์ฃผ๋ฌธ ํ…Œ์ด๋ธ”์— ์ฃผ๋ฌธ์ด ์ถ”๊ฐ€๋˜๋ฉด, ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒํ’ˆ ํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ์ƒํ’ˆ ์žฌ๊ณ ๋ฅผ ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰๋งŒํผ ๋นผ์ค๋‹ˆ๋‹ค.
์ด๋•Œ NEW.quantity ๊ฐ™์€ ์‹์œผ๋กœ ์ƒˆ๋กœ ๋“ค์–ด์˜จ ์ฃผ๋ฌธ ์ˆ˜๋Ÿ‰์„ ์ฐธ์กฐํ•ด ์žฌ๊ณ ๋ฅผ ์กฐ์ ˆํ•ด์š”.

๊ธ‰์—ฌ ์ด๋ ฅ ๊ด€๋ฆฌ ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ [00:10:20]

์ง์›์˜ ๊ธ‰์—ฌ๊ฐ€ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ๊ธ‰์—ฌ ์ด๋ ฅ ํ…Œ์ด๋ธ”์— ์ด์ „ ๊ธ‰์—ฌ(OLD), ์ƒˆ ๊ธ‰์—ฌ(NEW), ๊ทธ๋ฆฌ๊ณ  ๊ธ‰์—ฌ ์ฐจ์ด(NEW - OLD)๋ฅผ ๊ธฐ๋กํ•˜๋Š” ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธ‰์—ฌ ๋ณ€๋™ ๋‚ด์—ญ์„ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”.

ํŠธ๋ฆฌ๊ฑฐ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒฐ๊ณผ ํ™•์ธ [00:15:40]

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

๋งˆ๋ฌด๋ฆฌ ์ •๋ฆฌ [00:17:50]

ํŠธ๋ฆฌ๊ฑฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
ํŠน์ • ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜์–ด ๊ด€๋ จ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋กœ๊ทธ ๊ธฐ๋ก, ์—ฐ๊ด€ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ๋“ฑ์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด์š”.
์ด๋ฒˆ ์˜์ƒ์—์„œ ํŠธ๋ฆฌ๊ฑฐ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํ™œ์šฉ๋ฒ•์„ ์ตํ˜€ ๋‘๋ฉด, ์‹ค๋ฌด์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ๊ฐ€ ํ›จ์”ฌ ํŽธํ•ด์งˆ ๊ฑฐ์˜ˆ์š”!
์˜์ƒ ๋ณด์‹œ๋ฉด์„œ ์ง์ ‘ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ณ , NEW์™€ OLD ํ‚ค์›Œ๋“œ๋ฅผ ํ™œ์šฉํ•ด ๋‹ค์–‘ํ•œ ์ž๋™ํ™” ์ž‘์—…์„ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋งˆ์น˜ โ€˜์Šค์Šค๋กœ ์ผํ•˜๋Š” ๋น„์„œโ€™์ฒ˜๋Ÿผ ๋А๊ปด์งˆ ๊ฑฐ์˜ˆ์š”!