[DB] 데이터베이스 언어 SQL(Structured Query Language) - DCL
2021. 10. 16. 20:52ㆍMajor`/DB
SQL 기능에 따른 분류
- 데이터 정의어(DDL : Data Definition Language)
- 테이블 생성, 변경, 제거
- CREATE, ALTER, DROP 문
- 데이터 조작어(DML : Data Manipulation Language)
- 생성된 테이블에 데이터를 검색, 삽입, 수정, 삭제
- SELECT, INSERT, UPDATE, DELETE 문
- 데이터 제어어(DCL : Data Control Language)
- 사용자 접근 제어, 백업과 회복, 동시성 제어 등
- GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT 문
데이터 제어어(DCL)
1. GRANT : 권한 생성
- 데이터베이스 관리자가 사용자에게 권한 부여 (CONNECT 권한 및 RESOURCE 권한)
- CONNECT : 접속 권한
- RESOURCE : 객체(생성, 수정, 삭제), 데이터(입력, 수정, 조회, 삭제) 권한
- RESOURCE로 권한을 주지 않고 테이블 생성 데이터 입력만 가능하도록 일부 권한만 줄 수 있다
- GRANT 권한 종류 1, 권한 종류 2 TO 권한을 줄 사용자
GRANT CONNECT, RESOURCE TO a; -- 유저 a에게 권한 주기
----------------------------------------------------
GRANT SELECT ON [TABLE NAME] TO [USER];
GRANT INSERT ON [TABLE NAME] TO [USER];
GRANT DELETE ON [TABLE NAME] TO [USER];
GRANT UPDATE ON [TABLE NAME] TO [USER];
-- 또는
GRANT SELECT, INSERT, DELETE, UPDATE ON [TABLE NAME] TO [USER] ;
2. REVOKE : 권한 회수
- 데이터베이스 관리자가 사용자에게 권한 회수
- REVOKE 권한 종류1, 권한 종류2 FROM 권한을 삭제할 사용자
REVOKE CONNECT, RESOURCE FROM a; -- 유저 a 권한 회수
----------------------------------------------------
REVOKE SELECT ON [TABLE NAME] FROM [USER];
REVOKE INSERT ON [TABLE NAME] FROM [USER];
REVOKE DELETE ON [TABLE NAME] FROM [USER];
REVOKE UPDATE ON [TABLE NAME] FROM [USER];
-- 또는
REVOKE SELECT, INSERT, DELETE, UPDATE ON [TABLE NAME] FROM [USER] ;
3. COMMIT : 완료, 확정
- 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어
- 트랜젝션의 처리 과정을 DB에 반영하기 위해, 변경된 내용을 모두 영구 저장
- COMMIT을 수행하면, 하나의 트랜젝션 과정을 종료하게 된다
- TRANSACTION(INSERT, UPDATE, DELETE) 작업 내용을 실제 DB에 저장한다
- 이전 데이터가 완전히 UPDATE 된다
- 모든 사용자가 변경한 데이터의 결과를 볼 수 있다
- 자동 COMMIT 되는 경우
- SQL*PLUS가 정상 종료된 경우
- DDL과 DCL 명령문이 수행된 경우
COMMIT;
4. ROLLBACK : 복원
- COMMIT 되지 않은 변경된 내용을 취소하고 DB를 이전 상태로 되돌리는 명령어
- 마지막 COMMIT 한 상태로 되돌아간다
- 작업 중 문제가 발생했을 때, 트랜젝션 처리과정에서 발생한 변경 사항을 취소하고, 트랜젝션 과정을 종료시킨다
- TRANSACTION(INSERT, UPDATE, DELETE) 작업 내용을 취소한다
- 자동 ROLLBACK 되는 경우
- SQL*PLUS가 비정상 종료된 경우
- 정전이 발생했거나 컴퓨터가 DOWN 된 경우
ROLLBACK;
※ COMMIT 명령어와 ROLLBACK 명령어의 장점
- 데이터 무결성이 보장된다
- 영구적으로 변경하기 전에 데이터의 변경사항을 확인할 수 있다
- 논리적으로 연관된 작업을 그룹화할 수 있다