DCL ( Data Control Language )
- 데이터를 제어하는 언어
DCL 명령어의 종류
COMMIT | 변경된 데이터의 내용을 테이블에 덮어 씌움 |
ROLLBACK | 변경된 데이터의 내용을 취소하고, 마지막으로 커밋 된 상태로 복구 |
SAVEPOINT | 저장점을 만들어, 롤백 시에 마지막 커밋 시점이 아닌 해당 저장점의 시점까지만 변경 내용을 취소 |
GRANT | 사용자에게 데이터베이스에 대한 권한을 부여 하는 명령어 |
REVOKE | 사용자에게 부여 된 데이터베이스의 권한을 취소 하는 명령어 |
COMMIT
- 변경된 데이터의 내용을 테이블에 덮어 씌워 저장하고 트랜잭션을 종료COMMIT;
- DDL이나 DCL의 경우 명령어 실행 후에 트랜잭션이 자동으로 종료되지만, DML의 경우 COMMIT 또는 ROLLBACK을 이용하여 트랜잭션의 종료 처리를 해줘야 함
※ 트랜잭션 : DB의 작업 단위로써, 데이터베이스에 최종적으로 반영되기 전 상태인 변경 내용들의 묶음
ROLLBACK
- '1. 마지막 커밋 시점' 혹은 '2. 세이브포인트의 시점'으로부터 변경된 데이터의 내용을 모두 취소하고 트랜잭션을 종료1. ROLLBACK; 2. ROLLBACK [TO 세이브포인트];
- DB가 비정상적으로 종료되면 자동으로 데이터의 롤백이 실행 됨
SAVEPOINT
- 특정 시점에 저장점을 만들어, 작업 중 해당 시점으로 롤백이 가능하게 해줌SAVEPOINT 저장점이름; → ROLLBACK TO 저장점이름; -- DBMS마다 문법이 다를 수 있으므로 주의 바랍니다!
- 동일한 이름으로 저장점을 만들었을 때엔, 나중에 만들어진 저장점이 반영됨
GRANT
- 내용grant [권한] on [오브젝트명] to [사용자명/롤명/PUBLIC] [권한 부여 옵션]; EX : GRANT CREATE ROLE TO minjae WITH ADMIN OPTION; /* 권한의 대표 예시 CREATE SESSION : 데이터 베이스를 연결할 수 있는 권한 CREATE TABLE : 테이블을 생성할 수 있는 권한 CREATE SEQUENCE : 시퀀스를 생성할 수 있는 권한 CREATE VIEW : 뷰를 생성할 수 있는 권한 CREATE PROCEDURE : 프로시저를 생성할 수 있는 권한 CREATE ROLE : 오라클 데이터베이스 역할을 생성할 수 있는 권한 ALTER USER : 생성한 사용자의 정의를 변경할 수 있는 권한 DROP USER : 생성한 사용자를 삭제시키는 권한 가 있습니다. */ --> 오브젝트 종류 : Table, View, Sequence, Procedure 등 --> ( 권한에 따라 ON절은 생략 가능 ) /* TO 대상 1. 사용자명 2. 롤명 : ROLE에 소속된 사용자 전체에 부여 (롤은 CREATE를 통해 만들 수 있는데 추후 내용 보완 예정) 3. PUBLIC : 모든 사용자에게 해당 권한 부여 */ /* 권한 부여 옵션 WITH GRANT OPTION : TO의 대상이 받은 권한을 다른 유저에게 부여 가능 WITH ADMIN OPTION : TO의 대상이 받은 권한을 다른 유저 또는 특정 롤에 부여 가능 */
REVOKE
- 내용REVOKE [권한] ON [오브젝트명] TO [사용자명/롤명/PUBLIC] [CASCADE CONSTRAINTS]; EX : REVOKE select on table_a TO minjae CASCADE CONSTRAINTS; -- CASCADE CONSTRAINTS : 참조 객체 권한에서 사용 된 참조 무결성 제한을 같이 삭제 가능 -- WITH GRANT OPTION을 가진 사용자의 객체 권한을 REVOKE하면 해당 사용자가 부여한 객체 권한들까지 같이 REVOKE되는 종속철회가 발생
TCL ( Transaction Control Language )
- DCL의 명령어 중 트랜잭션에 관여하는 'COMMIT / ROLLBACK / SAVEPOINT'만을 따로 분리하여, TCL이라고도 함
트랜잭션의 특징 ( = ACID )
원자성 | 트랜잭션 내의 연산들은 모두 성공적으로 실행 or 모두 실행되지 않은 상태로 남아있어야 함 |
일관성 | 트랜잭션 실행 후, 유효 범위/제약 조건 등이 이전 상태와 모순되지 않아 정상적인 결과를 갖는 상태여야 함 |
고립성(격리성) | 트랜잭션의 실행 중에는 다른 트랜잭션의 접근으로 영향을 받을 수 없어야 함 |
지속성(영속성) | 트랜잭션이 성공적으로 실행되면, 갱신된 내용은 다음 트랜잭션의 실행 전 까지 영구적으로 반영이 되어야 함 |