์ค๋์ 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์ด ๋ถ๊ฐํ๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํ๋ค.)
๐ ์ธ ๋ช ๋ น์ ์ฐจ์ด์ ๊ทธ๋ฆผ ๋น๊ต
์ฐธ๊ณ
'6๏ธโฃ SQL > SQL ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] ์ฝ๋ฉํ ์คํธ๋ฅผ ์ํ SQL ๋ฌธ๋ฒ (0) | 2022.02.04 |
---|---|
[MySQL] INNER, OUTER JOIN ์ ๋ฆฌ (0) | 2022.02.03 |
๋๊ธ