๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
6๏ธโƒฃ SQL/SQL ์ •๋ฆฌ

[SQL] DDL, DML, DCL, TCL ์š”์•ฝ

by seolhee2750 2022. 9. 15.

์˜ค๋Š˜์€  DDL, DML, DCL์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋“ค์— ๋Œ€ํ•˜์—ฌ ๊ฐ„๋‹จํžˆ ์š”์•ฝ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.

๋˜ํ•œ ํ‰์†Œ ํ—ท๊ฐˆ๋ ธ๋˜ DELETE, DROP, TRUNCATE์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ๋„ ํ•จ๊ป˜ ๊ธฐ๋กํ•˜๊ฒ ๋‹ค.

 

๐Ÿ“Ž SQL

๊ด€๊ณ„ํ˜• DB์—์„œ ๋ฐ์ดํ„ฐ ์ •์˜, ์กฐ์ž‘, ์ œ์–ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์ด๋‹ค.

 

SQL์˜ ๋ถ„๋ฅ˜

  • DDL (Data Define Language) : ๋ฐ์ดํ„ฐ ์ •์˜์–ด
  • DML (Data Manage Language) : ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด
  • DCL (Data Controll Language) : ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด
  • TCL (Transaction Control Language) : ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด

๐Ÿ“Ž DDL

DDL์˜ ํŠน์ง•

  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋“ฑ DB๋ฅผ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์ด๋‹ค.
  • ์Šคํ‚ค๋งˆ, ๋„๋ฉ”์ธ, ํ…Œ์ด๋ธ”, ๋ทฐ, ์ธ๋ฑ์Šค๋ฅผ ์ •์˜, ๋ณ€๊ฒฝ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฏ€๋กœ ๋ช…๋ น์–ด ์ž…๋ ฅ ์ˆœ๊ฐ„ ํ•ด๋‹นํ•˜๋Š” ์ž‘์—…์ด ์ฆ‰์‹œ ์ปค๋ฐ‹๋œ๋‹ค. (ROLLBACK ๋ถˆ๊ฐ€)

 

๋ช…๋ น์–ด

  • CREATE : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ์ฒด ์ƒ์„ฑ
  • ALTER : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
  • DROP : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ์ฒด ์‚ญ์ œ
  • TRUNCATE : ํ…Œ์ด๋ธ”์— ํ• ๋‹น๋œ ๋ ˆ์ฝ”๋“œ ์ œ๊ฑฐ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ

 

๋ช…๋ น์–ด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

[1] CREATE

CREATE TABLE ํ…Œ์ด๋ธ”๋ช… 
	(์†์„ฑ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… [DEFAULT ๊ธฐ๋ณธ๊ฐ’] [NOT NULL],
    [PRIMARY KEY (๊ธฐ๋ณธํ‚ค_์†์„ฑ๋ช…, ...)],
    [UNIQUE KEY (๋Œ€์ฒดํ‚ค_์†์„ฑ๋ช…, ...)],
    [FOREIGN KEY (์™ธ๋ž˜ํ‚ค_์†์„ฑ๋ช…, ...)]
    	REFERENCES ์ฐธ์กฐํ…Œ์ด๋ธ” (๊ธฐ๋ณธํ‚ค_์†์„ฑ๋ช…, ...)]
        [ON DELETE ์˜ต์…˜]
        [ON UPDATE ์˜ต์…˜],
    [CONSTRAINT ์ œ์•ฝ์กฐ๊ฑด๋ช…][CHECK (์กฐ๊ฑด์‹)]);

๐Ÿ‘‰ ์˜ต์…˜ ์ข…๋ฅ˜

  • NO ACTION : ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๋ณ€ํ™”๊ฐ€ ์žˆ์–ด๋„ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์—๋Š” ์˜ํ–ฅ ์—†์Œ
  • CASCADE : ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๋ณ€ํ™”๋ฅผ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ๋˜‘๊ฐ™์ด ์ ์šฉ
  • SET NULL : ์ฐธ์กฐ ํ…Œ์ด๋ธ”์— ๋ณ€ํ™” ์žˆ์„ ์‹œ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— NULL๋กœ ์ ์šฉ
  • SET DEFAULT : ์ฐธ์กฐ ํ…Œ์ด๋ธ”์— ๋ณ€ํ™” ์žˆ์„ ์‹œ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์€ DEFAULT ๊ฐ’์œผ๋กœ ์ ์šฉ

 

[2] ALTER

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD ์†์„ฑ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž… [DEFAULT '๊ธฐ๋ณธ๊ฐ’'];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ALTER ์†์„ฑ๋ช… [SET DEFAULT '๊ธฐ๋ณธ๊ฐ’'];
ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ์†์„ฑ๋ช… [CASCADE];

 

[3] DROP

DROP TABLE ํ…Œ์ด๋ธ”๋ช… [CASCADE | RESTRICTED];

๐Ÿ‘‰ RESTRICTED : ๋‹ค๋ฅธ ๊ฐœ์ฒด๊ฐ€ ์ œ๊ฑฐํ•  ์š”์†Œ๋ฅผ ์ฐธ์กฐ ์ค‘์ผ ๋–„๋Š” ์ œ๊ฑฐ๋ฅผ ์ทจ์†Œ


๐Ÿ“Ž DML

DML์˜ ํŠน์ง•

  • DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ,
    ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด์ด๋‹ค. (DB ์‚ฌ์šฉ์ž์™€ DBMS๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต)
  • ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์กฐ์ž‘ํ•˜๋ ค๋Š” ํ…Œ์ด๋ธ”์„ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ์— ์˜ฌ๋ ค๋†“๊ณ  ์ž‘์—…ํ•˜๋ฏ€๋กœ ์ž๋™ ์ปค๋ฐ‹๋˜์ง€ ์•Š๋Š”๋‹ค. (ROLLBACK ๊ฐ€๋Šฅ)
  • ์ฒ˜๋ฆฌํ•œ DML ๋ช…๋ น์„ ์‹ค์ œ ํ…Œ์ด๋ธ”์— ๋ฐ˜์˜์‹œํ‚ค๋ ค๋ฉด COMMIT ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

๋ช…๋ น์–ด

  • SELECT : ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰
  • INSERT : ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
  • UPDATE : ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์ˆ˜์ •
  • DELETE : ๋ฐ์ดํ„ฐ ์‚ญ์ œ

 

๋ช…๋ น์–ด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

[1] SELECT

SELECT [PREDICATE] [ํ…Œ์ด๋ธ”๋ช…] ์†์„ฑ๋ช… [AS ๋ณ„์นญ] [, [ํ…Œ์ด๋ธ”๋ช…] [์†์„ฑ๋ช…], ...]
[, ๊ทธ๋ฃน ํ•จ์ˆ˜ (์†์„ฑ๋ช…) [AS ๋ณ„์นญ]]
[, WINDOW ํ•จ์ˆ˜ OVER (PARTITION BY ์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ...
					ORDER BY ์†์„ฑ๋ช…3, ์†์„ฑ๋ช…4, ...)]
FROM ํ…Œ์ด๋ธ”๋ช… [, ํ…Œ์ด๋ธ”๋ช…, ...]
[WHERE ์กฐ๊ฑด]
[GROUP BY ์†์„ฑ๋ช…, ์†์„ฑ๋ช…, ...]
[HAVING ์กฐ๊ฑด]
[ORDER BY ์†์„ฑ๋ช… [ASC | DESC]];

๐Ÿ‘‰ PREDICATE : ๋ถˆ๋Ÿฌ์˜ฌ ํŠœํ”Œ ์ˆ˜๋ฅผ ์ œํ•œ

  • ALL : ๋ชจ๋“  ํŠœํ”Œ (๋ณดํ†ต์€ ์ƒ๋žต)
  • DISTINCT : ์ค‘๋ณต๋œ ํŠœํ”Œ์ด ์žˆ์„ ๊ฒฝ์šฐ ๊ทธ ์ค‘ ์ฒซ ๋ฒˆ์งธ ํ•œ ๊ฐœ๋งŒ ๊ฒ€์ƒ‰
  • DISTINCTROW : ์ค‘๋ณต๋œ ํŠœํ”Œ์„ ์ œ๊ฑฐํ•˜๊ณ  ํ•œ ๊ฐœ๋งŒ ๊ฒ€์ƒ‰ํ•˜์ง€๋งŒ, ์„ ํƒ๋œ ์†์„ฑ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์ „์ฒด ํŠœํ”Œ์„ ๋Œ€์ƒ์œผ๋กœ ํ•จ

๐Ÿ‘‰ ๊ทธ๋ฃน ํ•จ์ˆ˜ : GROUP BY ์ ˆ์—์„œ ์ง€์ •ํ•œ ๊ทธ๋ฃน๋ณ„๋กœ ํ•จ์ˆ˜ ์ ์šฉ

  • COUNT(์†์„ฑ๋ช…), SUM(์†์„ฑ๋ช…), AVG(์†์„ฑ๋ช…) : ๊ฐœ์ˆ˜, ํ•ฉ, ํ‰๊ท 
  • MAX(์†์„ฑ๋ช…), MIN(์†์„ฑ๋ช…) : ์ตœ๋Œ€, ์ตœ์†Ÿ๊ฐ’

๐Ÿ‘‰ WINDOW ํ•จ์ˆ˜ : GROUP BY ์ ˆ์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ง€์ •ํ•œ ์†์„ฑ์„ ๋ฒ”์œ„๋กœํ•˜์—ฌ ์ง‘๊ณ„

  • ROW NUMBER() : 1, 1, 3, 4, 4, 6๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ˆœ์œ„ ๊ฒฐ์ •
  • RANK() : 1, 1, 2, 3, 3, 4์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ˆœ์œ„ ๊ฒฐ์ •
  • DENSE RANK() : 1, 2, 3, 4, 5, 6๊ณผ ๊ฐ™์ด ๊ฐ™์€ ๊ฐ’์ด์–ด๋„ ๊ณ ์œ ํ•œ ์ˆœ์œ„ ๋ถ€์—ฌ

 

[2] INSERT

INSERT INTO ํ…Œ์ด๋ธ”๋ช…([์†์„ฑ๋ช…1, ์†์„ฑ๋ช…2, ...])
VALUES(๋ฐ์ดํ„ฐ1, ๋ฐ์ดํ„ฐ2, ...);

 

[3] UPDATE

UPDATE ํ…Œ์ด๋ธ”๋ช…
SET ์†์„ฑ๋ช… = ๋ฐ์ดํ„ฐ [, ์†์„ฑ๋ช… = ๋ฐ์ดํ„ฐ, ...]
[WHERE ์กฐ๊ฑด];

 

[4] DELETE

DELETE FROM ํ…Œ์ด๋ธ”๋ช…
[WHERE ์กฐ๊ฑด];

๐Ÿ“Ž DCL

DCL์˜ ํŠน์ง•

  • DB์— ์ ‘๊ทผํ•˜๊ณ  ๊ฐ์ฒด๋“ค์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒํ•œ์„ ์ฃผ๊ณ  ํšŒ์ˆ˜ํ•˜๋Š” ์–ธ์–ด์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ, ํšŒ๋ณต, ๋ณ‘ํ–‰์ œ์–ด๋“ฑ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ด€๋ฆฌ์ž(DBA)๊ฐ€ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ง์ ‘ DB์— ์˜ํ–ฅ ๋ฏธ์น˜๋ฏ€๋กœ, ๋ช…๋ น์–ด์— ํ•ด๋‹นํ•˜๋Š” ์ž‘์—…์ด ์ฆ‰์‹œ ์ž๋™ ์ปค๋ฐ‹๋œ๋‹ค. (ROLLBACK ๋ถˆ๊ฐ€)

 

๋ช…๋ น์–ด

  • GRANT : ๊ถŒํ•œ ๋ถ€์—ฌ
  • REVOKE : ๊ถŒํ•œ ์ทจ์†Œ

 

๋ช…๋ น์–ด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

[1] ์‚ฌ์šฉ์ž ๋“ฑ๊ธ‰ ์ง€์ •/ํ•ด์ œ

GRANT ์‚ฌ์šฉ์ž๋“ฑ๊ธ‰ TO ์‹œ์šฉ์ž_ID_๋ฆฌ์ŠคํŠธ [IDENTIFIED BY ์•”ํ˜ธ];
REVOKE ์‚ฌ์šฉ์ž๋“ฑ๊ธ‰ FROM ์‚ฌ์šฉ์ž_ID_๋ฆฌ์ŠคํŠธ;

 

[2] ํ…Œ์ด๋ธ” ๋ฐ ์†์„ฑ์— ๋Œ€ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ/์ทจ์†Œ

GRANT ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ ON ๊ฐœ์ฒด TO ์‚ฌ์šฉ์ž [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] ๊ถŒํ•œ_๋ฆฌ์ŠคํŠธ ON ๊ฐœ์ฒด FROM ์‚ฌ์šฉ์ž [CASCADE];

๐Ÿ‘‰ ๊ถŒํ•œ ์ข…๋ฅ˜ : ALL, SELECT, INSERT, DELETE, UPDATE, ALTER

 

๐Ÿ‘‰ ์˜ต์…˜ ์ข…๋ฅ˜

  • WITH GRANT OPTION : ๋ถ€์—ฌ๋ฐ›์€ ๊ถŒํ•œ์„ ๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ 
  • GRANT OPTION FOR : ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ทจ์†Œํ•จ

๐Ÿ“Ž TCL

TCL์˜ ํŠน์ง•

  • ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„๋ฅผ ๋ฌถ์–ด์„œ DML์— ์˜ํ•ด ์กฐ์ž‘๋œ ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋žœ์žญ์…˜๋ณ„๋กœ ์ œ์–ดํ•œ๋‹ค.
  • DCL์˜ ํ•œ ์ข…๋ฅ˜์ด์ง€๋งŒ, ์ด์™€ ๊ฐ™์ด ๋ถ„๋ฅ˜ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๋ช…๋ น์–ด

  • COMMIT : ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ DB์— ๋ฐ˜์˜
  • ROLLBACK : ์•„์ง COMMIT๋˜์ง€ ์•Š์€ ๋‚ด์šฉ์„ ์ทจ์†Œ ํ›„ ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ
  • SAVEPOINT : ROLLBACKํ•  ์œ„์น˜ ์ง€์ •

 

๋ช…๋ น์–ด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

COMMIT;
SAVEPOINT SAVEPOINT_์ด๋ฆ„;
ROLLBACK [TO SAVEPOINT_์ด๋ฆ„];

๐Ÿ“Ž DELETE, DROP, TRUNCATE ์ฐจ์ด์ 

  DELETE DROP TRUNCATE
๋ถ„๋ฅ˜ DML DDL DDL
ROLLBACK COMMIT ์ด์ „ ๊ฐ€๋Šฅ ๋ถˆ๊ฐ€ ๋ถˆ๊ฐ€
AUTO COMMIT X O O
๋ฉ”๋ชจ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์ž์› ํ•ด์ œํ•˜์ง€ ์•Š์Œ ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ–ˆ๋˜
๋ฉ”๋ชจ๋ฆฌ ์ž์› ๋ชจ๋‘ ํ•ด์ œ
์ตœ์ดˆ๋กœ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ์ž์› ์ œ์™ธ ๋ชจ๋‘ ํ•ด์ œ
์‚ญ์ œ ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œ,
ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๊ทธ๋Œ€๋กœ
ํ…Œ์ด๋ธ”์˜ ์ •์˜ ์ž์ฒด๋ฅผ
์™„์ „ํžˆ ์‚ญ์ œ
ํ…Œ์ด๋ธ”์„ ์ตœ์ดˆ ์ƒ์„ฑ๋œ
์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆผ
๋กœ๊ทธ O X X

๐Ÿ‘‰ ๋ชจ๋“  ํ–‰์„ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š”?
TRUNCATE๋Š” ํ…Œ์ด๋ธ”์„ DROPํ•ด๋ฒ„๋ฆฌ๊ณ  ๋‹ค์‹œ CREATEํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์œผ๋ฏ€๋กœ

๋ชจ๋“  ํ–‰์„ ์‚ญ์ œํ•  ๋•Œ๋Š” TRUNCATE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋‹ค.

(๊ทธ๋Ÿฌ๋‚˜ TRUNCATE๋Š” ROLLBACK์ด ๋ถˆ๊ฐ€ํ•˜๋ฏ€๋กœ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.)

 

๐Ÿ‘‰ ์„ธ ๋ช…๋ น์˜ ์ฐจ์ด์  ๊ทธ๋ฆผ ๋น„๊ต

DELETE, TRUNCATE, DROP ๋น„๊ต


์ฐธ๊ณ 

๋Œ“๊ธ€