๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ž๊ฒฉ์ฆ/SQLD

[์˜ค๋‹ต๋…ธํŠธ] 2-3. ๊ด€๋ฆฌ๊ตฌ๋ฌธ

by kime2 2024. 3. 2.
๐ŸŽˆ์ œ์•ฝ์กฐ๊ฑด์˜ ์ข…๋ฅ˜
1. primary key(๊ธฐ๋ณธํ‚ค)
2. unique key(๊ณ ์œ ํ‚ค)
3. not null
4. check
5. foreign key(์™ธ๋ž˜ํ‚ค)

๐ŸŽˆํ…Œ์ด๋ธ” ์นผ๋Ÿผ์— ๋Œ€ํ•œ ์ •์˜ ๋ณ€๊ฒฝ
1. oracle
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… MODIFY (์ปฌ๋Ÿผ๋ช…1 ๋ฐ์ดํ„ฐ์œ ํ˜• [DEFAULT ์‹ : ADD CONSTRAIN ์ œ์•ฝ์กฐ๊ฑด๋ช… PRIMARY KEY] [NOT NULL], ์ปฌ๋Ÿผ๋ช… 2...)
- REFERENCE ์ฐธ์กฐํ•  ์™ธ๋ถ€ํ‚ค ON DELET CASCADE : ๋ถ€๋ชจํ…Œ์ด๋ธ”์—์„œ ์™ธ๋ถ€ํ‚ค๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ๊ฐ™์ด ์‚ญ์ œ
- REFERENCE ์ฐธ์กฐํ•  ์™ธ๋ถ€ํ‚ค ON DELET SET NULL : ๋ถ€๋ชจํ…Œ์ด๋ธ”์—์„œ ์™ธ๋ถ€ํ‚ค๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ๋„๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ
[delete]์˜ ๊ฒฝ์šฐ
- casecade : ๋ถ€๋…ธ ์‚ญ์ œ์‹œ ๊ฐ™์ด ์‚ญ์ œ
- set null : ๋ถ€๋ชจ ์‚ญ์ œ์‹œ ๋„๊ฐ’
- set default : ๋ถ€๋ชจ ์‚ญ์ œ์‹œ ํ•ด๋‹น ํ•„๋“œ default
- restrict : ์ž๋…€ ํ…Œ์ด๋ธ”์— PK ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๋งŒ ๋ถ€๋ชจ์‚ญ์ œ ๊ฐ€๋Šฅ
- not action : ์ฐธ์กฐ๋ฌด๊ฒฐ์„ฑ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์‚ญ์ œ/์ˆ˜์ • ๋ถˆ๊ฐ€
[insert]์˜ ๊ฒฝ์šฐ
- automatic : ๋ถ€๋ชจํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ PK๋จผ์ € ์ƒ์„ฑ ํ›„ ์ž๋…€ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ
- set null : ๋ถ€๋ชจํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์ž๋…€๊ฐ’์—” ๋„๊ฐ’
- set default : ๋ถ€๋ชจํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ž๋…€๊ฐ’์—” ๊ธฐ๋ณธ๊ฐ’
- dependent : ๋ถ€๋ชจํ…Œ์ด๋ธ”์— PK๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋ถˆ๊ฐ€(์กด์žฌํ• ๋•Œ๋งŒ ์ž…๋ ฅ๊ฐ€๋Šฅ)
- not action : ์ฐธ์กฐ๋ฌด๊ฒฐ์„ฑ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์‚ญ์ œ/์ˆ˜์ • ๋ถˆ๊ฐ€
 
2. SQL SERVER
ALTER TABLE ํ…Œ์ด๋ธ” ๋ช… ALTER (์ปฌ๋Ÿผ๋ช…1 ๋ฐ์ดํ„ฐ์œ ํ˜• [DEFAULT ์‹] [NOT NULL])

๐ŸŽˆํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์ฃผ์˜์‚ฌํ•ญ
1. ํ…Œ์ด๋ธ”๋ช…์„ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹จ์ˆ˜ํ˜•์„ ๊ถŒ๊ณ ํ•œ๋‹ค
2. ํ…Œ์ด๋ธ”๋ช…์€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„๊ณผ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค
3. ํ•œ ํ…Œ์ด๋ธ” ๋‚ด์—์„œ๋Š” ์ปฌ๋Ÿผ๋ช…์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค
4. ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ๊ฐ ์ปฌ๋Ÿผ๋“ค์€"( )"๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด ์ง€์ •ํ•œ๋‹ค
5. ๊ฐ ์ปฌ๋Ÿผ๋“ค์€ ์ฝค๋งˆ ","๋กœ ๊ตฌ๋ถ„๋˜๊ณ , ํ…Œ์ด๋ธ” ์ƒ์„ฑ๋ฌธ์˜ ๋์€ ์„ธ๋ฏธ์ฝœ๋ก  ; ์œผ๋กœ ๋๋‚œ๋‹ค
์นผ๋Ÿผ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊นŒ์ง€ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๋‚ด์—์„œ๋Š” ์ผ๊ด€์„ฑ์žˆ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค(๋ฐ์ดํ„ฐ ํ‘œ์ค€ํ™”)
6. ์นผ๋Ÿผ ๋’ค์— ๋ฐ์ดํ„ฐ์œ ํ˜•์€ ๊ผญ ์ง€์ •๋˜์–ด์•ผ ํ•œ๋‹ค
7. ํ…Œ์ด๋ธ”๋ช…๊ณผ ์นผ๋Ÿผ๋ช…์€ ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด, ๋ฒค๋”๋ณ„๋กœ ๊ธธ์ด์— ๋Œ€ํ•œ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค
8. ๋ฒค๋”์—์„œ ์‚ฌ์ „์— ์ •์˜ํ•œ ์˜ˆ์•ฝ์–ด๋Š” ์“ธ ์ˆ˜์—†๋‹ค
9. A-Z, a-z, 0-9,_,$,# ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๐ŸŽˆํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋ฐฉ๋ฒ•
1. INSERT INTO ํ…Œ์ด๋ธ”๋ช… (COLUMN LIST) VALUES (COLUMN LIST์— ๋„ฃ์„ ๋ฐ์ดํ„ฐ ๋“ค)
2. INSERT INTO ํ…Œ์ด๋ธ”๋ช… VALUES (COLUMN ์ˆœ์„œ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ ๋“ค)
-> ์‚ฝ์ž…์ปฌ๋Ÿผ์„ ๋ช…์‹œํ•˜์ง€ ์•Š์„๋•Œ๋Š” ๊ผญ ๋ชจ๋“  ์ปฌ๋Ÿผ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค

๐ŸŽˆ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ •
UPDATE ํ…Œ์ด๋ธ”๋ช… SET ์ˆ˜์ •๋˜์–ด์•ผ ํ•  ์ปฌ๋Ÿผ๋“ค(=์ž…๋ ฅ๋˜๋Š” ์ƒˆ๋กœ์šด ๊ฐ’)

๐ŸŽˆ๋ถˆํ•„์š”ํ•œ ์นผ๋Ÿผ ์‚ญ์ œ
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN

๐ŸŽˆTURNCATE TABLE
ํ…Œ์ด๋ธ” ์ž์ฒด๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ํ•ด๋‹น ํ…Œ์ด๋ธ”์— ๋“ค์–ด์žˆ๋˜ ๋ชจ๋“  ํ–‰๋“ค์ด ์ œ๊ฑฐ๋˜๊ณ  ์ €์žฅ๊ณต๊ฐ„์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ
ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” DROP TABLE์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค

 

 

1. ์ œ์•ฝ์กฐ๊ฑด ์ƒ์„ฑ

produce ํ…Œ์ด๋ธ” ์ œ์•ฝ ์กฐ๊ฑด

- ๊ธฐ๋ณธํ‚ค : prod_id : varchar2(10) not null

- prod_nm : varchar2(100) not null

- reg_dt : date not null

- regr_no : number(10) null

CREATE TABLE PRODUCT #PRODUCT ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ
(PROD_ID VARCHAR2(10) NOT NULL,
PROD_NM VARCHAR2(100) NOT NULL,
REG_DT DATE NOT NULL,
REGR_NO NUBER(10),
CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID)); #PROD_ID๋ฅผ ๊ณ ์œ ํ‚ค๋กœ PRODUCT_PK์ด๋ฆ„์˜ ์ œ์•ฝ์กฐ๊ฑด ๋งŒ๋“ค๊ธฐ

 

2. ์ œ์•ฝ์กฐ๊ฑด ๋ณ€๊ฒฝ ver. SQL server 

(๊ธฐ๊ด€๋ถ„๋ฅ˜) 
๋ถ„๋ฅ˜ID : varchar(10) not null
(๊ธฐ๊ด€๋ถ„๋ฅ˜)
๋ถ„๋ฅ˜ID : varchar(10) not null
๋ถ„๋ฅ˜๋ช… : varchar(10) not null
๋“ฑ๋ก์ผ์ž : varchar(10) null
๋ถ„๋ฅ˜๋ช… : varchar(30) not null
๋“ฑ๋ก์ผ์ž : varchar(10) not null
ALTER TABLE ๊ธฐ๊ด€๋ถ„๋ฅ˜ ALTER COLUMN ๋ถ„๋ฅ˜๋ช… VARCHAR(30) NOT NULL;
#๊ธฐ๊ด€๋ถ„๋ฅ˜์˜ ํ…Œ์ด๋ธ”์˜ ๋ถ„๋ฅ˜๋ช… ์ปฌ๋Ÿผ์„ ๋ฐ”๊ฟ€๊บผ์•ผ, VARCHAR(30) NOT NULL
ALTER TABLE ๊ธฐ๊ด€๋ถ„๋ฅ˜ ALTER COLUMN ๋“ฑ๋ก์ผ์ž DATE NOT NULL

 

๊ฐ ์ปฌ๋Ÿผ๋ณ„ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•จ

์ด์ „ not null์˜ ์ œ์•ฝ์กฐ๊ฑด์„ ์œ ์ง€ํ•œ๋‹ค๊ณ  ํ•ด๋„ ํ•œ๋ฒˆ๋” ์ง€์ •ํ•ด ์ค˜์•ผ ํ•จ

 

3. ์™ธ๋ž˜ํ‚ค

  • ํ…Œ์ด๋ธ”์ƒ์„ฑ์‹œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์™ธ๋ž˜ํ‚ค ๊ฐ’์€ ๋„ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค
  • ํ•œ ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜ ์ด์ƒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์™ธ๋ž˜ํ‚ค ๊ฐ’์€ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์ œ์•ฝ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค

4. ์™ธ๋ž˜ํ‚ค์˜ ๋ถ€๋ชจํ…Œ์ด๋ธ”(๊ธฐ๋ณธํ‚ค) ์‚ญ์ œ์กฐ๊ฑด -> ์ž์‹ํ…Œ์ด๋ธ” ๋ฐ˜์˜

  • REFERENCE ์ฐธ์กฐํ•  ์™ธ๋ถ€ํ‚ค ON DELET  + ~~~
  • Cascade : ๋ถ€๋ชจ์‚ญ์ œ์‹œ ์ž์‹๋„ ๊ฐ™์ด ์‚ญ์ œ
  • set null : ๋ถ€๋ชจ ์‚ญ์ œ์‹œ ์ž์‹์€ ํ•ด๋‹น ํ•„๋“œ ๋„๊ฐ’
  • set default : ๋ถ€๋ชจ ์‚ญ์ œ์‹œ ์ž์‹์€ ํ•ด๋‹น ํ•„๋“œ default
  • restrict : ์ž์‹ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธํ‚ค๊ฐ’์ด ์—†๋Š”๊ฒฝ์šฐ๋งŒ ๋ถ€๋ชจํ‚ค ์‚ญ์ œ(์ผ๋ถ€๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ)
  • no action : ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์‚ญ์ œ/์ˆ˜์ • ์•ก์…˜์„ ์ทจํ•˜์ง€ ์•Š์Œ

 

5. ์™ธ๋ž˜ํ‚ค์˜ ์ž์‹ํ…Œ์ด๋ธ”(๊ธฐ๋ณธํ‚ค) ์ถ”๊ฐ€์กฐ๊ฑด -> ๋ถ€๋ชจํ…Œ์ด๋ธ” ๋ฐ˜์˜

  • Automatic : ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์—์„œ ๊ธฐ๋ณธํ‚ค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋ถ€๋ชจํ‚ค์—์„œ ์ƒ์„ฑ ํ›„ ์ž์‹ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ
  • set null : ๋ถ€๋ชจํ…Œ์ด๋ธ”์—์„œ ๊ธฐ๋ณธํ‚ค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ž์‹ ์™ธ๋ถ€ํ‚ค๋ฅผ ๋„๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ
  • ser default : ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธํ‚ค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ž์‹ ์™ธ๋ถ€ํ‚ค๋ฅผ ์ง€์ •๋œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ž…๋ ฅ
  • dependent : ๋ถ€๋ชจํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธํ‚ค๊ฐ€ ์กด์žฌํ•  ๋•Œ๋งŒ ์ž์‹ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ
  • no action : ์ฐธ์กฐ๋ฌด๊ฒฐ์„ฑ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์•ก์…˜์„ ์ทจํ•˜์ง€ ์•Š์Œ

 

6. DELET, TURNCATE, DROP ๋ช…๋ น

  • DROP ๋ช…๋ น์–ด๋Š” ํ…Œ์ด๋ธ” ์ •์˜ ์ž์ฒด๋ฅผ ์‚ญ์ œํ•˜๊ณ , TRUNCATE ๋ช…๋ น์–ด๋Š” ํ…Œ์ด๋ธ”์„ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค
  • TURNCATE ๋ช…๋ น์–ด๋Š” UNDO๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผ ๋ฐ์ดํ„ฐ๋Ÿ‰ ์‚ญ์ œ์‹œ DELET๋ณด๋‹ค ๋น ๋ฅด๋‹ค
  • DROP ๊ณผ TURNCATE๋Š” auto commit๋˜๊ณ , DELETE๋Š” ์‚ฌ์šฉ์ž COMMIT์œผ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค
DROP  TURNCATE DELETE
DDL DDL(์ด์ง€๋งŒ DML ์„ฑ๊ฒฉ๋„ ์žˆ์Œ) DML
ROLLBACK ๋ถˆ๊ฐ€๋Šฅ -> auto commit ROLLBACK ๋ถˆ๊ฐ€๋Šฅ -> auto commit ROLLBACK ๊ฐ€๋Šฅ
ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ Storage ๋ชจ๋‘ release ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜ storage ์ค‘ ์ตœ์ดˆ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์ด ํ• ๋‹น๋œ storage ๋งŒ ๋‚จ๊ธฐ๊ณ  release  release ๋ถˆ๊ฐ€
ํ…Œ์ด๋ธ”์˜ ์ •์˜ ์ž์ฒด๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œ ํ…Œ์ด๋ธ”์„ ์ตœ์ดˆ ์ƒ์„ฑ๋œ ์ดˆ๊ธฐ์ƒํƒœ๋กœ ๋งŒ๋“ฆ ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œ
๐ŸŽˆํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง• -> ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ์—ฐ์‚ฐ๋‹จ์œ„
1. ์›์ž์„ฑ = ํŠธ๋žœ์žญ์…˜์—์„œ ์ •์˜๋œ ์—ฐ์‚ฐ๋“ค์€ ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋“ ์ง€ ์•„๋‹ˆ๋ฉด ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•œ๋‹ค
2. ์ผ๊ด€์„ฑ = ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๊ธฐ ์ „์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์šฉ์ด ์ž˜๋ชป๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ํŠธ๋žœ์žญ์…˜ ํ›„์—๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์— ์ž˜๋ชป์ด ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค
3. ๊ณ ๋ฆฝ์„ฑ = ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค
4. ์ง€์†์„ฑ = ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ทธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์€ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค

๐ŸŽˆROLLBACK
๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ทจ์†Œ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ์ด์ „ ์ƒํƒœ๋กœ ๋ณต๊ท€๋˜๋ฉฐ, ๊ด€๋ จ๋œ ํ–‰์— ๋Œ€ํ•œ ์ž ๊ธˆ์ด ํ’€๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค
-> ํ…Œ์ด๋ธ” ๋‚ด ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋‚˜, ์ˆ˜์ •ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•˜์—ฌ commit ์ด์ „์—๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ

๐ŸŽˆBEGIN TRANSACTION(TRAN)
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ์—ฐ์‚ฐ๋‹จ์œ„
ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  ์ปค๋ฐ‹ ๋˜๋Š” ๋กค๋ฐฑ์œผ๋กœ ์ข…๋ฃŒํ•œ๋‹ค.
๋กค๋ฐฑ๊ตฌ๋ฌธ์„ ๋งŒ๋‚˜๋ฉด ์ตœ์ดˆ์˜ begin transaction์‹œ์ ๊นŒ์ง€ rollback์ด ์ˆ˜ํ–‰๋œ๋‹ค

๐ŸŽˆ์ €์žฅ์ savepoint
์ •์˜ํ•˜๋ฉด ๋กค๋ฐฑํ•  ๋•Œ ํŠธ๋žœ์žญ์…˜์— ํฌํ•จ๋œ ์ „์ฒด ์ž‘์—…์„ ๋กค๋ฐฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ˜„ ์‹œ์ ์—์„œ ์ €์žฅ์ ๊นŒ์ง€ ํŠธ๋žœ์žญ์…˜์˜ ์ผ๋ถ€๋งŒ ๋กค๋ฐฑ๊ฐ€๋Šฅ
[ORACLE]
savepoint svpt1 ;
rollback to svpt1 ;

[SQL server]
save transaction svpt1;
rollback transaction svpnt1;

๐ŸŽˆTOP(n) with ties ์ปฌ๋Ÿผ
select top(2) with ties enmane, sal
from emp
order by sal desc
-> empํ…Œ์ด๋ธ”์—์„œ sal ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ƒ์œ„ 2๊ฐœ์˜ enmane๊ณผ sal ์ถœ๋ ฅ
* ๋™์ ์ด ์žˆ์„ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ถœ๋ ฅ

 

 

1. ์˜ค๋ผํด๊ณผ SQL server์˜ ROLLBACK

์ตœ์ข… val์˜ ID 100์˜ ๊ฐ’์ด ์˜ค๋ผํด์—์„œ๋Š” 200, server์—์„œ๋Š” 100์œผ๋กœ ์ถœ๋ ฅ

ID(PK) VAL
001 100
002 200
UPDATE A SET VAL = 200 WHERE ID ='001';
CREATE TABLE B (ID CHAR(3) PRIMARY KEY);
ROLLBACK;

 

  • ์˜ค๋ผํด์—์„œ๋Š” DDL๋ฌธ์žฅ ์ˆ˜ํ–‰ ์ˆ˜ ์ž๋™์ปค๋ฐ‹๋œ๋‹ค 
  • SQL server์—์„œ๋Š” DDL๋ฌธ์žฅ์ˆ˜ํ–‰ ํ›„ ์ž๋™์ปค๋ฐ‹๋˜์ง€ ์•Š๋Š”๋‹ค
  • ์˜ค๋ผํด์—์„œ DDL์ˆ˜ํ–‰์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ์ข…๋ฃŒํ•˜๋ฏ€๋กœ Bํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋œ๋‹ค
  • SQL server์—์„œ CREAT TABLE ๋ฌธ์žฅ๋„ TRANSACTION์˜ ๋ฒˆ์ฃผ์— ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ROLLBACK๋ฌธ์žฅ์— ์˜ํ•ด์„œ ์ตœ์ข…์ ์œผ๋กœ Bํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š”๋‹ค

 

์ถœ์ฒ˜ : https://hobbylists.tistory.com/entry/SQL๋ฌธ๋ฒ•-3์ข…๋ฅ˜-์งง๊ณ -๊ตต๊ฒŒ-์ •๋ฆฌ-DDL-DML-DCL