13. DCL (data Control Language)
1) GRANT
- 데이터베이스 사용자에게 권한을 부여(권한이 있어야 연결, 입력, 수정, 삭제, 조회 가능)
GRANT privileges ON Object TO user; |
- privileges : 권한 / Object : 테이블명 |
* privileges 권한
SELECT |
지정된 테이블에 대해 SELECT 권한 부여 |
INSERT |
지정된 테이블에 대해 INSERT 권한 부여 |
UPDATE |
지정된 테이블에 대해 UPDATE 권한 부여 |
DELETE |
지정된 테이블에 대해 DELETE 권한 부여 |
REFERENCES | 지정된 테이블을 참조하는 제약조건을 생성하는 권한 부여 |
ALTER | 지정된 테이블에 대해 수정할 수 있는 권한 부여 |
INDEX | 지정된 테이블에 대해 인덱스를 생성할 수 있는 권한 부여 |
ALL | 테이블에 대한 모든 권한 부여 |
* WITH GRANT OPTION
WITH GRANT OPTION |
- 특정 사용자에게 권한을 부여할 수 있는 권한 A->B->C 일 때 B권한 뻇으면 C도 권한 회수됨 |
WITH ADMIN OPTION |
- 테이블에 대한 모든 권한 부여 A->B->C 일 떄 B 권한 뻇어도 C 권한은 회수 안됨 |
2) REVOKE
- 사용자에게 부여된 권한 회수
REVOKE privileges ON Object FROM user;
14. TCL
* 트랜잭션 : 데이터베이스의 작업을 처리하는 작업단위(연산단위)
* 트랜잭션의 특성
원자성 (Atomicity) | - 트랜잭션은 DB연산의 전부 또는 일부 실행만이 있음 (All or Nothing) - 트랜잭션의 처리가 완전히 끝나지 않았을 경우는 전혀 이루어지지 않은 것과 같음 |
일관성 (Consistency) | - 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 함 - 트랜잭션 실행 후에도 일관성이 유지되어야 함 |
고립성 (Isolation) | - 트랜잭션 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없음 - 즉 부분적 실행 결과를 다른 트랜잭션이 볼 수 없음(끼어들기 불가) |
연속성 (Durability) | - 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 함 |
1) COMMIT
- 변경할 데이터를 데이터베이스에 반영
- 변경 전 이전 데이터는 잃어버림
- COMMIT이 완료되면 |
데이터베이스 변경으로 인한 LOCK이 해제(UNLOCK)됨 다른 모든 데이터베이스 사용자는 변경된 데이터를 조작 가능 하나의 트랜잭션 과정을 종료 |
* AUTO COMMIT
- SQL*PLUS 프로그램을 정상적으로 종료하는 경우 자동 COMMIT 됨
- DDL 및 DCL을 사용하는 경우 자동 COMMIT 됨(DML은 안된다!)
- "set autocommit on;"을 SQL*PLUS에서 실행하면 자동 COMMIT 됨
* SQL SERVER사용시 commit 방법
① 기본 AUTO COMMIT
② 암시적 트랜잭션
- 시작은 DBMS가 처리, 끝은 사용자가 COMMIT 처리 (ORACLE과 같음)
③ 명시적 트랜잭션
- 시작 끝 모두 사용자가 지정
- BEGIN TRANSATION ~ DML ~ COMMIT TRANSACTION (BEGIN TRAN ~ COMMIT 가능)
- BEGIN TRANSATION ~ DML ~ ROLLBACK TRANSACTION (BEGIN TRAN ~ ROLLBACK 가능)
2) ROLLBACK
- ROLLBACK 실행하면 데이터에 대한 변경 사용을 모두 취소하고 트랜잭션 종료
- 이전 COMMIT 한 곳 까지 복구
- ROLLBACK 실행하면 LOCK이 해제되고 다른 사용자돠 데이터베이스 행을 조작할 수 있음
- SQL SERVER 은 기본 AUTO COMMIT이므로 ROLLBACK 시 명시적 트랜잭션으로 전언해야 함
3) SAVEPOINT(저장점)
- 트랜잭션을 작게 분할하여 관리하는 것. 지정된 위치까지만 트랜잭션을 ROLLBACK 할 수 있음
- SAVEPOINT <SAVEPOINT명> 실행
지정된 SAVEPOINT까지만 데이터 변경 취소 |
변경된 모든 데이터 취소 |
ROLLBACK TO <SAVEPOINT명>; |
ROLLBACK; |
- 한 번 세이브 포인트로 롤백 시 그 미래에 있던 세이브 포인트는 사라짐 -> 그 곳으로 롤백 불가능
* SQL SERVER
- SAVE TRANSACTION SAP1; (SAVE TRAN SVP2) : 세이브 포인트 1 만듬
- ROLLBACK TRANSACTION SVP1; (ROLLBACK TRAN SVP2) : 세이브 포인트 1로 롤백
'[자격증] SQLD (SQL Developer)' 카테고리의 다른 글
[SQLD][책없이 공부]2과목 02. SQL 활용_02 계층형 조회, 셀프 조인 (0) | 2019.11.26 |
---|---|
[SQLD][책없이 공부]2과목 02. SQL 활용_01 JOIN과 집합연산자 (0) | 2019.11.26 |
[SQLD][책없이 공부]2과목 01. SQL 기본_05 DECODE와 CASE문, ROWNUM과 ROWID (0) | 2019.11.14 |
[SQLD][책없이 공부]2과목 01. SQL 기본_04 함수 (0) | 2019.11.14 |
[SQLD][책없이 공부]2과목 01. SQL 기본_03 DML (0) | 2019.11.14 |