본문 바로가기

언어/SQL

[기본] SQLD 2과목 1장 공부 정리 7 (GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT)

과목 Ⅱ. 데이터모델링의 이해

 

1장 SQL 기본


9절 DCL(Data Control Language)

 

1. GRANT문

 

: 사용자에게 DB에 대한 권한을 부여

 

GRANT 권한 ON 데이터베이스.테이블 TO 사용자명;

 

<PRIVILEGES 권한>

권한 설명
SELECT 조회 권한
INSERT 입력 권한
UPDATE 변경 권한
DELETE 삭제 권한
REFERENCES 제약조건 생성 권한
ALTER 수정 권한
INDEX 인덱스 생성 권한
ALL 모든 권한

<WITH GRANT OPTION>

GRANT 옵션 설명
WITH GRANT OPTION - 특정 사용자에게 해당 권한을 부여할 수 있는 권한 부여
WITH ADMIN OPTION - 테이블에 대한 모든 권한 부여
#GRANT문
#thon 데이터베이스의 emp 테이블에 대한 조회, 입력, 변경, 삭제 권한을 test라는 사용자에게 부여

GRANT SELECT, INSERT, UPDATE, DELETE ON thon.EMP TO test;

#WITH GRANT OPTION 사용

grant all privileges on thon.dept to test
WITH GRANT OPTION;

이렇게 권한을 부여해주었다.
with grant option으로 모든 권한을 부여할 수 있는 권한을 test라는 사용자에게 부여해주었다.

실제로 권한 부여를 적용하려면 ## FLUSH PRIVILEGES; ##까지 실행해주어야한다.

 

SHOW GRANTS FOR 사용자@localhost;

로 사용자에게 부여된 권한을 확인할 수 있다.

제대로 된건가..?


2. REVOKE문

: 권한 회수

 

GRANT문으로 부여한 권한을 REVOKE문으로 회수할 수 있다.

 

REVOKE 권한 ON 데이터베이스.테이블 FROM 사용자;

 

#REVOKE문으로 권한 회수
#test라는 사용자의 thon데이터베이스에 대한 모든 권한 회수

REVOKE ALL PRIVILEGES ON thon.* from test;

14절 TCL(TRANSACTION CONTROL LANGUAGE)

 

1. COMMIT문

: INSERT, UPDATE, DELETE로 변경한 데이터를 DB에 반영 (변경 전 데이터는 사라짐)

 

- COMMIT 완료시 DB변경으로 인한 LOCK이 해제됨

- COMMIT 완료시 다른 DB 사용자가 변경된 데이터를 조작할 수 있음

- COMMIT 실행시 하나의 트랜잭션 과정이 종료됨

 

※ Oracle은 암시적 트랜잭션 관리를 하므로, 사용자가 COMMIT 혹은 ROLLBACK으로 꼭 트랜잭션을 종료시켜야 함.

※ 반면, SQL PLUS 프로그램을 정상적으로 종료하는 경우에는 자동으로 COMMIT됨.

#COMMIT문

COMMIT;

DDL문 혹은 DCL문(ex. CREATE, TRUNCATE, GRANT 등)을 수행했다면 자동 COMMIT됨


2. ROLLBACK

: ROLLBACK 실행시 데이터에 대한 변경 사용을 모두 취소하고 트랜잭션 종료 (이전에 COMMIT한 곳으로 복구)

#ROLLBACK

ROLLBACK;

3. SAVEPOINT (저장점)

: SAVEPOINT로 저장점을 지정해 ROLLBACK 사용시 SAVEPOINT 지점으로 복구

 

SAVEPOINT 저장점이름;

 

#SAVEPOINT

UPDATE EMP SET ENAME = '유정' WHERE EMPNO = 100;

SAVEPOINT P1;

UPDATE EMP SET ENAME = '홍설' WHERE EMPNO = 101;

SAVEPOINT P2;

UPDATE EMP SET ENAME = '설경구' WHERE EMPNO = 101;

ROLLBACK; #마지막 SAVEPOINT인 P2 지점으로 복구
# 따라서 EMPNO = 101인 데이터의 이름은 '홍설'로 복구됨

※ 만약 SAVEPOINT명을 동일하게 설정한다음 ROLLBACK 한다면 최초의 저장점으로 ROLLBACK된다.

 

SAVEPOINT와 ROLLBACK은 자주 나오므로 숙지해두자.


오늘은 DCL문으로 GRANT문과 REVOKE문, TCL문인 COMMIT, ROLLBACKT, SAVEPOINT를 보았다.

 

이제 드디어 다음부터는 SQL활용편으로 가서 조인부터 살펴보자.