topic★★★★★난이도 · 약 15분
DCL — 권한 & 트랜잭션 제어
GRANT · REVOKE · COMMIT · ROLLBACK · SAVEPOINT.
#SQL#DCL
왜 배우는가
권한 부여/회수와 트랜잭션 제어가 단답.
sql
-- 권한 부여
GRANT SELECT, INSERT ON 학생 TO 홍길동
WITH GRANT OPTION; -- 위임 가능
-- 권한 회수
REVOKE INSERT ON 학생 FROM 홍길동
CASCADE; -- 위임받은 자도 함께
-- 트랜잭션 제어
BEGIN;
UPDATE 계좌 SET 잔액 = 잔액 - 1000 WHERE id = 'A';
UPDATE 계좌 SET 잔액 = 잔액 + 1000 WHERE id = 'B';
COMMIT;
-- 부분 롤백
BEGIN;
INSERT ...;
SAVEPOINT sp1;
UPDATE ...;
ROLLBACK TO sp1; -- sp1 이후만 취소
COMMIT;| 명령 | 분류 | 역할 |
|---|---|---|
| GRANT | DCL | 권한 부여 |
| REVOKE | DCL | 권한 회수 |
| COMMIT | TCL | 트랜잭션 확정 |
| ROLLBACK | TCL | 트랜잭션 취소 |
| SAVEPOINT | TCL | 부분 롤백 지점 |
WITH GRANT OPTION — 권한을 받은 사용자가 그 권한을 다른 사용자에게 재부여할 수 있게 허용. REVOKE 시 CASCADE를 붙이면 연쇄 회수.
실기 드릴 2문항
database실기 드릴 · SQL 작성
사용자 `user1`에게 `사원` 테이블에 대한 SELECT, INSERT 권한을 부여하되, 위임 가능하게 하는 SQL을 작성하시오.
edit실기 드릴 · 단답형
트랜잭션의 특정 지점까지만 롤백할 수 있게 지점을 설정하는 SQL 명령은?