# 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;