# Table of Contents
# DCL
DCL(Database Control Launuage)
- 무결성과 동시성 제어
- COMMIT
- ROLLBACK
- 보안과 권한
- GRANT
- REVOKE
# Transaction
- 여러 DML로 구성되는 하나의 논리적인 연산집합
- 하나의 트랜잭션은
COMMIT
되거나ROLLBACK
되어야한다 - 하나의 트랜잭션은
All or Nothing
이라는원자성
을 갖는다. - 트랜잭션이 실행되는 중간에 다른 트랜잭션의 연산이 침범하지 못하는
격리성
을 갖는다.
트랜잭션은 다음과 같이 실행한다.
START TRANSACTION;
INSERT INTO member(name, age, nation, gender) VALUES('paul', 35, 'england', 'man');
INSERT INTO member(name, age, nation, gender) VALUES('john', 13, 'use', 'man');
INSERT INTO member(name, age, nation, gender) VALUES('mike', 26, 'portugal', 'man');
INSERT INTO member(name, age, nation, gender) VALUES('eric', 43, 'span', 'man');
COMMIT;
동작 과정은 다음과 같다.
- 네 개의
INSERT
연산이 모두 성공한 후COMMIT
이 실행되는 시점에 데이터베이스에 반영된다. - 하나의 연산이라도 실패하면 모든 연산이
ROLLBACK
된다.
물론 사용자가 직접 ROLLBACK
을 호출할 수 있다.
START TRANSACTION;
INSERT INTO member(name, age, nation, gender) VALUES('paul', 35, 'england', 'man');
INSERT INTO member(name, age, nation, gender) VALUES('john', 13, 'use', 'man');
INSERT INTO member(name, age, nation, gender) VALUES('mike', 26, 'portugal', 'man');
INSERT INTO member(name, age, nation, gender) VALUES('eric', 43, 'span', 'man');
ROLLBACK;
# 권한
GRANT
와 REVOKE
로 권한을 관리할 수 있다.
# GRANT
GRANT
를 사용하여 특정 사용자에게 권한을 부여할 수 있다.
GRANT SELECT ON member to user;
GRANT INSERT ON member to user;
GRANT UPDATE ON member to user;
GRANT DELETE ON member to user;
WITH GRANT OPTION
을 추가하면 받은 사용자가 다른 사용자에게 권한을 다시 부여할 수 있다.
GRANT DELETE ON member to user WITH GRANT OPTION;
# REVOKE
REVOKE
를 사용하여 부여한 권한을 회수할 수 있다. CASCADE
옵션을 사용하면 그 사용자가 다른 사용자에게 부여한 권한들도 회수된다.
REVOKE SELECT FOR ON member FROM user CASCADE;
RESTRICT
옵션을 사용하면 그 사용자가 다른 사용자에게 권한을 부여했다면 권한 회수 작업 자체가 취소된다.
REVOKE SELECT FOR ON member FROM user RESTRICT;
GRANT OPTION FOR
옵션은 다른 사용자에게 권한을 부여할 수 있는 권한을 회수한다.
REVOKE SELECT GRANT OPTION FOR ON member FROM user;