DCL
DCL은 Data Control Language 약어로 데이터베이스에서 데이터의 접근과 사용을 제어하는 SQL 명령어이다. 데이터를 보호하기 위한 데이터 보안의 역할을 수행한다.
- GRANT : 특정 사용자에게 특정 데이터베이스나 테이블에 대한 권한을 부여한다.
- REVOKE : 특정 사용자에게 부여된 권한을 취소한다.
# 해당 테이블에 대한 SELECT, INSERT 권한 부여
GRANT SELECT, INSERT ON 테이블명 TO '사용자';
# 해당 테이블에 대한 권한을 취소
REVOKE INSERT ON 테이블명 FROM '사용자';
TCL
TCL는 Transaction Control Language로 데이터베이스에서 트랜잭션의 제어를 위해 사용되는 명령어 집합이다. 트랜잭션은 일련의 데이터베이스의 데이터 처리의 한 단위로, 하나의 트랜잭션은 모두 성공적으로 완료되거나 전혀 완료되지 않는 방식으로 처리된다.
예를 들어서 돈을 인출하는 일련의 과정(현금인출명령 - 본인인증 - 현금지급 - 잔액차감) 중에서 하나라도 제대로 처리되지 않을 경우에는 그 과정들이 전부 처리되지 않도록 묶음으로 처리해야한다. 이 묶은 일련의 과정을 트랜잭션이라고 한다.
- START TRANSACTION : 트랜잭션 시작을 선언한다. 모든 데이터 변경 작업이 하나의 트랜잭션으로 묶는다.
- COMMIT : 현재 트랜잭션 내에서 수행한 모든 변경사항을 저장한다. COMMIT을 실행하면 모든 작업이 완료된 것으로 간주되어 이전 상태로 되돌릴 수 없다.
- SELECT @@AUTOCOMMIT;
현재 오토커밋의 상태를 확인할 수 있다. ( 1 = true, 0 = false )
SET AUTOCOMMIT = FALSE;
오토커밋의 경우에는 각 SQL문이 실행될 때마다 자동으로 트랜잭션이 커밋되기 때문에 FALSE로 사용한다.
- SELECT @@AUTOCOMMIT;
- SAVEPOINT : 트랜잭션 내에서 특정 시점을 설정한다.
- ROLLBACK : 현재 트랜잭션에서 수행한 변경사항을 취소하고 마지막 COMMIT, SAVEPOINT로 되돌린다.
SELECT @@AUTOCOMMIT;
SET AUTOCOMMIT = FALSE;
START TRANSACTION;
INSERT INTO userinfo(ename, gender, age, uloc) VALUES
('MOANA', 'WOMAN', 20, 'HAWAII');
UPDATE userinfo SET uloc = 'SEOUL' WHERE ename = 'MILLER';
ROLLBACK;
위의 SQL을 실행했을 때 INSERT와 UPDATE 문을 사용했지만, ROLLBACK을 통해서 현재 트랜잭션에서 수행한 변경사항을 취소했기 때문에 userinfo 데이터에 INSERT와 UPDATE가 되지 않은 모습을 볼 수 있다.
SELECT @@AUTOCOMMIT;
SET AUTOCOMMIT = FALSE;
START TRANSACTION;
INSERT INTO userinfo(ename, gender, age, uloc) VALUES
('MOANA', 'WOMAN', 20, 'HAWAII');
UPDATE userinfo SET uloc = 'SEOUL' WHERE ename = 'MILLER';
COMMIT;
ROLLBACK;
COMMIT을 사용하고나면 현재 트랜잭션 내에서 수행한 모든 변경사항을 저장했기 때문에 ROLLBACK을 통해서 되돌릴 수 없다. INSERT와 UPDATE가 시행되어 데이터가 들어간 모습을 볼 수 있다.
'Database > MariaDB' 카테고리의 다른 글
MariaDB : 데이터 무결성을 위한 제약 조건 (1) | 2024.10.17 |
---|---|
MariaDB : JSON 데이터 사용하기 (0) | 2024.10.17 |
MariaDB : DML(Data Manipulation Language)에 대해서 (1) | 2024.10.16 |
MariaDB : DDL(Data Definition Language)에 대해서 (0) | 2024.10.16 |
MariaDB : 서브쿼리에 대해서 (0) | 2024.10.15 |
MariaDB: JOIN절에 대해서 (0) | 2024.10.15 |
MariaDB : 그룹함수, GROUP BY, HAVING절에 대해서 (0) | 2024.10.14 |
MariaDB : SQL 주요함수에 대해서 (0) | 2024.10.14 |