๐Ÿ’ผ ์ž๊ฒฉ์ฆ/SQLD

[SQLD] SQL๊ธฐ๋ณธ&ํ™œ์šฉ : ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์š”, DDL, DML, DCL, TCL

์—ฐ_์šฐ๋ฆฌ 2021. 11. 6. 15:13
๋ฐ˜์‘ํ˜•

 

https://lotuus.tistory.com/42

 

[SQLD] 21.11.20 ์ œ43ํšŒ SQL๊ฐœ๋ฐœ์ž ํ›„๊ธฐ, ๊ณต๋ถ€๋ฐฉ๋ฒ•, ์ •๋ฆฌ๋ณธ, 43ํšŒ ์ถœ์ œ๋ฌธ์ œ

2021๋…„ 11์›” 20์ผ ํ† ์š”์ผ ์ œ43ํšŒ SQL๊ฐœ๋ฐœ์ž ์ž๊ฒฉ์ฆ ์‹œํ—˜ ํ›„๊ธฐ ์˜ค๋Š˜ ๋ณด๊ณ ์™”๋‹ค! ๋‚ด ๊ณต๋ถ€๋ฐฉ๋ฒ•๊ณผ ์ •๋ฆฌ๋ณธ, ์ด๋ฒˆ์— ์‹œํ—˜์— ์ถœ์ œ๋œ ๋ฌธ์ œ๋“ค์„ ๊ธฐ์–ต๋‚˜๋Š”๋Œ€๋กœ ์ ์–ด๋ณด๊ฒ ๋‹ค ๊ฐœ์ธ์ ์œผ๋กœ ๊ธฐ์ถœ์ด๋‚˜ ๋ณต์›๋œ ๋ฌธ์ œ๊ฐ€

lotuus.tistory.com

 

[๋ชฉ์ฐจ]

๐Ÿ’š๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์š”

     ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

     DBMS

     SQL

     TABLE ํ…Œ์ด๋ธ”

๐Ÿ’š๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ ์ œ์•ฝ์กฐ๊ฑด

๐Ÿ’šDDL

๐Ÿ’šDML

๐Ÿ’šDCL

     ROLE : ๊ถŒํ•œ๋“ค์˜ ์ง‘ํ•ฉ

     Oracle ๊ธฐ๋ณธ์ œ๊ณต ROLE

๐Ÿ’šTCL

    ํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ ACID

    ํŠธ๋žœ์žญ์…˜ ์ด์ „/์ดํ›„ ๋ฐ์ดํ„ฐ ์ƒํƒœ

    Oracle๊ณผ SQL Server์˜ DDL, DML ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฐฉ์‹


๐Ÿ’š๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์š”

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

ํŠน์ • ๊ธฐ์—…, ์กฐ์ง์ด ํ•„์š”๋กœํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ •ํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด ๋†“์€ ๊ฒƒ

 

DBMS

๋ฐ์ดํ„ฐ ๋งŽ์•„์ง€๊ณ  ๊ณต์œ ๋˜๋ฉด์„œ ๋‹จ์ˆœ ์†Œํ”„ํŠธ์›จ์–ด๋งŒ(ex. ์—‘์…€)์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ์— ํ•œ๊ณ„ ๋ฐœ์ƒ.

ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ „์šฉ ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค.

 

ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

 

SQL

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜, ์กฐ์ž‘, ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด

๋ฐ์ดํ„ฐ ์ •์˜ DDL ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(ํ…Œ์ด๋ธ”)๋ฅผ ์ •์˜ํ•œ๋‹ค. create, alter, drop, rename, truncate
๋ฐ์ดํ„ฐ ์กฐ์ž‘ DML ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๋‹ค๋ฃฌ๋‹ค. select, insert, update, delete
๋ฐ์ดํ„ฐ ์ œ์–ด DCL ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๊ถŒํ•œ์„ ๋‹ค๋ฃฌ๋‹ค. grant, revoke
ํŠธ๋žœ์ ์…˜ ์ œ์–ด์–ด TCL ํŠธ๋žœ์žญ์…˜์„ ์ œ์–ดํ•œ๋‹ค. commit, rollback

 

TABLE ํ…Œ์ด๋ธ” (๋ฐ์ดํ„ฐ ๊ตฌ์กฐ)

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด(Object)๋กœ์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ๋‹จ์œ„์ด๋‹ค.

ํ…Œ์ด๋ธ”์€ ํŠน์ • ์ฃผ์ œ์™€ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์ง‘ํ•ฉ(ํ‘œ)์ด๋‹ค.

ํ…Œ์ด๋ธ”์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜ ์ด์ƒ์˜ ์นผ๋Ÿผ(์†์„ฑ)์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

๊ฐ€๋กœ = ํ–‰ = ROW(๋กœ์šฐ) = ์†์„ฑ
์„ธ๋กœ = ์—ด = Column(์นผ๋Ÿผ) = ๋ฐ์ดํ„ฐ 1์ค„
์‹๋ณ„์ž ๊ธฐ๋ณธํ‚ค Primary key ๊ฐ ํ–‰์„ ํŠน์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์นผ๋Ÿผ(์†์„ฑ)
์™ธ๋ถ€ํ‚ค Foreign key ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค์™€ ๋‚ด ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋Š” ์นผ๋Ÿผ(์†์„ฑ)

 

 

๐Ÿ’š ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ ์ œ์•ฝ์กฐ๊ฑด

๋ฐ์ดํ„ฐํƒ€์ž… DATA TYPE

๋ฐ์ดํ„ฐ๋Š” ํŠน์ • ์นผ๋Ÿผ(์†์„ฑ)์ด ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ์˜ ์œ ํ˜•์„ ์ €์žฅํ•ด์•ผํ•œ๋‹ค.

  Oracle SQL Server
๊ณ ์ • ๊ธธ์ด ๋ฌธ์ž์—ด CHAR(๊ธธ์ด)
๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด VARCHAR2(๊ธธ์ด) VARCHAR(๊ธธ์ด)
์ •์ˆ˜, ์‹ค์ˆ˜ ๋“ฑ์˜ ์ˆซ์ž NUMBER int, float
๋‚ ์งœ, ์‹œ๊ฐ„ DATE DATETIME

CHAR์€ ๊ณต๋ฐฑ์„ ์ฒดํฌํ•˜์ง€ ์•Š๋Š”๋‹ค. => 'AA' = 'AA '

VARCHAR2๋Š” ๊ณต๋ฐฑ์„ ์ฒดํฌํ•œ๋‹ค. => 'AA' ≠ 'AA '

 

์ œ์•ฝ์กฐ๊ฑด CONSTRAINT

ํŠน์ • ์นผ๋Ÿผ์— ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์กฐ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ œ์•ฝ์ด๋‹ค.

PRIMARY KEY (๊ธฐ๋ณธํ‚ค) UNIQUE + NOT NULL
FOREIGN KEY (์™ธ๋ž˜ํ‚ค)
ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
UNIQUE ์ค‘๋ณต๋œ ๊ฐ’์ด ์ €์žฅ๋˜๋ฉด ์•ˆ๋œ๋‹ค. + NULL ๊ฐ€๋Šฅ
CHECK(์กฐ๊ฑด์‹)
์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ๋ฒ”์œ„ ๋“ฑ์„ ์ œํ•œํ•œ๋‹ค. 
DEFAULT ๊ฐ’ ๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์ „์— ์„ค์ •ํ•œ๋‹ค.
NOT NULL NULL ๊ธˆ์ง€
CREATE TABLE ํ…Œ์ด๋ธ”๋ช…(
	์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• PRIMARY KEY,                       -- PRIMARY KEYโ˜…
	์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• REFERENCES ๋‹ค๋ฅธํ…Œ์ด๋ธ”๋ช…(์นผ๋Ÿผ๋ช…),     -- FOREIGN KEYโ—†
	์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• UNIQUE,                            -- UNIQUE
	์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• CHECK(์นผ๋Ÿผ๋ช…>=100 AND ์นผ๋Ÿผ๋ช…<300),  -- CHECK
	์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• DEFAULT 'Y',                       -- DEFAULT
	์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• NOT NULL,                          -- NOT NULL
    
	์นผ๋Ÿผ๋ช… ๋ฐ์ดํ„ฐ์œ ํ˜• CHECK(์นผ๋Ÿผ๋ช…>200) PRIMARY KEY,      -- ์ œ์•ฝ์กฐ๊ฑด ํ˜ผํ•ฉ๊ฐ€๋Šฅ    
    
	[CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…] PRIMARY KEY(์นผ๋Ÿผ๋ช…, ์นผ๋Ÿผ๋ช…..),                       -- PRIMARY KEYโ˜…
	[CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…] FOREIGN KEY(์นผ๋Ÿผ๋ช…) REFERENCES ๋‹ค๋ฅธํ…Œ์ด๋ธ”๋ช…(์นผ๋Ÿผ๋ช…)   -- FOREIGN KEYโ—†
);

 

์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ํ™•์ธ

Oracle DESCRIBE ํ…Œ์ด๋ธ”๋ช… or DESC ํ…Œ์ด๋ธ”๋ช…
SQL Server exec sp_help 'dbo.ํ…Œ์ด๋ธ”๋ช…'

 

๋ฐ˜์‘ํ˜•

 

๐Ÿ’šDDL Data Definition Language

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ๋‹จ์œ„์ธ ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

๐Ÿ”ฅ SQL Server์—์„œ๋Š” ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์„ ๋™์‹œ์— ์ˆ˜์ •ํ•˜๋Š” ๊ตฌ๋ฌธ์€ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๋‹ค์Œ ์ค‘ ์•„๋ž˜์„ค๋ช…๊ณผ ๊ฐ™์€ ํ…Œ์ด๋ธ” ๋ฐ PK์ œ์•ฝ์กฐ๊ฑด์„ ์ƒ์„ฑํ•˜๋Š” DDL๋ฌธ์žฅ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์€? (ORACLE ๊ธฐ์ค€)
PRODUCTํ…Œ์ด๋ธ”
PROD_ID : VARCHAR2(10) NOT NULL
PROD_NM : VARCHAR2(100) NOT NULL
REG_DT : DATE NOT NULL
REGR_NO : NUMBER(10) NULL

1) CREATE TABLE PRODUCT (
   PROD_ID VARCHAR2(10) NOT NULL,
   PROD_NM VARCHAR2(100) NOT NULL,
   REG_DT DATE NOT NULL,
   REGR_NO NUMBER(10) NULL
);
ALTER TABLE PRODUCT ADD PRIMARY KEY PRODUCT_PK ON(PROD_ID);
2) CREATE TABLE PRODUCT(
   PROD_ID VARCHAR2(10),
   PROD_NM VARCHAR2(100),
   REG_DT DATE,
   REGR_NO NUMBER(10)
);
ALTER TABLE PRODUCT ADD CONSTRAINT PRODUCT_PK PRIMARY KEY(PROD_ID);
3) CREATE TABLE PRODUCT(
   PROD_ID VARCHAR2(10) NOT NULL,
   PROD_NM VARCHAR2(100) NOT NULL,
   REG_DT DATE NOT NULL,
   REGR_NO NUMBER(10) NULL,
   ADD CONSTRAINT PRIMARY KEY(PROD_ID)
);
4) CREATE TABLE PRODUCT(
   PROD_ID VARCHAR2(10) NOT NULL,
   PROD_NM VARCHAR2(100) NOT NULL,
   REG_DT DATE NOT NULL,
   REGR_NO NUMBER(10),
);

=> ์ •๋‹ต์€ 4๋ฒˆ

 

[๊ธฐ๊ด€๋ถ„๋ฅ˜] ํ…Œ์ด๋ธ”

๋ถ„๋ฅ˜ID : VARCHAR(10) PRIMARY KEY

๋ถ„๋ฅ˜๋ช… : VARCHAR(10) NOT NULL -> VARCHAR(30) NOT NULL

๋“ฑ๋ก์ผ์ž : VARCHAR(10) NULL -> DATE NOT NULL

์œ„์™€ ๊ฐ™์ด ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ, ์˜ฌ๋ฐ”๋ฅธ SQL๋ฌธ์žฅ์€?(SQL Server๊ธฐ์ค€)

 

1) ALTER TABLE ๊ธฐ๊ด€๋ถ„๋ฅ˜ ALTER COLUMN(๋ถ„๋ฅ˜๋ช… VARCHAR(30), ๋“ฑ๋ก์ผ์ž DATE NOT NULL);

2) ALTER TABLE ๊ธฐ๊ด€๋ถ„๋ฅ˜ ALTER COLUMN(๋ถ„๋ฅ˜๋ช… VARCHAR(30) NOT NULL, ๋“ฑ๋ก์ผ์ž DATE NOT NULL);

3) ALTER TABLE ๊ธฐ๊ด€๋ถ„๋ฅ˜ ALTER COLUMN ๋ถ„๋ฅ˜๋ช… VARCHAR(30); ALTER TABLE ๊ธฐ๊ด€๋ถ„๋ฅ˜ ALTER COLUMN ๋“ฑ๋ก์ผ์ž DATE NOT NULL;

4) ALTER TABLE ๊ธฐ๊ด€๋ถ„๋ฅ˜ ALTER COLUMN ๋ถ„๋ฅ˜๋ช… VARCHAR(30) NOT NULL; ALTER TABLE ๊ธฐ๊ด€๋ถ„๋ฅ˜ ALTER COLUMN ๋“ฑ๋ก์ผ์ž DATE NOT NULL;

=> ์ •๋‹ต์€ 4๋ฒˆ

 

 

 

๐Ÿ’šDML Data Manipulation Language

ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ, ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

** INSERT INTO ํ…Œ์ŠคํŠธํ…Œ์ด๋ธ” VALUES("");

์˜ค๋ผํด์€ ""์„ NULL๋กœ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ SQL Server๋Š” "" ๊ทธ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

๐Ÿ’šDCL Data Control Language

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ €๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ถŒํ•œ์„ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

ROLE : ๊ถŒํ•œ๋“ค์˜ ์ง‘ํ•ฉ

์œ ์ €๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ SESSION, TABLE, PROCEDURE ๋“ฑ์˜ ๋งŽ์€ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผํ•œ๋‹ค.

์œ ์ €์™€ ๊ถŒํ•œ ์‚ฌ์ด์— ROLE์„ ์ƒ์„ฑํ•˜๊ณ , ์ด ROLE์„ ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ๋งŽ์€ ๊ถŒํ•œ์„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

 

Oracle ๊ธฐ๋ณธ์ œ๊ณต ROLE

CONNECT ๋กœ๊ทธ์ธ ๊ถŒํ•œ (EX. CREATE SESSION...)
RESOURCE ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ ๊ถŒํ•œ (EX. CREATE TABLE...)

 

๐Ÿ’š TCL Transaction Control Language

ํŠธ๋žœ์žญ์…˜์€ ๋ถ„๋ฆฌ๋  ์ˆ˜ ์—†๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. 

๋ถ„ํ• ํ•  ์ˆ˜ ์—†๋Š” ์ตœ์†Œ์˜ ๋‹จ์œ„์ด๊ธฐ๋•Œ๋ฌธ์— ์ „๋ถ€ ์ ์šฉ๋˜๊ฑฐ๋‚˜ ์ „๋ถ€ ์ทจ์†Œ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

ํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ ACID

์›์ž์„ฑ Atomicity ํŠธ๋žœ์žญ์…˜์€ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š๊ณ  ์ „๋ถ€ ์ ์šฉ๋˜๊ฑฐ๋‚˜ ์ „๋ถ€ ์ทจ์†Œ๋˜์–ด์•ผ ํ•œ๋‹ค.
์ผ๊ด€์„ฑ Consistency ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ „์— ์˜ค๋ฅ˜๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด ์‹คํ–‰ ํ›„์—๋„ ์˜ค๋ฅ˜๊ฐ€ ์—†์–ด์•ผํ•œ๋‹ค.
๊ณ ๋ฆฝ์„ฑ Isolation ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ๋„์ค‘์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€์•Š๋Š”๋‹ค.
 * ์ž ๊ธˆ(LOCKING) : ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ๋„์ค‘ ๋ฐ์ดํ„ฐ์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œํ•œํ•˜๋Š” ๊ฒƒ
์ง€์†์„ฑ Durability ํŠธ๋žœ์žญ์…˜์— ์„ฑ๊ณตํ•œ ๋‚ด์šฉ์€ DB์— ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

 

ํŠธ๋žœ์žญ์…˜ ์ด์ „/์ดํ›„ ๋ฐ์ดํ„ฐ ์ƒํƒœ

์ด์ „ ์ดํ›„
- ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์—๋งŒ ์˜ํ–ฅ์„ ๋ฐ›์•˜๊ธฐ๋•Œ๋ฌธ์— ์ด์ „์ƒํƒœ๋กœ ๋ณต๊ตฌ ๊ฐ€๋Šฅ
- ํ˜„์žฌ ์‚ฌ์šฉ์ž๋Š” select๋ฌธ์žฅ์œผ๋กœ ๊ฒฐ๊ณผ ํ™•์ธ ๊ฐ€๋Šฅ
๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ๊ธฐ์กด์˜ ๊ฒฐ๊ณผ(๋ณ€๊ฒฝ์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์€) ํ™•์ธ ๊ฐ€๋Šฅ
- ๋ณ€๊ฒฝ๋œ ํ–‰์€ ์ž ๊ธˆ(LOCKING)์ด ์„ค์ •๋˜์–ด ๋‹ค๋ฅธ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผ ๋ถˆ๊ฐ€
- DB์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋œ๋‹ค.
- ๋ณ€๊ฒฝ ์ „์˜ ๋ฐ์ดํ„ฐ๋Š” ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ๋œ๋‹ค.
- ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ€๊ฒฝ์ด ๋ฐ˜์˜๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
- ๋ณ€๊ฒฝ๋œ ํ–‰์˜ ์ž ๊ธˆ(LOCKING)์ด ํ’€๋ฆฌ๊ณ  ๋‹ค๋ฅธ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Oracle ๊ณผ SQL Server์˜ DDL, DML ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฐฉ์‹

  Oracle SQL Server
DDL
(create, alter, rename,
drop, truncate)
์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ๋•Œ๋ฌธ์— ์ฆ‰์‹œ ์™„๋ฃŒ๋œ๋‹ค.(AUTO COMMIT)

Auto Commit = false๋กœ ์„ค์ • ๋ถˆ๊ฐ€ํ•˜๋‹ค.
์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ๋•Œ๋ฌธ์— ์ฆ‰์‹œ ์™„๋ฃŒ๋œ๋‹ค.(AUTO COMMIT)

Auto Commit = false๋กœ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค.
DML
(insert, update, delete)
๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ์˜ฌ๋ ค๋†“๊ณ  ์ž‘์—…ํ•˜๊ธฐ๋•Œ๋ฌธ์—
์‚ฌ์šฉ์ž๊ฐ€ COMMIT, ROLLBACK ๋ช…๋ น์–ด๋ฅผ
์ง์ ‘ ์ž…๋ ฅํ•ด์•ผ๋งŒ ๋ฐ˜์˜
๋œ๋‹ค.
DML๋„ ์ฆ‰์‹œ ์™„๋ฃŒ๋œ๋‹ค. (AUTO COMMIT)
์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž๋™ ROLLBACK ์ฒ˜๋ฆฌ๋œ๋‹ค.

Auto Commit = false๋กœ ์„ค์ • ๊ฐ€๋Šฅํ•˜๋‹ค.

 

AUTO COMMIT ์•”์‹œ์  ํŠธ๋žœ์žญ์…˜ ๋ช…์‹œ์  ํŠธ๋žœ์žญ์…˜
SQL Server์˜ ๊ธฐ๋ณธ๋ฐฉ์‹
DDL, DML ์ˆ˜ํ–‰ ์‹œ DBMS๊ฐ€ ์ž๋™์œผ๋กœ COMMITํ•˜๊ณ , ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ROLLBACK ์ˆ˜ํ–‰ํ•œ๋‹ค.
Oracle์˜ ๊ธฐ๋ณธ๋ฐฉ์‹
DDL์€ AUTO COMMIT์ด์ง€๋งŒ
DML์€ ์‚ฌ์šฉ์ž๊ฐ€ COMMIT, ROLLBACK ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.
ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘๊ณผ ๋์„ ๋ชจ๋‘ ๋ช…์‹œํ•œ๋‹ค.

BEGIN TRANSACTION
   ๋ช…๋ น๋ฌธ;
COMMIT or ROLLBACK;

 

 

๋ฐ˜์‘ํ˜•
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ํŠธ์œ„ํ„ฐ ๊ณต์œ ํ•˜๊ธฐ
  • ๊ตฌ๊ธ€ ํ”Œ๋Ÿฌ์Šค ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜คํ†ก ๊ณต์œ ํ•˜๊ธฐ