๊ณผ๋ชฉ II. SQL ๊ธฐ๋ณธ๊ณผ ํ์ฉ
๐์ 3์ฅ ๊ด๋ฆฌ ๊ตฌ๋ฌธ
- ์ 1์ DML (๋ฐ์ดํฐ ์ ๋ ฅโ์์ โ์ญ์ )
- ์ 2์ TCL (๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ ๋ฐ์โ์ทจ์)
- ์ 3์ DDL (ํ ์ด๋ธ ๊ตฌ์กฐ ์์ฑโ๋ณ๊ฒฝโ์ญ์ )
- ์ 4์ DCL (๋ฐ์ดํฐ ๊ถํ ๋ถ์ฌโํ์)
- ์ฅ ์์ฝ
- ์ฐ์ต๋ฌธ์
โจ์ 1์ DML
1. INSERT
โพ๏ธ๋จ์ผ ํ INSERT ๋ฌธ์ VALUES ์ ์ ํฌํจํ๋ฉฐ, ํ ๋ฒ์ ํ ํ๋ง ์ ๋ ฅ๋๋ค.
INSERT INTO ํ
์ด๋ธ๋ช
[(์นผ๋ผ1, ์นผ๋ผ2, ...)] VALUES (๊ฐ1, ๊ฐ2, ...);
โพ๏ธ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ ๋ค์ค ํ INSERT ๋ฌธ
INSERT INTO ํ
์ด๋ธ๋ช
[(์นผ๋ผ1, ์นผ๋ผ2, ...)]
์๋ธ ์ฟผ๋ฆฌ;
-- [์์ ]
INSERT
INTO TEAM (TEAM_ID, REGION_NAME, TEAM_NAME, ORIG_YYYY, STADIUM_ID)
SELECT REPLACE(TEAM_ID, 'K', 'A') AS TEAM_ID
, REGION_NAME, REGION_NAME || '์ฌ์คํ' AS TEAM_NAME
, 2019 AS ORIG_YYYY, STADIUM_ID
FROM TEAM
WHERE REGION_NAME IN ('์ฑ๋จ', '์ธ์ฒ');
2 ๊ฐ์ ํ์ด ๋ง๋ค์ด์ก์ต๋๋ค.
2. UPDATE
โพ๏ธ๋ฐ์ดํฐ ์์
UPDATE ํ
์ด๋ธ๋ช
SET ์์ ํ ์นผ๋ผ๋ช
1 = ์์ ๋ ์๋ก์ด ๊ฐ1
[ , ์์ ํ ์นผ๋ผ๋ช
2 = ์์ ๋ ์๋ก์ด ๊ฐ2 ]
[ WHERE ์์ ๋์ ์๋ณ ์กฐ๊ฑด์ ] ;
-- [์์ ] WHERE ์ ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ํ
์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์์ ๋๋ค. (์ฃผ์)
UPDATE PLAYER
SET BACK_NO = 99;
480 ํ์ด ๊ฐฑ์ ๋์ต๋๋ค.
-- [์์ 2]
UPDATE PLAYER
SET POSITION = 'MF'
WHERE POSITION IS NULL;
3 ํ์ด ๊ฐฑ์ ๋์ต๋๋ค.
3. DELETE
โพ๏ธ๋ฐ์ดํฐ ์ญ์ (*์ฃผ์ : WHERE ์ ์ ์ฌ์ฉํ์ง ์์์ ํ ์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ค.)
DELETE [FROM] ํ
์ด๋ธ๋ช
[WHERE ์ญ์ ๋์ ์๋ณ ์กฐ๊ฑด์];
-- [์์ ] ์ฃผ์ : WHERE ์ ์ ์ฌ์ฉํ์ง ์์์ ํ
์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ค.
DELETE FROM PLAYER;
480ํ์ด ์ญ์ ๋์ต๋๋ค.
-- [์์ 2]
DELETE PLAYER
WHERE POSITION = 'DF'
AND JOIN_YYYY < 2010;
35ํ์ด ์ญ์ ๋์ต๋๋ค.
4. MERGE
โพ๏ธMERGE ๋ฌธ์ ์ฌ์ฉํ๋ฉด ์๋ก์ด ํ์ ์ ๋ ฅํ๊ฑฐ๋, ๊ธฐ์กด ํ์ ์์ ํ๋ ์์ ์ ํ ๋ฒ์ ํ ์ ์๋ค.
MERGE
INTO ํ๊ฒ ํ
์ด๋ธ๋ช
USING ์์ค ํ
์ด๋ธ๋ช
ON (์กฐ์ธ ์กฐ๊ฑด์)
WHEN MATCHED THEN
UPDATE
SET ์์ ํ ์นผ๋ผ๋ช
1 = ์์ ๋ ์๋ก์ด ๊ฐ1
[ , ์์ ํ ์นผ๋ผ๋ช
2 = ์์ ๋ ์๋ก์ด ๊ฐ2, ... ]
WHEN NOT MATCHED THEN
INSERT [(์นผ๋ผ1, ์นผ๋ผ2, ...)]
VALUES (๊ฐ1, ๊ฐ2, ...);
MERGE ๋ฌธ ์ค๋ช | |
MERGE | MERGE ๋ค์์ ์ ๋ ฅโ์์ ๋ผ์ผ ํ ํ๊ฒ ํ ์ด๋ธ๋ช ์ ์ ๋ ฅ |
USING | ์ ๋ ฅโ์์ ์ ์ฌ์ฉํ ์์ค ํ ์ด๋ธ์ ์ ๋ ฅ |
ON | ํ๊น ํ ์ด๋ธ๊ณผ ์์ค ํ ์ด๋ธ ๊ฐ์ ์กฐ์ธ ์กฐ๊ฑด์์ ๊ธฐ์ ํด, ์ ๋ ฅโ์์ ํ ๋์์ ๊ฒฐ์ |
WHEN MATCHED THEN | ON ์ ์ ์กฐ์ธ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฑ๊ณตํ ํ๋ค์ ๋ํด์ ์๋ UPDATE ๊ตฌ๋ฌธ์ ์ํ |
WHEN NOT MATCHED THEN | ์กฐ์ธ์ ์คํจํ ํ๋ค์ ๋ํด์๋ ์๋ INSERT ๊ตฌ๋ฌธ์ ์ํ |
โจ์ 2์ TCL
1. ํธ๋์ญ์ ๊ฐ์
โพ๏ธํธ๋์ญ์ (Transaction) ์ด๋ ๋ฐ์ ํ ๊ด๋ จ๋ผ ๋ถ๋ฆฌ๋ ์ ์๋ ํ ๊ฐ ์ด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐ์์ ๊ฐ๋ฆฌํจ๋ค.
ํ๋์ ํธ๋์ญ์ ์๋ ํ๋ ์ด์์ SQL ๋ฌธ์ฅ์ด ํฌํจ๋๋ค. ํธ๋์ญ์ ์ ๋ถํ ํ ์ ์๋ ์ต์์ ๋จ์๋ค. ์ํ์์์ ๊ณ์ข์ด์ฒด ์ํฉ์ ์ฐ์ํ๋ฉด ํธ๋์ญ์ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ค. ์ ) - STEP1. 100๋ฒ ๊ณ์ข์ ์์ก์์ 10,000์์ ๋บ๋ค. - STEP2. 200๋ฒ ๊ณ์ข์ ์์ก์ 10,000์์ ๋ํ๋ค. |
ํธ๋์ญ์ ์ ํน์ฑ | ์ค๋ช |
๐ก์์์ฑ (์ค์) (atomicity) |
ํธ๋์ญ์ ์ ์ ์๋ ์ฐ์ฐ๋ค์ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋์ง ์๋๋ฉด ์ ํ ์คํ๋์ง ์์ ์ํ๋ก ๋จ์ ์์ด์ผ ํ๋ค(all or nothing) |
์ผ๊ด์ฑ (consistency) |
ํธ๋์ญ์ ์ด ์คํ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ฉ์ด ์๋ชป ๋ผ ์์ง ์๋ค๋ฉด ํธ๋์ญ์ ์ด ์คํ๋ ์ดํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์๋ชป์ด ์์ผ๋ฉด ์ ๋๋ค. |
๊ณ ๋ฆฝ์ฑ (isolation) |
ํธ๋์ญ์ ์ด ์คํ๋๋ ๋์ค์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํฅ์ ๋ฐ์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์๋ ์ ๋๋ค. |
์ง์์ฑ (durability) |
ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด, ๊ทธ ํธ๋์ญ์ ์ด ๊ฐฑ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋ค. |
๊ณ์ข์ด์ฒด๋ ํ ๊ณ์ข์์ ํ๊ธ์ด ์ธ์ถ๋ ํ์ ๋ค๋ฅธ ๊ณ์ข๋ก ์
๊ธ๋๋๋ฐ, ํ๊ธ์ด ์ธ์ถ๋๊ธฐ ์ ์ ๋ค๋ฅธ ๊ณ์ข์ ์
๊ธ๋๋๊ฒ์ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํฌ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ฒด๊ฐ ๊ฒฐ์ ๋๊ธฐ ์ ๊น์ง๋ ๋ค๋ฅธ ์ฌ๋์ด ์ด ๊ณ์ข์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
์ด๊ฒ์ ๋ณดํต ๋ฌธ์ ์๋ฌผ์ ๋ฅผ ์ฑ์ฐ๋ฏ์ด ํ๋ค๊ณ ํด ์ ๊ธ(LOCKING)์ด๋ผ๊ณ ํํํ๋ค.
ํธ๋์ญ์
์ ํน์ฑ(ํนํ ์์์ฑ)์ ์ถฉ์กฑํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค์ํ ๋ ๋ฒจ์ ์ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ ๊ธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋์ญ์
์ด ์ํํ๋ ๋์ ํน์ ๋ฐ์ดํฐ์ ๋ํด์ ๋ค๋ฅธ ํธ๋์ญ์
์ด ๋์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ ํํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ ๊ธ์ด ๊ฑธ๋ฆฐ ๋ฐ์ดํฐ๋ ์ ๊ธ์ ์คํํ ํธ๋์ญ์
๋ง ๋
์ ์ ์ผ๋ก ์ ๊ทผํ ์ ์๊ณ , ๋ค๋ฅธ ํธ๋์ญ์
์ผ๋ก๋ถํฐ ๊ฐ์ญ์ด๋ ๋ฐฉํด๋ฅผ ๋ฐ์ง ์๋ ๊ฒ์ด ๋ณด์ฅ๋๋ค. ์ ๊ธ์ด ๊ฑธ๋ฆฐ ๋ฐ์ดํฐ๋ ์ ๊ธ์ ์ํํ ํธ๋์ญ์
๋ง ํด์ ํ ์ ์๋ค.
2. COMMIT
์ ๋ ฅ, ์์ , ์ญ์ ํ ๋ฐ์ดํฐ์ ๋ํด ์ ํ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จ๋์ ๊ฒฝ์ฐ COMMIT ๋ช ๋ น์ด๋ก ํธ๋์ญ์ ์ ์๋ฃํ ์ ์๋ค.
COMMIT์ด๋ ROLLBACK ์ด์ ์ ๋ฐ์ดํฐ ์ํ |
๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ์ทจ์ํด ์ด์ ์ํ๋ก ๋ณต๊ตฌ ๊ฐ๋ฅํ๋ค. |
ํ์ฌ ์ฌ์ฉ์๋ SELECT ๋ฌธ์ฅ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ์ธ ๊ฐ๋ฅํ๋ค. |
๋ค๋ฅธ ์ฌ์ฉ์๋ ํ์ฌ ์ฌ์ฉ์๊ฐ ์ํํ ๋ช ๋ น์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค. |
๋ณ๊ฒฝ๋ ํ์ ์ ๊ธ(LOCKING)์ด ์ค์ ๋ผ์ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝํ ์ ์๋ค. |
COMMIT ์ดํ์ ๋ฐ์ดํฐ ์ํ |
๋ฐ์ดํฐ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋๋ค. |
์ด์ ๋ฐ์ดํฐ๋ ์์ํ ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ค. |
๋ชจ๋ ์ฌ์ฉ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค. |
๊ด๋ จ๋ ํ์ ๋ํ ์ ๊ธ(LOCKING)์ด ํ๋ฆฌ๊ณ , ๋ค๋ฅธ ์ฌ์ฉ์๋ค์ด ํ์ ์กฐ์ํ ์ ์๊ฒ ๋๋ค. |
3. ROLLBACK
โพ๏ธํ ์ด๋ธ ๋ด ์ ๋ ฅํ ๋ฐ์ดํฐ๋ ์์ ํ ๋ฐ์ดํฐ, ์ญ์ ํ ๋ฐ์ดํฐ์ ๋ํด COMMIT ์ด์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ทจ์ํ ์ ์๋ค.
-- [์์ ] SQL Server
BEGIN TRAN
DELETE FROM PLAYER;
(480๊ฐ ํ์ด ์ํฅ์ ๋ฐ์)
ROLLBACK;
๋ช
๋ น์ด ์๋ฃ๋์ต๋๋ค.
COMMIT๊ณผ ROLLBACK ์ ์ฅ์ |
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ |
์๊ตฌ์ ์ธ ๋ณ๊ฒฝ์ ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌํญ ํ์ธ ๊ฐ๋ฅ |
๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ด๋ ์์ ์ ๊ทธ๋ฃนํํด ์ฒ๋ฆฌ ๊ฐ๋ฅ |
4. SAVEPOINT
โพ๏ธํ ์์ ์์ SAVEPOINT๊น์ง ํธ๋์ญ์ ์ ์ผ๋ถ๋ง ROLLBACK ํ ์ ์๋ค.
-- [์์ ] Oracle
SAVEPOINT SVPT1;
-- ์ ์ฅ์ ๊น์ง ๋กค๋ฐฑํ ๋๋ ROLLBACK ๋ค์ ์ ์ฅ์ ๋ช
์ ์ง์ ํ๋ค.
ROLLBACK TO SVPT1;
-- [์์ ] SQL Server
SAVE TRANSACTION SVTR1;
ROLLBACK TRANSACTION SVTR1;
โจ์ 3์ DDL
1. CREATE TABLE
โพ๏ธํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ฒด๋ก, ํ๊ณผ ์ด์ ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
ํ ์ด๋ธ ์์ฑ ์์ ์ฃผ์ํด์ผํ ๊ท์น |
ํ ์ด๋ธ๋ช ์ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ ์ ์๋ ์ ์ ํ ์ด๋ฆ์ ์ฌ์ฉํ๋ค. ๊ฐ๋ฅํ ๋จ์ํ์ ๊ถ๊ณ ํ๋ค. |
ํ ์ด๋ธ ๋ช ์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ด๋ฆ๊ณผ ์ค๋ณต๋์ง ์์์ผ ํ๋ค. |
ํ ํ ์ด๋ธ ๋ด์์๋ ์นผ๋ผ๋ช ์ด ์ค๋ณต๋๊ฒ ์ง์ ๋ ์ ์๋ค. |
ํ ์ด๋ธ ์ด๋ฆ์ ์ง์ ํ๊ณ ๊ฐ ์นผ๋ผ๋ค์ ๊ดํธ '()' ๋ก ๋ฌถ์ด ์ง์ ํ๋ค. |
๊ฐ ์นผ๋ผ๋ค์ ์ฝค๋ง ',' ๋ก ๊ตฌ๋ถ๋๊ณ , ํ ์ด๋ธ ์์ฑ๋ฌธ์ ๋์ ํญ์ ์ธ๋ฏธ์ฝ๋ก ';' ์ผ๋ก ๋๋๋ค. |
์นผ๋ผ์ ๋ํด์๋ ๋ค๋ฅธ ํ ์ด๋ธ๊น์ง ๊ณ ๋ คํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์๋ ์ผ๊ด์ฑ ์๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค(๋ฐ์ดํฐ ํ์คํ ๊ด์ ) |
์นผ๋ผ ๋ค์ ๋ฐ์ดํฐ ์ ํ์ ๊ผญ ์ง์ ๋ผ์ผ ํ๋ค. |
ํ ์ด๋ธ๋ช ๊ณผ ์ปฌ๋ผ๋ช ์ ๋ฐ๋์ ๋ฌธ์๋ก ์์ํด์ผ ํ๊ณ , ๋ฒค๋๋ณ๋ก ๊ธธ์ด์ ๋ํ ํ๊ณ๊ฐ ์๋ค. |
๋ฒค๋์์ ์ฌ์ ์ ์ ์ํ ์์ฝ์ด(Reserved word)๋ ์ธ ์ ์๋ค. |
A-Z, a-z, 0-9, _, $, # ๋ฌธ์๋ง ํ์ฉ๋๋ค. |
ํ ์ด๋ธ ์์ฑ์ ๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ์ง ์์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์ด๋ธ์ด๋ ์นผ๋ผ๋ช ์ ๋๋ฌธ์๋ก ๋ง๋ค์ด์ง๋ค. |
DATETIME ๋ฐ์ดํฐ ์ ํ์๋ ๋ณ๋๋ก ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ง ์๋๋ค. |
๋ฌธ์ ๋ฐ์ดํฐ ์ ํ์ ๋ฐ๋์ ๊ฐ์ง ์ ์๋ ์ต๋ ๊ธธ์ด๋ฅผ ํ์ํด์ผ ํ๋ค. |
์นผ๋ผ๊ณผ ์นผ๋ผ์ ๊ตฌ๋ถ์ ์ฝค๋ง๋ก ํ๋, ๋ง์ง๋ง ์นผ๋ผ์ ์ฝค๋ง๋ฅผ ์ฐ์ง ์๋๋ค. |
์นผ๋ผ์ ๋ํ ์ ์ฝ์กฐ๊ฑด์ด ์์ผ๋ฉด CONSTRAINT๋ฅผ ์ด์ฉํด ์ถ๊ฐํ ์ ์๋ค. |
์ ์ฝ์กฐ๊ฑด์ ์ข ๋ฅ | ์ค๋ช |
PRIMARY KEY (๊ธฐ๋ณธํค) |
ํ
์ด๋ธ์ ์ ์ฅ๋ ํ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํ ๊ธฐ๋ณธํค๋ฅผ ์ ์ํ๋ค. ํ๋์ ํ
์ด๋ธ์ ํ๋์ ๊ธฐ๋ณธํค ์ ์ฝ๋ง ์ ์ํ ์ ์๋ค. ๊ธฐ๋ณธํค ์ ์ฝ์ ์ ์ํ๋ฉด DBMS๋ ์๋์ผ๋ก UNIQUE ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉฐ, ๊ธฐ๋ณธํค๋ฅผ ๊ตฌ์ฑํ๋ ์นผ๋ผ์๋ NULL์ ์ ๋ ฅํ ์ ์๋ค. ๊ฒฐ๊ตญ '๊ธฐ๋ณธํค ์ ์ฝ = ๊ณ ์ ํค ์ ์ฝ & NOT NULL ์ ์ฝ' ์ด ๋๋ค. |
UNIQUE (๊ณ ์ ํค) |
ํ ์ด๋ธ์ ์ ์ฅ๋ ํ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํ ๊ณ ์ ํค๋ฅผ ์ ์ํ๋ค. ๋จ NULL์ ๊ณ ์ ํค ์ ์ฝ์ ๋์์ด ์๋๋ฏ๋ก, NULL ๊ฐ์ ๊ฐ์ง ํ์ด ์ฌ๋ฌ ๊ฐ๊ฐ ์๋๋ผ๋ ๊ณ ์ ํค ์ ์ฝ ์๋ฐ์ด ๋์ง ์๋๋ค. |
NOT NULL | ์ด ์ ์ฝ์ ์ง์ ํจ์ผ๋ก์จ ํด๋น ์นผ๋ผ์ ํ์๋ก ์ ๋ ฅํด์ผ ํ๋ค. |
CHECK | ์ ๋ ฅํ ์ ์๋ ๊ฐ์ ๋ฒ์ ๋ฑ์ ์ ํํ๋ค. CHECK ์ ์ฝ์ผ๋ก๋ TRUE or FALSE๋ก ํ๊ฐํ ์ ์๋ ๋ ผ๋ฆฌ์์ ์ง์ ํ๋ค. |
FOREIGN KEY (์ธ๋ํค) |
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ๊ธฐ ์ํด ๊ธฐ๋ณธํค๋ฅผ ๋ค๋ฅธ ํ
์ด๋ธ์ ์ธ๋ํค๋ก ๋ณต์ฌํ๋ ๊ฒฝ์ฐ ์ธ๋ํค๊ฐ ์์ฑ๋๋ค. ์ธ๋ํค ์ง์ ์ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์ต์ ์ ์ ํํ ์ ์๋ค. |
2. ALTER TABLE
โพ๏ธ์นผ๋ผ์ ์ถ๊ฐ/์ญ์ ํ๊ฑฐ๋ ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐ/์ญ์ ํ๋ ์์
์ข ๋ฅ | ์์ |
ADD COLUMN (์นผ๋ผ ์ถ๊ฐ) |
ALTER TABLE PLAYER ADD (ADDRESS VARCHAR2(80)); *์ฃผ์ : ์๋ก ์ถ๊ฐ๋ ์นผ๋ผ์ ํ ์ด๋ธ์ ๋ง์ง๋ง ์นผ๋ผ์ด ๋๋ฉฐ ์นผ๋ผ์ ์์น๋ฅผ ์ง์ ํ ์๋ ์๋ค. |
DROP COLUMN (์นผ๋ผ ์ญ์ ) |
ALTER TABLE PLAYER DROP (ADDRESS); |
MODIFY COLUMN (์นผ๋ผ ์์ ) |
Oracle ALTER TABLE PLAYER MODIFY (ADDRESS VARCHAR2(100)); SQL Server ALTER TABLE PLAYER MODIFY ADDRESS VARCHAR(100); |
RENAME COLUMN (์นผ๋ผ๋ช ๋ณ๊ฒฝ) |
ALTER TABLE PLAYER RENAME COLUMN ADDRESS TO HOME; |
DROP CONSTRAINT (์ ์ฝ์กฐ๊ฑด ์ญ์ ) |
ALTER TABLE PLAYER DROP CONSTRAINT PLAYER_FK; |
ADD CONSTRAINT (๐์ ์ฝ์กฐ๊ฑด ์ถ๊ฐ) |
ALTER TABLE PLAYER ADD CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID); *์ฃผ์ : ์ธ๋ ํค๐์ ์ํด ์ฐธ์กฐ๋๋ ํ ์ด๋ธ์ ์ญ์ ํ ์ ์๋ค. ORA-02449 ์๋ฌ ๋ฐ์ *์ฃผ์ : PLAYER ํ ์ด๋ธ์ด ์ฐธ์กฐํ๋ TEAM ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๋ํ ์ญ์ ํ ์ ์๋ค. ORA-02292 : ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด(U_DDL.PLAYER_FK)์ด ์๋ฐฐ - ์์ ๋ ์ฝ๋ ๋ฐ๊ฒฌ |
3. RENAME TABLE
โพ๏ธRENAME ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด ํ ์ด๋ธ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์๋ค.
-- [์์ ] Oracle
RENAME TEAM TO TEAM_BACKUP;
-- [์์ ] SQL Server
RENAME TABLE TEAM TO TEAM_BACKUP;
4. DROP TABLE
โพ๏ธํ ์ด๋ธ์ ์ญ์ ํ๋ ๋ช ๋ น์ด
-- [์์ ]
DROP TABLE PLAYER;
5. TRUNCATE TABLE
โพ๏ธTRUNCATE TABLE ์ ํ ์ด๋ธ ์์ฒด๊ฐ ์ญ์ ๋๋ ๊ฒ์ด ์๋๊ณ , ํด๋น ํ ์ด๋ธ์ ๋ค์ด ์๋ ๋ชจ๋ ํ๋ค์ด ์ ๊ฑฐ๋๊ณ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ํด์ ํ๋ค. ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ์์ ํ ์ญ์ ํ๊ธฐ ์ํด์๋ DROP TABLE์ ์คํํ๋ฉด ๋๋ค.
-- [์์ ]
TRUNCATE TABLE TEAM;
ํ
์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ,
์์คํ
ํ์ฉ ์ธก๋ฉด์์๋ DELETE ๋ณด๋ค๋ ์์คํ
๋ถํ๊ฐ ์ ์ TRUNCATE TABLE์ ๊ถ๊ณ ํ๋ค.
*TRUNCATE TABLE์ ๊ฒฝ์ฐ ์ ์์ ์ธ ๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
โจ์ 4์ DCL
1. DCL ๊ฐ์
โพ๏ธ์ ์ ์์ฑ ๋ฐ ๊ถํ์ ์ ์ดํ ์ ์๋ DCL(Data Control Language) ๋ช ๋ น์ด
2. ์ ์ ์ ๊ถํ
โพ๏ธ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ์ํด ์๋ก์ด ์ ์ ๋ฅผ ์์ฑํ๊ณ , ํ ์ด๋ธ ๋ฐ ์ค๋ธ์ ํธ ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ค.
Oracle ์์ ์ ๊ณตํ๋ ์ ์ ๋ค | ์ญํ |
SCOTT | Oracle ํ
์คํธ์ฉ ์ํ ๊ณ์ Default ํจ์ค์๋ : TIGER |
SYS | ๋ฐฑ์
๋ฐ ๋ณต๊ตฌ ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋ชจ๋ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ ์ต์์ ๊ด๋ฆฌ์ ๊ณ์ |
SYSTEM | ๋ฐฑ์
, ๋ณต๊ตฌ ๋ฑ ์ผ๋ถ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ์ธํ ๋ชจ๋ ์์คํ
๊ถํ์ ๋ถ์ฌ๋ฐ์ DBA ๊ณ์ (Oracle ์ค์น ์์ ํจ์ค์๋ ์ค์ ) |
์ค๋ธ์ ํธ ๊ถํ๊ณผ ์ค๋ธ์ ํธ์์ ๊ด๊ณ (Oracle ์ฌ๋ก)
๊ฐ์ฒด ๊ถํ | ํ ์ด๋ธ | VIEWS | SEQUENCE | PROCEDURE |
ALTER | O | O | ||
DELETE | O | O | ||
EXECUTE | O | |||
INDEX | O | |||
INSERT | O | O | ||
REFERENCES | O | |||
SELECT | O | O | O | |
UPDATE | O | O |
์ค๋ธ์ ํธ ๊ถํ๊ณผ ์ค๋ธ์ ํธ์์ ๊ด๊ณ (SQL Server ์ฌ๋ก)
๊ฐ์ฒด ๊ถํ | ํ ์ด๋ธ | VIEWS | FUNCTION | PROCEDURE |
ALTER | O | O | ||
DELETE | O | O | O | |
EXECUTE | O | |||
INDEX | O | |||
INSERT | O | O | ||
REFERENCES | O | |||
SELECT | O | O | O | |
UPDATE | O | O |
3. Role์ ์ด์ฉํ ๊ถํ ๋ถ์ฌ
โพ๏ธ์ ์ ๋ค๊ณผ ๊ถํ๋ค ์ฌ์ด์์ ์ค๊ฐ ์ญํ ์ ํ๋ ROLE
๊ตฌ๋ถ | ์์ |
ROLE ์์ฑ | CREATE ROLE [๋กค์ด๋ฆ]; |
๊ถํ ๋ถ์ฌ | GRANT CREATE SESSION , CREATE TABLE TO [๋กค์ด๋ฆ]; |
๊ถํ ํ์ | REVOKE CREATE SESSION , CREATE TABLE FROM [๋กค์ด๋ฆ]; |
CONNECT ROLE๊ณผ RESOURCE ROLE์ ํฌํจ๋ ๊ถํ ๋ชฉ๋ก (Oracle ์ฌ๋ก)
CONNECT | RESOURCE |
CREATE SESSION |
CREATE CLUSTER |
CREATE INDEXTYPE | |
CREATE OPERATOR | |
CREATE PROCEDURE | |
CREATE SEQUENCE | |
CREATE TABLE | |
CREATE TRIGGER | |
CREATE TYPE |
SQL Server ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ROLE์ ๋ฉค๋ฒ๋ก ์ฐธ์ฌํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค.
ํน์ ๋ก๊ทธ์ธ์ด ๋ฉค๋ฒ๋ก ์ฐธ์ฌํ ์ ์๋ ์๋ฒ ์์ค ์ญํ (SQL SERVER ์ฌ๋ก) ๋ ์๋์ ๊ฐ๋ค.
์ญํ ๋ช | ์ค๋ช |
public | ๋ชจ๋ SQL Server ๋ก๊ทธ์ธ์ PUBLIC ์๋ฒ ์ญํ ์ ์ํ๋ค. |
bulkadmin | BULK INSERT ๋ฌธ์ ์ํํ ์ ์๋ค. |
dbcreator | ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑ, ๋ณ๊ฒฝ, ์ญ์ , ๋ณต์ํ ์ ์๋ค. |
diskadmin | ๋์คํฌ ํ์ผ์ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. |
processadmin | SQL Server์ ์ธ์คํด์ค์์ ์คํ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ ์ ์๋ค. |
securityadmin | ๋ก๊ทธ์ธ ๋ฐ ํด๋น ์์ฑ์ ๊ด๋ฆฌํ๋ค. ์๋ฒ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์ ์ฌ์ฉ ๊ถํ์ ๋ถ์ฌ(GRANT), ๊ฑฐ๋ถ(DENY), ์ทจ์(REVOKE)ํ ์ ์๋ค. ๋ํ ๋ก๊ทธ์ธ ์ํธ๋ฅผ ๋ค์ ์ค์ ํ ์ ์๋ค. |
serveradmin | ์๋ฒ ์ฐจ์์ ๊ตฌ์ฑ ์ต์ ์ ๋ณ๊ฒฝํ๊ณ ์๋ฒ๋ฅผ ์ข ๋ฃํ ์ ์๋ค. |
setupadmin | ์ฐ๊ฒฐ๋ ์๋ฒ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋ค. |
sysadmin | ์๋ฒ์์ ๋ชจ๋ ์์ ์ ์ํํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Windows BUILTIN \ Administrators ๊ทธ๋ฃน์ ๋ฉค๋ฒ์ธ ๋ก์ปฌ ๊ด๋ฆฌ์ ๊ทธ๋ฃน์ sysadmin ๊ณ ์ ์๋ฒ ์ญํ ์ ๋ฉค๋ฒ์ด๋ค. |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค ์ญํ ๋ช (SQL Server ์ฌ๋ก)
์ญํ ๋ช | ์ค๋ช |
db_accessadmin | Windows ๋ก๊ทธ์ธ, WIndows ๊ทธ๋ฃน ๋ฐ SQL Server ๋ก๊ทธ์ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋ค |
db_backupoperator | ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐฑ์ ํ ์ ์๋ค. |
db_datareader | ๋ชจ๋ ์ฌ์ฉ์ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค. |
db_datawriter | ๋ชจ๋ ์ฌ์ฉ์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์ญ์ , ๋ณ๊ฒฝํ ์ ์๋ค. |
db_ddladmin | ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ชจ๋ DDL ๋ช ๋ น์ ์ํํ ์ ์๋ค. |
db_denydatareader | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์๋ ์ฌ์ฉ์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค. |
db_denydatawriter | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ๋ชจ๋ ์ฌ์ฉ์ ํ ์ด๋ธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์ญ์ , ๋ณ๊ฒฝํ ์ ์๋ค. |
db_owner | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์ ์๋ ๋ชจ๋ ๊ตฌ์ฑ ๋ฐ ์ ์ง๊ด๋ฆฌ ์์ ์ ์ํํ ์ ์๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ ์๋ ์๋ค. |
db_securityadmin | ์ญํ ๋ฉค๋ฒ ์๊ฒฉ์ ์์ ํ๊ณ ์ฌ์ฉ ๊ถํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค. ์ด ์ญํ ์ ๋ณด์ ์ฃผ์ฒด๋ฅผ ์ถ๊ฐํ๋ฉด ์ํ์ง ์๋ ๊ถํ ์์น์ด ์ค์ ๋ ์ ์๋ค. |
โจ์ฅ ์์ฝ
๋ช ๋ น์ด | ์ญํ | ์ |
DML |
๋ฐ์ดํฐ(ํ)๋ฅผ ๊ฒ์, ์์ , ์ฝ์ , ์ญ์ | INSERT INTO UPDATE DELETE MERGE (INSERT + UPDATE) |
TCL | ํธ๋์ญ์ ์ ๊ด๋ฆฌ, ์ ์ดํ๋ ๋ช ๋ น์ด๋ฅผ ์๋ฏธ | COMMIT ROLLBACK SAVEPOINT |
DDL | ๋ฐ์ดํฐ ํ ์ด๋ธ(์ )์ ์์ฑ, ์์ , ์ญ์ | CREATE TABLE ALTER TABLE RENAME TABLE / SP_RENAME 'ํ ์ด๋ธ๋ช ','์๋ก์ดํ ์ด๋ธ๋ช ' DROP TABLE *TRUNCATE TABLE |
DCL | ๋ฐ์ดํฐ ์ฌ์ฉ์ ๋๋ ๊ฐ์ฒด์ ์ฌ์ฉ๊ถํ์ ๊ด๋ฆฌํ๋ ๋ช ๋ น์ด | GRANT ๊ถํ ์์ REVOKE ๊ถํ ํ์ |
'IT์๊ฒฉ์ฆ ๊ณต๋ถ > SQLD ์๊ฒฉ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] ๋ถ์ ๋น๊ต์ฐ์ฐ์ <> (๋ฌธ์ ํ์ด/ํด์ค) (0) | 2022.05.16 |
---|---|
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 3์ฅ ๊ด๋ฆฌ ๊ตฌ๋ฌธ - ์ฐ์ต๋ฌธ์ (์ด 7๋ฌธ์ ) (1) | 2022.04.22 |
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 2์ฅ SQL ํ์ฉ - ์ฐ์ต๋ฌธ์ (2) | 2022.04.15 |
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 2์ฅ SQL ํ์ฉ (0) | 2022.04.14 |
[SQL ์ ๋ฌธ๊ฐ] ๊ณผ๋ชฉII. ์ 1์ฅ SQL ๊ธฐ๋ณธ - ์ฐ์ต๋ฌธ์ (1) | 2022.04.14 |