
▶ DCL(Data Control Language)
- 사용자에게 시스템 권한 또는 객체 접근 권한을 부여하거나 회수하는 데 사용하는 구문이다.
※ 시스템권한 : DB에 접근하는 권한, 객체를 생성할 수 있는 권한
※ 객체접근권한 : 특정 객체들을 조작할 수 있는 권한
● DCL 종류
- GRANT
- REVOKE
▶ GRANT
- 사용자에게 데이터베이스 특정 권한을 부여하는 명령어이다.
GRANT 권한1, 권한2, ... TO 사용자이름;
▶ REVOKE
- 사용자에게 부여되어있던 권한을 회수하는 데 사용하는 명령어이다.
REVOKE 권한1, 권한2, ... FROM 사용자이름;
▶ TCL(Transaction Control Language)
- 트랜잭션을 제어할 때 사용하는 명령어로, DML등을 사용하여 데이터의 변경사항을 트랜잭션에 묶어서 처리한다.
● 트랜잭션
- 트랜잭션이란 데이터베이스의 논리적 연산단위이다.
- DML문을 수행할 때 트랜잭션이 존재하지 않는다면 트랜잭션을 만들어서 묶는다.
트랜잭션이 존재한다면 해당 트랜잭션에 묶어서 처리한다.
- COMMIT 하기 전까지의 변경사항들을 하나의 트랜잭션에 담은 후 COMMIT 으로 하나의 트랜잭션을 데이터베이스에 반영한다.
● TCL 종류
- COMMIT
- ROLLBACK
- SAVEPOINT
▶ COMMIT
- 한 트랜잭션에 담겨있는 변경사항들을 실제 DB에 반영시키는 데 사용하는 명령어이다.
ex)
CREATE TABLE EMP
AS (SELECT EMP_ID, EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID));
DELETE FROM EMP
WHERE EMP_ID = 200;
COMMIT;
→ 변경사항들이 트랜잭션에 쌓인 후 COMMIT을 사용하여 트랜잭션에 담겨있는 변경사항들을 데이터베이스에 반영한다.
▶ ROLLBACK
- 한 트랜잭션에 담겨있는 변경사항들을 삭제(취소) 한 후, 마지막 COMMIT 시점으로 돌아가는 명령어
ex)
CREATE TABLE EMP
AS (SELECT EMP_ID, EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID));
DELETE FROM EMP
WHERE EMP_ID = 200;
DELETE FROM EMP
WHERE EMP_ID = 201;
ROLLBACK;
→ 테이블에서 특정 데이터들을 삭제하였지만, ROLLBACK을 진행하여 트랜잭션에 쌓였던 변경사항들이 삭제되고,
마지막 COMMIT 시점인 테이블 생성 후로 돌아갔다.
→ 따라서, 모두 실행해보면 200번 사원과 201번 사원이 삭제되었다가 다시 돌아온 것을 알 수 있다.
※ DDL문( CREATE, ALTER, DROP )을 수행하는 순간 기존 트랜잭션에 있던 변경사항들이 무조건 COMMIT 된다.
▶ SAVEPOINT
- 트랜잭션에 변경사항 중간에 저장점을 두어 원하는 시점으로 ROLLBACK할 수 있도록하는 명령어이다.
CREATE TABLE EMP
AS (SELECT EMP_ID, EMP_NAME, DEPT_TITLE
FROM EMPLOYEE
JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID));
DELETE FROM EMP
WHERE EMP_ID = 200;
SAVEPOINT SP1;
DELETE FROM EMP
WHERE EMP_ID = 201;
SAVEPOINT SP2;
ROLLBACK TO SP1;
→ 마지막에 세이브 포인트인 SP1으로 ROLLBACK을 진행하여 200번 사원의 데이터를 삭제한 후의 상황으로 돌아간다.
'SQL' 카테고리의 다른 글
| [SQL] 뷰(View), 시퀀스(Sequence), 트리거(Trigger) (0) | 2024.08.22 |
|---|---|
| [SQL] PL / SQL (0) | 2024.08.22 |
| [SQL] 제약 조건 (0) | 2024.08.20 |
| [SQL] DDL(데이터 정의어) (0) | 2024.08.20 |
| [SQL] DML(데이터 조작어) (0) | 2024.08.19 |