지난 포스팅에 이어 Oracle의 명령어 DCL, TCL을 알아보도록 하자.
DCL과 TCL은 단순한 데이터 관리보다 복잡하게 느껴질 수가 있다.
DCL (Data Control Language)
DCL은 관리자 및 사용자의 접근 권한을 관리하는 데에 사용되는 SQL 명령어를 가리킨다.
아무리 배웠던 DDL, DML을 사용하고 싶다 하더라도, 접속한 사용자가 접근 권한이 없을 시 조작하지 못한다.
GRANT
GRANT문은 데이터베이스 객체에 대한 권한을 사용자나 역할에게 부여하는 명령어다.
역할을 사용자에게 부여함으로써 해당 역할이 가진 권한을 사용자가 이용할 수도 있다.
GRANT SELECT, INSERT ON STUDENT TO SCOTT;
GRANT ROLE1 TO SCOTT;
REVOKE
REVOKE문은 사용자나 역할에게 부여된 권한을 제거하는 명령어다.
REVOKE SELECT, INSERT ON STUDENT FROM SCOTT;
REVOKE ROLE1 TO SCOTT;
TCL (Transaction Control Language)
TCL은 트랜잭션을 관리하는 데에 사용되는 SQL 명령어를 가리킨다.
TCL을 알기 위해서는 먼저 트랜잭션이 무엇인지부터 알아보아야 한다.
트랜잭션이란 논리적인 작업 단위라고 볼 수 있다.
여러 SQL문을 트랜잭션으로 묶으면 하나의 작업 단위가 되고, 해당 작업 내에서 예외가 발생할 경우 작업 모두가 취소되도록 하여 데이터의 일관성을 유지시킨다.
트랜잭션의 특징은 ACID로 표기하는데, 각 알파벳이 뜻하는 것은 다음과 같다.
- 원자성 (Atomicity): 트랜잭션의 모든 작업은 완전히 수행되거나 전혀 수행되지 않아야 한다.
- 일관성 (Consistency): 트랜잭션이 실행되면 데이터베이스는 항상 일관된 상태를 유지해야 한다.
- 독립성 (Isolation): 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되어야 한다.
- 지속성 (Durability): 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 데이터베이스에 반영되어야 한다.
💡 Auto Commit에 대하여
Auto Commit 설정이 켜져있는 경우에는 COMMIT 명령을 내리지 않아도 자동으로 DML 작업을 수행한다. 즉, 개별 DML 명령문마다 Commit이 되는 것이다.
다른 RDBMS와 달리 Oracle은 기본적으로 Auto Commit 설정이 꺼져 있다.
DDL 명령어는 Auto Commit 설정과는 별개로 한 명령문마다 자동으로 Commit 된다.
COMMIT
COMMIT은 현재까지 작업한 모든 작업을 데이터베이스에 반영하는 명령어다.
ROLLBACK
ROLLBACK은 현재까지 작업한 작업, 혹은 지정된 SAVEPOINT 이후 작업들을 모두 되돌리는 명령어다.
SAVEPOINT
SAVEPOINT는 특정 지점을 저장하여, 나중에 해당 지점으로 되돌아갈 수 있도록 하는 명령어다.
INSERT INTO STUDENT (S_ID, FIRST_NM, LAST_NM, ADMISSION_DT)
VALUES(1111, '길동', '홍', '20240302');
ROLLBACK; --변경사항 반영되지 않음
INSERT INTO STUDENT (S_ID, FIRST_NM, LAST_NM, ADMISSION_DT)
VALUES(1111, '길동', '홍', '20240302');
COMMIT; --변경사항 반영
'데이터베이스 > SQL' 카테고리의 다른 글
[MySQL] Sql Error 1264 Out of range value for column 'col_name' (0) | 2024.07.15 |
---|---|
DB, DBMS, RDBMS, NoSQL (0) | 2024.07.11 |
[Oracle] DDL, DML (0) | 2024.07.10 |
[Oracle] Oracle Database 시작하기 (DBeaver, 계정 생성) (0) | 2024.07.09 |
DB UPSERT 쿼리문 만들기 (존재하면 UPDATE, 있으면 INSERT) (0) | 2024.07.05 |
지난 포스팅에 이어 Oracle의 명령어 DCL, TCL을 알아보도록 하자.
DCL과 TCL은 단순한 데이터 관리보다 복잡하게 느껴질 수가 있다.
DCL (Data Control Language)
DCL은 관리자 및 사용자의 접근 권한을 관리하는 데에 사용되는 SQL 명령어를 가리킨다.
아무리 배웠던 DDL, DML을 사용하고 싶다 하더라도, 접속한 사용자가 접근 권한이 없을 시 조작하지 못한다.
GRANT
GRANT문은 데이터베이스 객체에 대한 권한을 사용자나 역할에게 부여하는 명령어다.
역할을 사용자에게 부여함으로써 해당 역할이 가진 권한을 사용자가 이용할 수도 있다.
GRANT SELECT, INSERT ON STUDENT TO SCOTT;
GRANT ROLE1 TO SCOTT;
REVOKE
REVOKE문은 사용자나 역할에게 부여된 권한을 제거하는 명령어다.
REVOKE SELECT, INSERT ON STUDENT FROM SCOTT;
REVOKE ROLE1 TO SCOTT;
TCL (Transaction Control Language)
TCL은 트랜잭션을 관리하는 데에 사용되는 SQL 명령어를 가리킨다.
TCL을 알기 위해서는 먼저 트랜잭션이 무엇인지부터 알아보아야 한다.
트랜잭션이란 논리적인 작업 단위라고 볼 수 있다.
여러 SQL문을 트랜잭션으로 묶으면 하나의 작업 단위가 되고, 해당 작업 내에서 예외가 발생할 경우 작업 모두가 취소되도록 하여 데이터의 일관성을 유지시킨다.
트랜잭션의 특징은 ACID로 표기하는데, 각 알파벳이 뜻하는 것은 다음과 같다.
- 원자성 (Atomicity): 트랜잭션의 모든 작업은 완전히 수행되거나 전혀 수행되지 않아야 한다.
- 일관성 (Consistency): 트랜잭션이 실행되면 데이터베이스는 항상 일관된 상태를 유지해야 한다.
- 독립성 (Isolation): 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되어야 한다.
- 지속성 (Durability): 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 데이터베이스에 반영되어야 한다.
💡 Auto Commit에 대하여
Auto Commit 설정이 켜져있는 경우에는 COMMIT 명령을 내리지 않아도 자동으로 DML 작업을 수행한다. 즉, 개별 DML 명령문마다 Commit이 되는 것이다.
다른 RDBMS와 달리 Oracle은 기본적으로 Auto Commit 설정이 꺼져 있다.
DDL 명령어는 Auto Commit 설정과는 별개로 한 명령문마다 자동으로 Commit 된다.
COMMIT
COMMIT은 현재까지 작업한 모든 작업을 데이터베이스에 반영하는 명령어다.
ROLLBACK
ROLLBACK은 현재까지 작업한 작업, 혹은 지정된 SAVEPOINT 이후 작업들을 모두 되돌리는 명령어다.
SAVEPOINT
SAVEPOINT는 특정 지점을 저장하여, 나중에 해당 지점으로 되돌아갈 수 있도록 하는 명령어다.
INSERT INTO STUDENT (S_ID, FIRST_NM, LAST_NM, ADMISSION_DT)
VALUES(1111, '길동', '홍', '20240302');
ROLLBACK; --변경사항 반영되지 않음
INSERT INTO STUDENT (S_ID, FIRST_NM, LAST_NM, ADMISSION_DT)
VALUES(1111, '길동', '홍', '20240302');
COMMIT; --변경사항 반영
'데이터베이스 > SQL' 카테고리의 다른 글
[MySQL] Sql Error 1264 Out of range value for column 'col_name' (0) | 2024.07.15 |
---|---|
DB, DBMS, RDBMS, NoSQL (0) | 2024.07.11 |
[Oracle] DDL, DML (0) | 2024.07.10 |
[Oracle] Oracle Database 시작하기 (DBeaver, 계정 생성) (0) | 2024.07.09 |
DB UPSERT 쿼리문 만들기 (존재하면 UPDATE, 있으면 INSERT) (0) | 2024.07.05 |