일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- web
- It
- 자바스크립트
- 파이썬
- SQL
- jsp
- Database
- frontend
- java
- 서블릿
- Method
- 웹
- JavaScript
- oracle
- PL/SQL
- 프론트엔드
- Servlet
- 문자열
- 함수
- 코딩
- Python
- Programming
- 메소드
- 데이터베이스
- String
- function
- HTML
- 프로그래밍
- 오라클
- Today
- Total
Untitled_Blue
[SQL] DCL - COMMIT, ROLLBACK, GRANT, REVOKE 본문
안녕하세요. 이번 글은 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에서의 스키마는 다른 사용자를 의미하며 객체는 다른 사용자 소유의 특정 테이블을 의미하고 있다는 점을 확인할 수 있다.
다음 글은 제약 조건에 대한 설명입니다. 감사합니다.
'Database > SQL' 카테고리의 다른 글
[SQL] 제약 조건 (0) | 2024.05.06 |
---|---|
[SQL] 테이블과 테이블을 연결하다. 조인 (Join) (0) | 2024.04.28 |
[SQL] 그룹별 데이터의 통계 - Group by and Having (0) | 2023.06.20 |
[SQL] 쿼리 안에 또 다른 쿼리?! - 서브쿼리 (Sub Query) (0) | 2023.06.19 |
[SQL] DML - INSERT, UPDATE, DELETE (0) | 2023.05.30 |