๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Deep knowledge/โœ” ๋งˆ์ผ€ํ„ฐ์˜ ๋ฐ์ดํ„ฐ ๋ถ„์„

SQL๊ฐœ๋ฐœ์ž-1: SQL์˜ ๊ธฐ๋ณธ๊ณผ DML, TCL

SQL์˜ ๊ธฐ๋ณธ

1. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ฐœ์š”

1) ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ž€?

๋ฐ์ดํ„ฐ: ์ˆ˜, ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์œ„, ๊ฐ๊ด€์ ์ธ ์‚ฌ์‹ค

์ •๋ณด: ์ž๋ฃŒ๋ฅผ ๊ฐ€๊ณตํ•ด์„œ ์˜๋ฏธ๋ฅผ ์–ป๋Š” ๊ฒƒ (ํ†ต๊ณ„, ํ•ฉ๊ณ„, ๊ทธ๋ฃนํ•‘ ๋“ฑ์„ ํ†ตํ•ด ์ธ์‚ฌ์ดํŠธ๋ฅผ ์–ป๋Š” ๊ฒƒ) 

๋„“์€ ์˜๋ฏธ: ์ผ์ƒ์ ์ธ ์ •๋ณด๋ฅผ ๋ชจ์•„๋†“์€ ๊ฒƒ ์ž์ฒด

์ข์€ ์˜๋ฏธ: ํŠน์ • ๊ธฐ์—…์ด๋‚˜ ์กฐ์ง, ๊ฐœ์ธ์ด ํ•„์š”(๋ถ€๊ฐ€๊ฐ€์น˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”)์— ์˜ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ •ํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด ๋†“์€ ๊ฒƒ

DMBS(Database Management System): ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ, ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์‚ฌ๊ฑด์œผ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ง‰๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์˜ ์†Œํ”„ํŠธ์›จ์–ด

์ข…๋ฅ˜: ์˜ค๋ผํด, ๋งˆ๋ฆฌ์•„๋””๋น„, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ SQL Server, MySQL, PostgreSQL

 

2) ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค(RDB) - ์ •ํ˜• ๋ฐ์ดํ„ฐ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค: ์ •๊ทœํ™”๋ฅผ ํ†ตํ•œ ํ•ฉ๋ฆฌ์ ์ธ ํ…Œ์ด๋ธ” ๋ชจ๋ธ๋ง, ์ด์ƒ ํ˜„์ƒ์„ ์ œ๊ฑฐ, ์ค‘๋ณต์„ ํ”ผํ•˜๊ณ  ๋™์‹œ์„ฑ ๊ด€๋ฆฌ ๋ณ‘ํ–‰ ์ œ์–ด 

> ๊ตฌ์กฐ, ๊ทœ์น™์ด ์ •ํ•ด์ง - ์ •ํ˜• ๋ฐ์ดํ„ฐ

> ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๊ด„ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ์˜ ์„ฑ๊ฒฉ, ์†์„ฑ ๋˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์„ ์ฒด๊ณ„ํ™”, ๊ตฌ์กฐ์™€ ๊ทœ์น™์ด ์ •ํ•ด์ ธ์žˆ์œผ๋ฉฐ, ์ฒด๊ณ„ํ™” ๋˜์–ด์žˆ์Œ

> ๋ฐ์ดํ„ฐ ํ‘œ์ค€ํ™”๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ํ™•๋ณด

> ๋ณด์•ˆ ๊ธฐ๋Šฅ

> ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ๊ด€๊ณ„๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ค‘์š” ๋ฐ์ดํ„ฐ ์‚ญ์ œ ์‹œ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

> ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์žฅ์• ์—๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋˜๋„๋ก ๋ณด์žฅ, ๋ฐ์ดํ„ฐ ํšŒ๋ณต, ๋ณต๊ตฌ ๊ธฐ๋Šฅ ์ œ๊ณต

 

3) NoSQL(Not Only SQL) - ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ

> ๋น„์ •ํ˜•๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ทœ์น™์ด ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š์Œ 

> ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋น„์ •ํ˜•๋ฐ์ดํ„ฐ: ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋™์˜์ƒ ๋“ฑ

 

๋ชจ๋“  RDB๋ฅผ NoSQL๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ RDB๊ฐ€ ํ•  ์ˆ˜ ์—†๋Š” ์˜์—ญ์„ NoSQL์ด ํ•จ๊ป˜ ๊ณต์กดํ•˜๋ฉด์„œ ํ™œ์šฉ (ํ˜‘์—… ๊ด€๊ณ„)
NoSQL์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ˜•ํ™” ํ˜•ํƒœ๋กœ ๊ฐ€๊ณตํ•œ ๋‹ค์Œ RDB๋กœ ์—ฐ๊ฒฐ

 

4) SQL๋ฌธ ์ข…๋ฅ˜

Table: ํŠน์ •ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐ์  ๋ชฉ๋ก์œผ๋กœ ๋ฌถ์€ ๊ฒƒ, ๋ฐ์ดํ„ฐ๋ฅผ ์ข…๋ฅ˜๋ณ„๋กœ ๊ตฌ๋ถ„ํ•˜๋Š” ๋‹จ์œ„
(ํšŒ์›ํ…Œ์ด๋ธ”, ์ƒํ’ˆํ…Œ์ด๋ธ”, ์ฃผ๋ฌธํ…Œ์ด๋ธ”)

์—ด: ์ปฌ๋Ÿผ, ํ”ผ์ณ
ํ–‰: ๋กœ์šฐ, ๋ ˆ์ฝ”๋“œ

ํ•˜๋‚˜์˜ ์—ด์—๋Š” ๊ฐ™์€ ์†์„ฑ์˜ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ€์žˆ๋‹ค.

 

RDB๋Š” ๋Œ€๋ถ€๋ถ„ 2์ฐจ์›์˜ ํ–‰๋ ฌ๋กœ ์ด๋ฃจ์–ด์ง

๋นจ๊ฐ„์ƒ‰์ด ๊ณ ์œ ๊ฐ’(Primary key : PK) ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์œ ์ผํ•œ ๊ฐ’ ์ ˆ๋Œ€ ์ค‘๋ณต ๋ถˆ๊ฐ€, ๋‹จ ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผํ•จ

PK๋ฅผ ๋ฌด์—‡์œผ๋กœ ํ• ์ง€ ๊ฒฐ์ • - ๋ฌด์กฐ๊ฑด ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ PK๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

2. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ •์˜

ํ†ตํ•ฉ๋œ ๋ฐ์ดํ„ฐ (integrated data) ๋™์ผํ•œ ๋‚ด์šฉ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต๋˜์ง€ ์•Š์Œ
DB ๊ด€๋ฆฌ ์‹œ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜๋ˆ ์ ธ์žˆ์œผ๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›€
๊ทธ๋ž˜์„œ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ  ํ†ตํ•ฉํ•ด์„œ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ๋œป
๋˜‘๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค ํ•„์š” ์—†์Œ
์ €์žฅ๋œ ๋ฐ์ดํ„ฐ (stored data) ๋””์Šคํฌ ๋“ฑ ์ €์žฅ ๋งค์ฒด์— ์ €์žฅ
์ €์žฅ์ด ๋˜์–ด์žˆ์–ด์•ผํ•จ, ๋Œ€๋ถ€๋ถ„ ํ•˜๋“œ๋””์Šคํฌ๊ฒ ์ง€๋งŒ ๋‹ค์–‘ํ•œ ์ €์žฅ ๋งค์ฒด์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
๋ณ€ํ™”๋˜๋Š” ๋ฐ์ดํ„ฐ (changeable data) ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •์„ ํ†ตํ•œ ์ตœ์‹  ๋ฐ์ดํ„ฐ ์œ ์ง€
์œ ์ €๋“ค์ด ํšŒ์›๊ฐ€์ž…์„ ํ–ˆ๋Š”๋ฐ, ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๊ฑฐ๋‚˜
์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜, ํƒˆํ‡ด๋กœ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Œ
์ด๋ฅผ ํ†ตํ•ด ์ตœ์‹  ์ •๋ณด๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•จ
๊ณต์šฉ ๋ฐ์ดํ„ฐ (shared data) ์—ฌ๋Ÿฌ ์ด์šฉ์ž๊ฐ€ ๋™์‹œ์— ๊ณต์œ  ๊ฐ€๋Šฅ
์—ฌ๋Ÿฌ ๋‹ด๋‹น์ž, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(์›น, ERP, Shopping mall)๋“ค์ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ณ 
๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ๋ฅผ ํ•จ๊ป˜ ํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ

์˜ค๋ผํด์„ ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ์ ‘์† ์ •๋ณด๋งŒ ์žˆ์œผ๋ฉด ์ ‘์†์ด ๊ฐ€๋Šฅ

SQL developer ๋Š” ๊ฐ ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ ๋””๋น„๋ฒ„, ํ† ๋“œ ๋“ฑ๋“ฑ๊ณผ ๊ฐ™๋‹ค

 

3. structured query language

๊ตฌ์กฐ์  ์งˆ์˜ ์–ธ์–ด

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ํ†ต์‹  ์–ธ์–ด

๋ฐ์ดํ„ฐ ์กฐํšŒ ์ •์˜ ์กฐ์ž‘์„ ์œ„ํ•œ ์–ธ์–ด

์ข…๋ฅ˜ ๋ช…๋ น์–ด
๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด DML
(Date Manipulation Language)
๋ฐ์ดํ„ฐ ์กฐ์ž‘ ์–ธ์–ด, ๋ฐ์ดํ„ฐ ์กฐํšŒ, ๊ฒ€์ƒ‰, ์ˆ˜์ •, ์‚ญ์ œ
SELECT, SELECT DISTINCT, INSERT, UPDATE, DELETE
๋ฐ์ดํ„ฐ ์ •์˜์–ด DDL
(Data Definition Language)
๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด, ํ…Œ์ด๋ธ” ์ƒ์„ฑ, ์ˆ˜์ •, ๋ณ€๊ฒฝ, ์‚ญ์ œ
CREATE, ALTER, DROP, RENAME
๋ฐ์ดํ„ฐ ์ œ์–ด์–ด DCL
(Data Control Language )
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ ‘๊ทผ ๊ถŒํ•œ ์ œ์–ด ์–ธ์–ด
GRANT, REVOKE
ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด TCL
(Transaction control language)
ํŠธ๋žœ์žญ์…˜(๋…ผ๋ฆฌ์  ์ž‘์—…๋‹จ์œ„) ์ œ์–ด๋ฅผ ์œ„ํ•œ ์–ธ์–ด
COMMIT, ROLLBACK
> Transaction? ๊ณ„์ขŒ์ด์ฒด๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ํ•ด์คŒ
๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ์€ํ–‰์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ธฐํƒ€ ์ž‘์—…์ด ๊ฐ™์ด ์ด๋ฃจ์–ด์ง
์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์œผ๋กœ ๋ฌถ์–ด๋†“์Œ ๊ทธ๊ฒƒ์„ ํŠธ๋žœ์žญ์…˜์ด๋ผ๊ณ  ํ•˜๊ณ  ์ด๊ฒƒ์„ ์ œ์–ดํ•˜๋Š” ์–ธ์–ด


4. SQL ํŠน์ง•

- ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์—†์Œ

- ๋„์–ด์“ฐ๊ธฐ, ์ค„๋ฐ”๊ฟˆ ์ œํ•œ ์—†์Œ: ๊ธฐ๋ณธ์ ์ธ ํ‚ค์›Œ๋“œ ๊ตฌ๋ถ„๋งŒ ๋œ๋‹ค๋ฉด?

- ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ์—…๋ฌด์ƒ ์ค‘์š”, ๋ณดํ†ต ํ‚ค์›Œ๋“œ๋Š” ๋Œ€๋ฌธ์ž ์ปฌ๋Ÿผ๋ช…์€ ์†Œ๋ฌธ์ž๋กœ ์“ฐ๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•จ

- ํ•˜๋‚˜์˜ ๋ฌธ์žฅ์€ ๋งˆ์ง€๋ง‰์— ;๋กœ ๊ตฌ๋ถ„

- ํŠน์ • ๊ฐ’ ์ž…๋ ฅ ์‹œ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ '๋กœ ๊ฐ์‹ธ์„œ ์ž…๋ ฅ

- ๋‚ด๊ฐ€ ์ปค์„œ๊ฐ€ ์žˆ๋Š” ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ธ๋ฏธ์ฝœ๋ก ์ด ๋งˆ์นจํ‘œ ์—ญํ•  / ctrl+enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋๋‚ฌ๋‹ค๋Š” ์˜๋ฏธ

- ๋“œ๋ž˜๊ทธํ•˜๋ฉด ๋“œ๋ž˜๊ทธํ•œ ๋ถ€๋ถ„๋งŒ ์‹คํ–‰๋จ (์„ธ๋ฏธ์ฝœ๋ก ์ด ์—†์„ ๋•Œ)

 



๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด DML

1) INSERT (์‚ฝ์ž…)

2) UPDATE (์ˆ˜์ •)

3) DELETE (์‚ญ์ œ)

4) SELECT (์กฐํšŒ)

5) SELECT DISTINCT

 

ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด TCL

: INSERT, UPDATE, DELETE ์ž‘์—…์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋˜๋Œ๋ฆฌ๋Š” ์—ญํ• 

1) COMMIT

2) ROLLBACK

3) SAVEPOINT

 

 


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

1) INSERT ๋ฌธ: ํ…Œ์ด๋ธ”์— VALUES๋ฅผ ๋„ฃ๋Š” ๊ฒƒ

INSERT INTO ํ…Œ์ด๋ธ”๋ช… (์—ด์ด๋ฆ„, ์—ด์ด๋ฆ„2, ...) -- ์—ด ์ด๋ฆ„ ์ƒ๋žต ๊ฐ€๋Šฅ
VALUES (๊ฐ’1, ๊ฐ’2, ...);

check point ID, NAME์˜ ์ˆœ์„œ

check point ์ปฌ๋Ÿผ๋ช…์„ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ

 

TIP! ์—ด ์ด๋ฆ„ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 
๊ทธ ์ด์œ ๋Š” ์ปฌ๋Ÿผ์ด ์ถ”๊ฐ€๋˜์—ˆ์„ ๊ฒฝ์šฐ, ์ƒ๋žตํ–ˆ์œผ๋ฉด ์ค‘๊ฐ„์— ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋ฆฌ ์ฐพ์•„์„œ ๊ทธ ์ž๋ฆฌ์— ๋„ฃ์–ด์•ผํ•จ. 
์ฒ˜์Œ์— ๊ท€์ฐฎ๋”๋ผ๋„ VALUE๋ฅผ ๋‹ค ์ ์—ˆ์œผ๋ฉด ์ƒˆ๋กœ์šด VALUE๋ฅผ ๊ทธ๋ƒฅ ๋งจ ๋’ค์— ์ž‘์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด๋˜๋„๋ก ์›ฌ๋งŒํ•˜๋ฉด ์ž…๋ ฅํ•  ๊ฒƒ

 

-- ์ปฌ๋Ÿผ๋ช…์„ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ (์ฃผ์„)

์ฃผ์„์ด๋ž€? SQL ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋Š” ์—ญํ• 

> ํ•œ ์ค„ ์ฃผ์„: -- ๋Œ€์‰ฌ ๋‘๊ฐœ

> ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„:
   /*   
   ์ฃผ์„
       */

 


2) UPDATE ๋ฌธ: ์ˆ˜์ •

UPDATE ํ…Œ์ด๋ธ”๋ช… SET
์—ด์ด๋ฆ„1=๊ฐ’1, ์—ด์ด๋ฆ„2 = ๊ฐ’2...
WHERE ์กฐ๊ฑด์‹; -- WHERE ์กฐ๊ฑด์‹ ํ•„์š” ์‹œ ์‚ฝ์ž…



3) DELETE ๋ฌธ: ์‚ญ์ œ

UPDATE ํ…Œ์ด๋ธ”๋ช… SET
์—ด์ด๋ฆ„1=๊ฐ’1, ์—ด์ด๋ฆ„2 = ๊ฐ’2...
[WHERE ์กฐ๊ฑด์‹];
DELETE FROM ํ…Œ์ด๋ธ”๋ช… [WHERE ์กฐ๊ฑด์‹]; -- WHERE ์กฐ๊ฑด์‹ ํ•„์š” ์‹œ ์‚ฝ์ž…

 


ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด TCL

1) COMMIT: ์ €์žฅ

์ž‘์—… (NSERT, UPDATE, DELETE)๋ฅผ ์ €์žฅ

 

2) ROLLBACK: ์˜ˆ์ „ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ

์ž‘์—… (NSERT, UPDATE, DELETE)๋ฅผ ๋ฏธ์ €์žฅํ•˜๋Š” ๊ฒƒ์ž„

์ž‘์—… ์ค‘ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ํŠธ๋žœ์žญ์…˜์˜ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ทจ์†Œํ•˜๊ณ , ์ข…๋ฃŒ ํŠธ๋žœ์žญ์…˜ ๋ฐœ์ƒ ์ด์ „ ์‹œ์ ์œผ๋กœ ๋˜๋Œ๋ฆผ

์ฆ‰, INSERT, UPDATE, DELETE๋Š” ๋ฐ”๋กœ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ž„์‹œ ์ €์žฅ๋˜์—ˆ๋‹ค๊ฐ€ commitํ•˜๋ฉด ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ!

์‹ค์ˆ˜๋กœ ๋ฐ์ดํ„ฐ ์‚ญ์ œ
DELETE FROM emp_ex;

๋ฐ์ดํ„ฐ ํ™•์ธ
SELECT * FROM emp_ex;

ROLLBACK ์ ์šฉ
ROLLBACK;

๋ฐ์ดํ„ฐ ์žฌํ™•์ธ
SELECT * FROM emp_ex;

 

๋‹จ, CREATE๋Š” ํŠธ๋žœ์žญ์…˜์„ ์ ์šฉํ•  ์ˆ˜ ์—†๊ณ , ๋ฐ”๋กœ ์ ์šฉ์ด ๋œ๋‹ค.

ex)

A๊ฐ€ B์—๊ฒŒ 100์›์„ ์ด์ฒด → A๊ณ„์ขŒ์—์„œ 100์› ์ถœ๊ธˆํ•˜๊ณ  B๊ณ„์ขŒ์— 100์› ์ž…๊ธˆํ•˜๋Š” ๊ณผ์ •

BUT, ๊ทธ ๊ณผ์ •์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ค‘๊ฐ„์— ๋กค๋ฐฑํ•˜์—ฌ A๊ณ„์ขŒ์— 100์›์ด ๋‹ค์‹œ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ!

 

3) SAVEPOINT: ์˜ˆ์ „ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ

INSERT INTO emp_ex VALUES (4, 'ํ™๊ธธ๋™', 600);
SAVEPOINT sp1;
INSERT INTO emp_ex VALUES (5, '๊น€๊ธธ๋™', 700);
SAVEPOINT sp2;
INSERT INTO emp_ex VALUES (6, '์ตœ๊ธธ๋™', 800);
ROLLBACK TO sp2;
COMMIT;

-> ๊น€๊ธธ๋™๊นŒ์ง€ COMMIT

๋ฐ์ดํ„ฐ ํ™•์ธ
SELECT * FROM emp_ex;

 

SQL๊ฐœ๋ฐœ์ž: DML(์กฐํšŒ) - SELECT, SELECT DISTINCT๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด?

https://hibeginner.tistory.com/19?category=983643 

 

SQL๊ฐœ๋ฐœ์ž: DML(์กฐํšŒ) - SELECT, SELECT DISTINCT

DML(INSERT, UPDATE, DELETE), TCL(COMMIT, ROLLBACK, SAVEPOINT)์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด? https://hibeginner.tistory.com/18 SQL๊ฐœ๋ฐœ์ž: SQL์˜ ๊ธฐ๋ณธ๊ณผ DML, TCL SQL์˜ ๊ธฐ๋ณธ 1. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ฐœ์š” 1) ๋ฐ์ดํ„ฐ..

hibeginner.tistory.com