๐Ÿ—‚๏ธ [MySQL] DDL, DML, DCL

JOPOยท2025๋…„ 3์›” 28์ผ
0

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

๋ชฉ๋ก ๋ณด๊ธฐ
3/7
post-thumbnail

์˜ค๋Š˜์€ MySQL์„ ๋ฐฐ์šฐ๋ฉด์„œ ๋งˆ์ฃผ์นœ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.
ํŠนํžˆ DDL, DML, DCL ์™ธ์—๋„ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋“ค๋„ ์žŠ์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ๊ธฐ๋กํ•ด๋‘๋ ค ํ•ด์š”!


๐Ÿ“‹๋ชฉ์ฐจ

  1. ๐Ÿ“˜DDL (Data Definition Language)
  2. ๐Ÿ“™DML (Data Manipulation Language)
  3. ๐Ÿ“—DCL (Data Control Language)
  4. โœ๏ธ๊ธฐ๋ก์šฉ ๋ช…๋ น์–ด ๋ชจ์Œ
  5. ๐Ÿค”๋А๋‚€์ 

๐Ÿ“˜DDL (Data Definition Language)

๐Ÿ“Œ DDL์ด๋ž€?

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

์ฒ˜์Œ CREATE TABLE์„ ๋ฐฐ์› ์„ ๋• ๊ทธ๋ƒฅ '๋ญ”๊ฐ€ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๊ตฌ๋‚˜~' ํ•˜๊ณ  ๋„˜๊ฒผ๋Š”๋ฐ,
์ง์ ‘ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋‹ค ๋ณด๋‹ˆ ์ด๊ฒŒ ๋งˆ์น˜ ๋ฐฉ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ธฐ๋ถ„์ด๋”๋ผ๊ณ ์š”.
DDL์€ ์ง„์งœ ๊ฑด์ถ•๊ฐ€์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๋А๋‚Œ์ด์—ˆ์–ด์š”.

์›๋ž˜ ํ‘œํ˜„์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด:

  • CREATE TABLE : ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค.
  • ALTER TABLE : ๊ธฐ์กด ํ…Œ์ด๋ธ”์— ์นผ๋Ÿผ์„ ๋”ํ•˜๊ฑฐ๋‚˜ ๋ฐ”๊พผ๋‹ค.
  • DROP TABLE : ํ…Œ์ด๋ธ”์„ ์™„์ „ํžˆ ์—†์•ค๋‹ค.
  • TRUNCATE TABLE : ํ…Œ์ด๋ธ”์€ ๋‘๊ณ  ์•ˆ์˜ ๋‚ด์šฉ๋งŒ ์‹น ๋น„์šด๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋น„์œ :

  • CREATE : ์ง‘์— ๋ฐฉ์„ ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค.
  • ALTER : ๋ฐฉ์— ๊ฐ€๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ฐฐ์น˜ํ•œ๋‹ค.
  • DROP : ๋ฐฉ ์ž์ฒด๋ฅผ ์ฒ ๊ฑฐํ•œ๋‹ค.
  • TRUNCATE : ๋ฐฉ์€ ๋‚จ๊ธฐ๊ณ  ๊ฐ€๊ตฌ๋งŒ ์น˜์šด๋‹ค.

์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด

  • CREATE, ALTER, DROP, TRUNCATE

์˜ˆ์‹œ ์ฝ”๋“œ

-- ๋งˆ๋‹นDB ๊ธฐ์ค€ ์˜ˆ์ œ: ์ฑ… ํ…Œ์ด๋ธ” ์ƒ์„ฑ
CREATE TABLE book (
  bookid INT PRIMARY KEY,       -- ์ฑ… ID
  bookname VARCHAR(100),        -- ์ฑ… ์ด๋ฆ„
  publisher VARCHAR(50),        -- ์ถœํŒ์‚ฌ
  price INT                     -- ๊ฐ€๊ฒฉ
);

-- ๊ฐ€๊ฒฉ ์ปฌ๋Ÿผ ํƒ€์ž… ๋ณ€๊ฒฝ
ALTER TABLE book MODIFY COLUMN price DECIMAL(10, 2);

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

๐Ÿ’ก ๋‚˜๋งŒ์˜ SQL ํ’€์ด ํ๋ฆ„

์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณผ๊ฒŒ์š”:

"book ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ์ฑ…์˜ ์ด๋ฆ„์„ ๋ณด์—ฌ์ฃผ์„ธ์š”"

์ €๋Š” ์ด๋Ÿด ๋•Œ ๋ฌธ์ œ๋ฅผ ์ด๋ ‡๊ฒŒ ํ’€์–ด์š”:
1. ์–ด๋–ค ํ…Œ์ด๋ธ”์—์„œ? โ†’ FROM book
2. ๋ฌด์—‡์„ ๋ณด์—ฌ์ค„๊นŒ? โ†’ SELECT bookname

๐Ÿ‘‰ ๊ทธ๋ž˜์„œ ์ตœ์ข… ์ฟผ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:

SELECT bookname FROM book;

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ , 'ํ…Œ์ด๋ธ” โ†’ ์ปฌ๋Ÿผ' ์ˆœ์„œ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ์งœ๋Š” ์Šต๊ด€์„ ๋“ค์ด๊ณ  ์žˆ์–ด์š”.


๐Ÿ“™DML (Data Manipulation Language)

๐Ÿ“Œ DML์ด๋ž€?

ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ณ , ํ•„์š” ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—” SELECT๋ฐ–์— ๋ชจ๋ฅด๊ณ  SQL์„ ๋‹ค๋ฃจ๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ,
INSERT, UPDATE, DELETE๋ฅผ ์จ๋ณด๋ฉด์„œ '์•„, ๋‚ด๊ฐ€ ์ง„์งœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ๊ตฌ๋‚˜' ํ•˜๋Š” ๊ธฐ๋ถ„์ด ๋“ค์—ˆ์–ด์š”.
๋ฐฉ์— ๋ฌผ๊ฑด์„ ๋†“๊ณ  ์น˜์šฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ๋”ฑ ๊ทธ ๊ฐ๊ฐ์ด๋ž‘ ๋น„์Šทํ–ˆ์ฃ .

์›๋ž˜ ํ‘œํ˜„:

  • INSERT : ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ๋„ฃ๋Š”๋‹ค.
  • UPDATE : ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊พผ๋‹ค.
  • DELETE : ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šด๋‹ค.
  • SELECT : ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋น„์œ :

  • INSERT : ์ฑ…์ƒ๊ณผ ์˜์ž๋ฅผ ๋ฐฉ์— ๋“ค์—ฌ๋†“๋Š”๋‹ค.
  • UPDATE : ๊ฐ€๊ตฌ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ƒ‰์„ ์น ํ•œ๋‹ค.
  • DELETE : ๋‚ก์€ ๊ฐ€๊ตฌ๋ฅผ ์น˜์šด๋‹ค.
  • SELECT : ๋ฐฉ ์•ˆ ์ƒํƒœ๋ฅผ ์‚ดํŽด๋ณธ๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ

-- ๋งˆ๋‹นDB ๊ธฐ์ค€ ์˜ˆ์ œ: ์ƒˆ๋กœ์šด ์ฑ… ์ถ”๊ฐ€
INSERT INTO book (bookid, bookname, publisher, price)
VALUES (1, 'ํ† ์ง€', '๋งˆ๋‹น์ถœํŒ์‚ฌ', 20000);

-- ๊ฐ€๊ฒฉ ๋ณ€๊ฒฝ
UPDATE book SET price = 18000 WHERE bookid = 1;

-- ์ฑ… ์‚ญ์ œ
DELETE FROM book WHERE bookid = 1;

โš ๏ธ UPDATE, DELETE ์‹œ์—๋Š” ๋ฐ˜๋“œ์‹œ WHERE ์กฐ๊ฑด์„ ๋ถ™์ด์ž. ์•ˆ ๊ทธ๋Ÿฌ๋ฉด ์ „๋ถ€ ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์‚ญ์ œ๋  ์ˆ˜๋„ ์žˆ์–ด์š”.


๐Ÿ“—DCL (Data Control Language)

๐Ÿ“Œ DCL์ด๋ž€?

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

์‰ฝ๊ฒŒ ๋งํ•ด, ๋ˆ„๊ฐ€ ๋‚ด ๋ฐฉ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”.

์ฒ˜์Œ SELECT ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๊ณ„์† ์—๋Ÿฌ๊ฐ€ ๋– ์„œ ์ •๋ง ๋‹นํ™ฉํ–ˆ์–ด์š”. ์•Œ๊ณ  ๋ณด๋‹ˆ ๊ถŒํ•œ์ด ์—†์—ˆ๋˜ ๊ฑฐ์˜€์ฃ .
๊ทธ๋•Œ โ€œ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ๋‚ด ํ…Œ์ด๋ธ”์ด๋ผ๋„ ๋‚ด๊ฐ€ ์ ‘๊ทผ ๋ชป ํ•  ์ˆ˜ ์žˆ๊ตฌ๋‚˜โ€ ํ•˜๊ณ  ์ฒ˜์Œ์œผ๋กœ ์ดํ•ดํ•˜๊ฒŒ ๋์–ด์š”.

์›๋ž˜ ํ‘œํ˜„:

  • GRANT : ๊ถŒํ•œ์„ ์ค€๋‹ค.
  • REVOKE : ๊ถŒํ•œ์„ ๋บ๋Š”๋‹ค.

๋น„์œ ๋กœ ๋ฐ”๊พธ๋ฉด:

  • GRANT : ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ฐฉ ์—ด์‡ ๋ฅผ ์ค€๋‹ค.
  • REVOKE : ์—ด์‡ ๋ฅผ ๋‹ค์‹œ ๋บ๋Š”๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ

-- ๊ถŒํ•œ ์ฃผ๊ธฐ
GRANT SELECT ON book TO 'readonly_user';

-- ๊ถŒํ•œ ํšŒ์ˆ˜
REVOKE SELECT ON book FROM 'readonly_user';

โœ๏ธ๊ธฐ๋ก์šฉ ๋ช…๋ น์–ด ๋ชจ์Œ

  • DESC ํ…Œ์ด๋ธ”๋ช…; : ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋ณด๊ธฐ
  • SHOW TABLES; : ํ…Œ์ด๋ธ” ๋ชฉ๋ก ๋ณด๊ธฐ
  • SHOW DATABASES; : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชฉ๋ก ๋ณด๊ธฐ
  • USE DB๋ช…; : DB ์„ ํƒ
  • EXPLAIN SELECT๋ฌธ; : ์‹คํ–‰ ๊ณ„ํš ํ™•์ธ
  • SELECT RAND(); : ๋žœ๋ค ์ˆซ์ž ์ถœ๋ ฅ
  • SELECT SUBSTRING() : ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ
  • SELECT CONCAT() : ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ

๐Ÿค”๋А๋‚€์ 

์ฒ˜์Œ DB๋ฅผ ๋ฐฐ์šด ๊ฑด ๋Œ€ํ•™ ์ˆ˜์—…์ด์—ˆ๋Š”๋ฐ, ๊ทธ๋•Œ ๊ต์ˆ˜๋‹˜ ๊ณ„์ •์œผ๋กœ ์‹ค์Šตํ•˜๋‹ค๊ฐ€ ์‹ค์ˆ˜๋กœ DB๋ฅผ ๋‚ ๋ ค๋ฒ„๋ฆฐ ์ ์ด ์žˆ์–ด์š”... ์ง€๊ธˆ ์ƒ๊ฐํ•ด๋„ ์•„์ฐ”ํ•œ ๊ฒฝํ—˜์ด์—ˆ์ฃ . ๐Ÿ˜ฑ

๊ทธ๋ž˜์„œ ์ง€๊ธˆ IT ํ•™์›์—์„œ ๋‹ค์‹œ ๋ฐฐ์šฐ๋Š” ์ง€๊ธˆ์€, ์ฟผ๋ฆฌ ํ•˜๋‚˜๋„ ๋” ์‹ ์ค‘ํ•˜๊ฒŒ ๋‹ค๋ฃจ๋ ค๊ณ  ํ•˜๊ฒŒ๋์–ด์š”. ํŠนํžˆ DROP์ด๋‚˜ DELETE ๊ฐ™์€ ๋ช…๋ น์–ด๋Š” ํ•ญ์ƒ WHERE ์กฐ๊ฑด ํ™•์ธ๋ถ€ํ„ฐ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ˆ˜ ๋•๋ถ„์— ์กฐ์‹ฌ์„ฑ์ด ์ƒ๊ฒผ๊ณ , ์ด๋ฒˆ์—” ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! โœจ


๐Ÿท๏ธ์ฐธ๊ณ  ์‚ฌ์ดํŠธ

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