Untitled_Blue

[SQL] DCL - COMMIT, ROLLBACK, GRANT, REVOKE 본문

Database/SQL

[SQL] DCL - COMMIT, ROLLBACK, GRANT, REVOKE

Untitled_Blue 2023. 6. 20. 22:00
반응형

안녕하세요. 이번 글은 DCL에 대한 설명입니다.

 

- DCL이란?

  • Data Control Language의 약자로 데이터를 조작하는 언어를 의미한다.

- COMMIT, ROLLBACK

  • COMMIT : 데이터의 조작 결과를 최종적으로 반영할 때 사용하는 언어
  • ROLLBACK : 데이터의 조작 내역을 이전으로 돌릴 때 사용하는 언어
select * from PRACTICE01;

delete from PRACTICE01 where STU_NAME = '현미주';

commit;

rollback;

다음 쿼리문은 PRACTICE01 테이블에서 현미주 학생의 데이터를 삭제하고 삭제 작업에 대한 내용을 최종 반영하고 나서 다시 이전 시점으로 (삭제 전 시점) 되돌리려고 하고 있는 점을 보여주고 있다. 하지만 commit 명령어를 사용한 이상 최종적으로 작업 내역이 반영되기 때문에 rollback을 사용해도 삭제한 데이터를 살릴 수 없다. 이러한 commit의 특성 때문에 데이터를 다룰 때나 commit 명령어를 사용할 떄 반드시 신중해야 한다.

select * from PRACTICE01;

delete from PRACTICE01 where STU_NAME = '현미주';

rollback;

좌측 : 현미주 학생의 데이터를 삭제한 이후의 테이블 우측 : 롤백을 통해 현미주 학생의 데이터를 복구한 뒤의 테이블

다음 쿼리문은 바로 이전의 쿼리문과 다르게 commit을 하지 않은 상태에서 rollback을 해서 삭제한 데이터를 복구한 점을 보여주고 있다. 실제로 데이터를 삭제하고 나서 다시 롤백을 실행하면 롤백 완료. 라는 결과를 볼 수 있으며 다시 조회해보면 정상적으로 데이터가 이전 시점으로 복구되었음을 확인할 수 있다.

- GRANT, REVOKE

  • GRANT : 사용자에게 특정 권한을 부여하기 위한 언어
  • REVOKE : 사용자에게서 특정 권한을 회수하기 위한 언어
GRANT [시스템 권한] TO [사용자] [WITH ADMIN OPTION];

다음 쿼리문은 사용자에게 특정 시스템 권한을 부여하겠다는 의미를 가지고 있다. 이때 선택사항으로 WITH ADMIN OPTION이라는 것이 있는데 이는 부여받은 권한을 다른 사용자에게도 부여할 권한을 허락하겠다는 뜻이다.

시스템 권한 설명
CREATE, ALTER, DROP USER 사용자 생성, 정보 수정, 삭제에 대한 권한
CREATE, ALTER SESSION 데이터베이스 접속 권한, 값에 대한 변경
CREATE, ALTER, DROP ANY INDEX 임의의 소유 테이블의 인덱스에 대한 생성, 수정, 삭제에 대한 권한
CREATE VIEW, SEQUENCE 뷰와 시퀀스 생성에 대한 권한
(DDL), (DML) ANY TABLE 임의의 소유 테이블에 대한 DML, DDL 문법에 대한 권한

전반적인 시스템 권한은 상단의 표와 같다. 이때 스키마는 DB를 구성하는 레코드의 크기와 각 레코드와의 관계 등을 정의하며 뷰는 가상 테이블을 의미한다. 또한 시퀀스는 각 행을 식별할 수 있는 고유의 값을 순서대로 부여하는 수를 의미한다.

REVOKE [객체 권한] ON [스키마.객체이름] FROM [사용자];

다음 쿼리문은 사용자로부터 특정 스키마에 대한 객체에 대한 특정 객체 권한을 회수한다는 뜻을 가지고 있다. 이때 스키마는 다른 사용자를 의미하며 객체이름의 특정 스키마(사용자)가 소유하고 있는 테이블을 의미한다. DCL에서의 스키마는 다른 사용자를 의미하며 객체는 다른 사용자 소유의 특정 테이블을 의미하고 있다는 점을 확인할 수 있다.

 

다음 글은 제약 조건에 대한 설명입니다. 감사합니다.

반응형