[Oracle SQL] DDL/DML/TCL/DCL ๋ณต์Šต ์ •๋ฆฌ]

2025. 6. 26. 17:47ใ†DB

[๐Ÿ“Œ Oracle SQL DDL/DML/TCL/DCL ๋ณต์Šต ์ •๋ฆฌ]

์ด๋ฒˆ ์‹ค์Šต์€ ํ…Œ์ด๋ธ” ์‚ญ์ œ, ์ƒ์„ฑ๋ถ€ํ„ฐ DML(์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ), ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด(TCL), ๊ถŒํ•œ ์ œ์–ด์–ด(DCL)๊นŒ์ง€ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ๋‹ค์‹œ ๋ณต์Šตํ•˜๋Š” ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ROLE ๊ฐœ๋…์€ ์ด๋ฒˆ์— ์ฒ˜์Œ ์ ‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ๋” ์ง‘์ค‘ํ•ด์„œ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”ง 1. ํ…Œ์ด๋ธ” ์‚ญ์ œ ๋ฐ ์ƒ์„ฑ

-- ํ…Œ์ด๋ธ” ์‚ญ์ œ
DROP TABLE ํ…Œ์ด๋ธ”๋ช… CASCADE CONSTRAINT;

-- ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ํ™•์ธ
DESC ํ…Œ์ด๋ธ”๋ช…;

-- ํ…Œ์ด๋ธ” ์ƒ์„ฑ
CREATE TABLE ์ˆ˜๊ฐ•์ƒ์ •๋ณด (
  ํ•™์ƒID VARCHAR2(9) PRIMARY KEY,
  ํ•™์ƒ์ด๋ฆ„ VARCHAR2(50) NOT NULL,
  ์†Œ์†๋ฐ˜ VARCHAR2(5)
);

CREATE TABLE ์„ฑ์ ํ‘œ (
  ํ•™์ƒID VARCHAR2(9),
  ๊ณผ๋ชฉ VARCHAR2(30),
  ์„ฑ์  NUMBER,
  CONSTRAINT PK_์„ฑ์ ํ‘œ PRIMARY KEY(ํ•™์ƒID, ๊ณผ๋ชฉ),
  CONSTRAINT FK_์„ฑ์ ํ‘œ FOREIGN KEY(ํ•™์ƒID) REFERENCES ์ˆ˜๊ฐ•์ƒ์ •๋ณด(ํ•™์ƒID)
);

โœ๏ธ 2. DML (๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ/์ˆ˜์ •/์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

  • INSERT: ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
  • UPDATE: ๋ฐ์ดํ„ฐ ์ˆ˜์ •
  • DELETE: ๋ฐ์ดํ„ฐ ์‚ญ์ œ
  • SELECT: ๋ฐ์ดํ„ฐ ์กฐํšŒ
-- ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
INSERT INTO ์ˆ˜๊ฐ•์ƒ์ •๋ณด (ํ•™์ƒID, ํ•™์ƒ์ด๋ฆ„, ์†Œ์†๋ฐ˜)
VALUES ('SMHRD1', '๋ฐ•์ง„์šฐ', 'B');

-- ๋ฐ์ดํ„ฐ ์ˆ˜์ •
UPDATE ์ˆ˜๊ฐ•์ƒ์ •๋ณด
SET ์†Œ์†๋ฐ˜ = 'C'
WHERE ํ•™์ƒ์ด๋ฆ„ LIKE '%oo';

-- ๋ฐ์ดํ„ฐ ์‚ญ์ œ
DELETE FROM ์„ฑ์ ํ‘œ
WHERE ํ•™์ƒID = 'SMHRD1';

๐Ÿ“Œ 3. TCL (ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด)

ํŠธ๋žœ์žญ์…˜์€ '์ž‘์—…์˜ ์ตœ์†Œ ๋‹จ์œ„'์ด๋ฉฐ, ํŠธ๋žœ์žญ์…˜์˜ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ช…๋ น์–ด๋“ค์ž…๋‹ˆ๋‹ค.

  • COMMIT: ์˜๊ตฌ ์ €์žฅ
  • ROLLBACK: ๋งˆ์ง€๋ง‰ COMMIT ์ง€์ ์œผ๋กœ ๋ณต๊ตฌ
  • SAVEPOINT: ์ค‘๊ฐ„ ์ €์žฅ ์ง€์  ์„ค์ •
COMMIT;    -- ์ž‘์—… ํ™•์ •
ROLLBACK;  -- ์ด์ „ ์ปค๋ฐ‹์œผ๋กœ ๋ณต๊ตฌ

๐Ÿ” 4. DCL (๋ฐ์ดํ„ฐ ์ œ์–ด์–ด)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์‚ฌ์šฉ์ž ๊ณ„์ •๊ณผ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•˜๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

  • GRANT: ๊ถŒํ•œ ๋ถ€์—ฌ
  • REVOKE: ๊ถŒํ•œ ํšŒ์ˆ˜
  • ROLE: ์—ฌ๋Ÿฌ ๊ถŒํ•œ์„ ๋ฌถ์–ด ๊ด€๋ฆฌ
-- ๊ณ„์ • ์ƒ์„ฑ
CREATE USER ์‚ฌ์šฉ์ž๋ช… IDENTIFIED BY ๋น„๋ฐ€๋ฒˆํ˜ธ;

-- ๊ถŒํ•œ ๋ถ€์—ฌ
GRANT CONNECT, RESOURCE TO ์‚ฌ์šฉ์ž๋ช…;

-- ๊ถŒํ•œ ํšŒ์ˆ˜
REVOKE RESOURCE FROM ์‚ฌ์šฉ์ž๋ช…;

-- ROLE์˜ ์˜ˆ์‹œ
CONNECT : ์ ‘์† ๊ถŒํ•œ
RESOURCE : ํ…Œ์ด๋ธ”, ์‹œํ€€์Šค ๋“ฑ ๊ฐ์ฒด ์ƒ์„ฑ ๊ถŒํ•œ
GRANT CREATE SESSION TO ์‚ฌ์šฉ์ž๋ช…;

๐Ÿ‘€ ROLE ๊ฐœ๋…์€ ์ด๋ฒˆ์— ์ฒ˜์Œ ์•Œ๊ฒŒ ๋œ ๊ฐœ๋…์ด๋ผ ๊ธฐ์–ต์— ๋‚จ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ถŒํ•œ์„ ํ•˜๋‚˜์˜ '๋ฌถ์Œ'์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์‹ค๋ฌด์—์„œ ๋งค์šฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


๐Ÿง  ๋งˆ๋ฌด๋ฆฌ ๋ณต์Šต ํฌ์ธํŠธ

  • DDL์€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ (CREATE, DROP)
  • DML์€ ๋ฐ์ดํ„ฐ ์กฐ์ž‘ (INSERT, UPDATE, DELETE)
  • TCL์€ ํŠธ๋žœ์žญ์…˜ ์ œ์–ด (COMMIT, ROLLBACK)
  • DCL์€ ๊ถŒํ•œ ๊ด€๋ฆฌ (GRANT, REVOKE, ROLE)

โ†’ ์ด ํ๋ฆ„์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•˜๋ฉด์„œ SQL์— ๋Œ€ํ•œ ํฐ ๊ทธ๋ฆผ์ด ๋” ๋˜๋ ทํ•ด์กŒ์Šต๋‹ˆ๋‹ค.