๐Ÿ’ป [SQL] 2. ๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด(DCL)

thisk336ยท2023๋…„ 10์›” 2์ผ
0

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
2/17
post-thumbnail

SQL์˜ ์ข…๋ฅ˜

  • SQL์€ ๋ฐ์ดํ„ฐ ์ •์˜, ๋ฐ์ดํ„ฐ ์กฐ์ž‘, ๋ฐ์ดํ„ฐ ์ œ์–ด ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋ฉฐ, ๊ทธ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถ„๋ฅ˜ํ•œ๋‹ค.

    • DDL(Data Definition Language) : ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์–ธ์–ด์ด๋‹ค. (CREATE, ALTER, DROP, RENAME, TRUNCATE๋ฌธ์ด ์žˆ๋‹ค.)
    • DML(Data Manipulation Language) : ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒํ•˜๋Š” ์–ธ์–ด์ด๋‹ค. (INSERT, UPDATE, DELECT, SELECT๋ฌธ์ด ์žˆ๋‹ค.)
    • DCL(Data Control Language) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ํšŒ์ˆ˜ํ•˜๊ธฐ ์œ„ํ•œ ์–ธ์–ด์ด๋‹ค. (GRANT, REVOKE๋ฌธ์ด ์žˆ๋‹ค.)
    • TCL(Transaction Control Language) : ํŠธ๋žœ์žญ์…˜์„ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค. (COMMIT, ROLLBACK, SAVEPOINT๋ฌธ์ด ์žˆ๋‹ค.)
  • ์—ฌ๊ธฐ์„œ ํŠธ๋žœ์žญ์…˜(Transaction)์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค.

  • SQL๋ฌธ์˜ ์‹คํ–‰ ์ˆœ์„œ๋Š” 3๋‹จ๊ณ„๋ฅผ ๊ฑธ์ณ์„œ ์‹คํ–‰๋˜๋ฉฐ ๊ทธ ๋‹จ๊ณ„๋กœ๋Š” ํŒŒ์‹ฑ(Parsing) โ†’ ์‹คํ–‰(Execution) โ†’ ์ธ์ถœ(Fetch) ์ˆœ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

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

  • SQL์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑ, ๋ชฉ๋ก ๋ณด๊ธฐ, ์‚ฌ์šฉ, ์‚ญ์ œ ๋“ฑ์„ ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•์ด๋‹ค.
    (MySQL ์‚ฌ์šฉ)
-- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ 
CREATE DATABASE	 mydb;
-- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ 
USE mydb;
-- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชฉ๋ก ๋ณด๊ธฐ 
SHOW DATABASES;
-- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ญ์ œ (if๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.)
DROP DATABASE IF EXISTS	mydb;

DDL

  • DDL์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์–ธ์–ด๋กœ CREATE, ALTER, DROP, RENAME, TRUNCATE๋ฌธ์ด ์žˆ๋‹ค.

CREATE๋ฌธ

  • CREATE๋ฌธ์€ ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ธฐ๋ณธํ‚ค, ์™ธ๋ž˜ํ‚ค, ์ œ์•ฝ์‚ฌํ•ญ ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
CREATE TABLE [ํ…Œ์ด๋ธ”๋ช…] (
	[์ปฌ๋Ÿผ๋ช… 1] [๋ฐ์ดํ„ฐ ํƒ€์ž…] [์ œ์•ฝ์‚ฌํ•ญ],
    [์ปฌ๋Ÿผ๋ช… 2] [๋ฐ์ดํ„ฐ ํƒ€์ž…],
    [์ปฌ๋Ÿผ๋ช… 3] [๋ฐ์ดํ„ฐ ํƒ€์ž…],
);
  • ์ œ์•ฝ์กฐ๊ฑด(constraint)๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด, ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ๊ฒ€์‚ฌ ๊ทœ์น™์„ ์˜๋ฏธํ•˜๋ฉฐ CREATE ๋ฌธ์œผ๋กœ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ๋‚˜ ALTER ๋ฌธ์œผ๋กœ ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • MySQL์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œ์•ฝ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    1. NOT NULL : NOT NULL ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ฉด, ํ•ด๋‹น ํ•„๋“œ๋Š” NULL ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.
    2. UNIQUE : UNIQUE ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ฉด, ํ•ด๋‹น ํ•„๋“œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
    3. PRIMARY KEY : PRIMARY KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ฉด, ํ•ด๋‹น ํ•„๋“œ๋Š” PRIMARY KEY๊ฐ€ ๋œ๋‹ค.
    4. FOREIGN KEY : FOREIGN KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ฉด, ํ•ด๋‹น ํ•„๋“œ๋Š” FOREIGN KEY๊ฐ€ ๋œ๋‹ค.
    5. DEFAULT : DEFAULT ์ œ์•ฝ ์กฐ๊ฑด์€ ํ•ด๋‹น ํ•„๋“œ์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
-- ํ…Œ์ด๋ธ” ์ƒ์„ฑ
CREATE TABLE test_table (
	test_id INT UNSIGNED NOT NULL,  -- UNSIGNED๋กœ ์„ค์ •ํ•˜๋ฉด ์–‘์ˆ˜๊ฐ’๋งŒ ํ‘œํ˜„
    test_name CHAR(30) NOT NULL,  -- NOT NULL๋กœ ์„ค์ •ํ•˜๋ฉด NULL๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‹ค.
    test_time DATE AUTO_INCREMENT,  -- AUTO_INCREMENT ์ž๋™์œผ๋กœ 1์”ฉ ์ฆ๊ฐ€ํ•˜์—ฌ UNIQUEํ•œ ๊ฐ’์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.
    PRIMARY KEY (test_id)
);

DROP๋ฌธ

  • DROP๋ฌธ์€ ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋„ ๋ชจ๋‘ ์‚ญ์ œ๋œ๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
-- ํ…Œ์ด๋ธ” ์‚ญ์ œ 
DROP TABLE [ํ…Œ์ด๋ธ”๋ช…];

ALTER๋ฌธ

  • ALTER๋ฌธ์€ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ณ , ๊ธฐ๋ณธํ‚ค๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์™ธ๋ž˜ํ‚ค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•  ๋•Œ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
ALTER TABLE [ํ…Œ์ด๋ธ”๋ช…] ADD COLUMN [์ถ”๊ฐ€ํ•  ์ปฌ๋Ÿผ๋ช…][์ถ”๊ฐ€ํ•  ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐํ˜•]; 
  • ํ…Œ์ด๋ธ”์— ์ปฌ๋Ÿผ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
ALTER TABLE [ํ…Œ์ด๋ธ”๋ช…] MODIFY COLUMN [๋ณ€๊ฒฝํ•  ์ปฌ๋Ÿผ๋ช…][๋ณ€๊ฒฝํ•  ์ปฌ๋Ÿผ ํƒ€์ž…];
  • ํ…Œ์ด๋ธ”์— ์ปฌ๋Ÿผ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•  ๋•Œ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
ALTER TABLE [ํ…Œ์ด๋ธ”๋ช…] CHANGE COLUMN [๊ธฐ์กด ์ปฌ๋Ÿผ ๋ช…][๋ณ€๊ฒฝํ•  ์ปฌ๋Ÿผ ๋ช…][๋ณ€๊ฒฝํ•  ์ปฌ๋Ÿผ ํƒ€์ž…];
  • ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์„ ์‚ญ์ œํ•˜๊ณ ์ž ํ•  ๋•Œ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
ALTER TABLE [ํ…Œ์ด๋ธ”๋ช…] DROP COLUMN [์‚ญ์ œํ•  ์ปฌ๋Ÿผ ๋ช…];

0๊ฐœ์˜ ๋Œ“๊ธ€