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

# 권한

GRANTREVOKE로 권한을 관리할 수 있다.

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