과목 Ⅱ. 데이터모델링의 이해
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;
실제로 권한 부여를 적용하려면 ## 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활용편으로 가서 조인부터 살펴보자.