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로 롤백


+ Recent posts