DCL ( Data Control Language )

- 데이터를 제어하는 언어

 

DCL 명령어의 종류 

COMMIT 변경된 데이터의 내용을 테이블에 덮어 씌움
ROLLBACK 변경된 데이터의 내용을 취소하고, 마지막으로 커밋 된 상태로 복구
SAVEPOINT 저장점을 만들어, 롤백 시에 마지막 커밋 시점이 아닌 해당 저장점의 시점까지만 변경 내용을 취소
GRANT 사용자에게 데이터베이스에 대한 권한을 부여 하는 명령어
REVOKE 사용자에게 부여 된 데이터베이스의 권한을 취소 하는 명령어

 

COMMIT

COMMIT;
- 변경된 데이터의 내용을 테이블에 덮어 씌워 저장하고 트랜잭션을 종료
- DDL이나 DCL의 경우 명령어 실행 후에 트랜잭션이 자동으로 종료되지만, DML의 경우 COMMIT 또는 ROLLBACK을 이용하여 트랜잭션의 종료 처리를 해줘야 함
※ 트랜잭션 : DB의 작업 단위로써, 데이터베이스에 최종적으로 반영되기 전 상태인 변경 내용들의 묶음

 

ROLLBACK

1. ROLLBACK;
2. ROLLBACK [TO 세이브포인트];
- '1. 마지막 커밋 시점' 혹은 '2. 세이브포인트의 시점'으로부터 변경된 데이터의 내용을 모두 취소하고 트랜잭션을 종료
- 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 모두 실행되지 않은 상태로 남아있어야 함
일관성 트랜잭션 실행 후, 유효 범위/제약 조건 등이 이전 상태와 모순되지 않아 정상적인 결과를 갖는 상태여야 함
고립성(격리성) 트랜잭션의 실행 중에는 다른 트랜잭션의 접근으로 영향을 받을 수 없어야 함
지속성(영속성) 트랜잭션이 성공적으로 실행되면, 갱신된 내용은 다음 트랜잭션의 실행 전 까지 영구적으로 반영이 되어야 함

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기