
์ค๋์ MySQL์ ๋ฐฐ์ฐ๋ฉด์ ๋ง์ฃผ์น ๋ค์ํ ๋ช ๋ น์ด๋ค์ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค.
ํนํ DDL, DML, DCL ์ธ์๋ ๋ค๋ฅธ ๋ช ๋ น์ด๋ค๋ ์์ง ์๊ธฐ ์ํด ์์ ์ ํจ๊ป ๊ธฐ๋กํด๋๋ ค ํด์!
๐ 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;
์๋ฅผ ๋ค์ด, ์ด๋ฐ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํด๋ณผ๊ฒ์:
"book ํ ์ด๋ธ์ ์๋ ์ฑ ์ ์ด๋ฆ์ ๋ณด์ฌ์ฃผ์ธ์"
์ ๋ ์ด๋ด ๋ ๋ฌธ์ ๋ฅผ ์ด๋ ๊ฒ ํ์ด์:
1. ์ด๋ค ํ
์ด๋ธ์์? โ FROM book
2. ๋ฌด์์ ๋ณด์ฌ์ค๊น? โ SELECT bookname
๐ ๊ทธ๋์ ์ต์ข ์ฟผ๋ฆฌ๋ ์ด๋ ๊ฒ ๋ฉ๋๋ค:
SELECT bookname FROM book;
์ด๋ฐ ์์ผ๋ก ๋ฌธ์ ๋ฅผ ์ฝ๊ณ , 'ํ ์ด๋ธ โ ์ปฌ๋ผ' ์์๋ก ์์ฐ์ค๋ฝ๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์ง๋ ์ต๊ด์ ๋ค์ด๊ณ ์์ด์.
๐ 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์ด๋?
์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๋ถ์ฌํ๊ฑฐ๋ ํ์ํ๋ ๋ช ๋ น์ด์ ๋๋ค.
์ฝ๊ฒ ๋งํด, ๋๊ฐ ๋ด ๋ฐฉ์ ๋ค์ด์ฌ ์ ์๋์ง ๊ฒฐ์ ํ๋ ๊ฒ๊ณผ ๊ฐ์์.
์ฒ์ 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 ์กฐ๊ฑด ํ์ธ๋ถํฐ ํ๋ ค๊ณ ํฉ๋๋ค.
์ค์ ๋๋ถ์ ์กฐ์ฌ์ฑ์ด ์๊ฒผ๊ณ , ์ด๋ฒ์ ๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ์๊ธฐ ์ํด ์ ๋ฆฌํ๋ฉด์ ๋ฐฐ์ฐ๋ ค๊ณ ํฉ๋๋ค! โจ