일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- html 태그
- 해시
- StringTokenizer
- 블록체인강의
- 시스템프로그래밍
- 단국대학교 k-mooc
- javascript
- Node
- 힙
- K-MOOC 단국대학교 홍보단
- 자바입력받기
- 컴파일시스템
- national instruments
- 블록체인
- 블록체인 강의
- 2차원배열정렬
- 자료구조
- 자바문자열구분
- CSS 기초
- Entity
- 자바스크립트
- 혁신의기술2:신뢰의미래 블록체인을 만나다
- biginteger사용법
- attribute
- 우선순위큐
- K-MOOC
- stringreader
- StringBuilder
- html기초
- 자바
- Today
- Total
열정 실천
006. SQL - DCL 데이터 조작어 COMMIT, ROLLBACK, GRANT, REVOKE + SAVEPOINT, ROLE 본문
006. SQL - DCL 데이터 조작어 COMMIT, ROLLBACK, GRANT, REVOKE + SAVEPOINT, ROLE
구운오니 2024. 9. 24. 18:36DDL (Data Define Language)
DB구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정하는데 사용하는 언어
DML (Data Manipulation Language)
저장된 데이터를 실직적으로 관리하는데 사용하는 언어
DCL (Data Control Language)
데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용하는 언어
> DCL 유형
COMMIT | 현재 트랜잭션을 종료하고 트랜잭션의 갱신된 내용을 실제 물리적 디스크에 저장 |
ROLLBACK | 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구 |
GRANT | 데이터베이스 사용자에게 사용 권한을 부여 |
REVOKE | 데이터베이스 사용자의 사용 권한을 취소 |
COMMIT 문
- COMMIT 문을 사용하여 보류중인 모든 변경 내용(INSERT, UPDATE, DELETE)을 영구적으로 만든다.
- COMMIT 후 데이터 변경 사항이 데이터베이스 파일에 기록된다.
- 영향을 받은 행은 LOCK이 해제되고, 다른 사용자가 행을 변경할 수 있다.
mysql은 commit 기본 값이 1이여서 실습을 위해 잠시 0으로 해제
SET AUTOCOMMIT = 0;
INSERT INTO S_DEPT (deptno, dname, loc)
VALUES (60, 'LAW', 'LA');
COMMIT;
이렇게 데이터 변경 후 COMMIT 명령어로 디스크에 저장이 된다.
ROLLBACK 문
- 데이터의 변경이 취소되고, 데이터의 이전 상태가 복원
- n 영향을 받은 행은 LOCK이 해제되고, 다른 사용자가 행을 변경할 수 있다.
SMITH 삭제 후 없어진 것 확인 -> ROLLBACK -> 복구 !
SAVEPOINT
INSERT INTO S_EMP(empno, ename, hiredate, sal)
VALUES (3790, 'GOODMAN', SYSDATE(), 2000);
SAVEPOINT a;
INSERT INTO S_EMP(empno, ename, hiredate, sal)
VALUES (3791, 'BADMAN', SYSDATE(), 1000);
SAVEPOINT b;
INSERT INTO S_EMP(empno, ename, hiredate, sal)
VALUES (3792, 'YESMAN', SYSDATE(), 3000);
ROLLBACK TO SAVEPOINT a;
COMMIT;
⚠ 암묵적으로 COMMIT 및 ROLLBACK을 수행하는 상황이 있기 때문에 위와 같은 방법을 쓸 때는 주의해야한다.
- DDL 명령어 실행 ▶ 자동 COMMIT
- 데이터베이스 정상 종료 ▶ 자동 COMMIT
- 비정상 종료 및 시스템 오류 ▶ 자동 ROLLBACK
GRANT 와 REVOKE
GRANT 권한리스트 ON 테이블명 TO 사용자 [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] 권한리스트 ON 테이블명 FROM 사용자 [CASCADE];
※ 권한 종류 : ALL, SELECT, INSERT, DELETE, UPDATE
# WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한
# GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한 취소
# CASCADE : 권한 취소시 다른 사용자에게 부여한 권한도 연쇄적으로 취소
"GRANT"
▶ 현재 yewon 사용자에게 있는 권한 리스트
▶ root 로그인 상태에서 GRANT로 권한을 부여
GRANT CREATE, INSERT ON testdb.* TO 'yewon'@'localhost';
▶ 다시 yewon 사용자의 권한 리스트 확인
"REVOKE"
▶ root 로그인 상태에서 REVOKE로 권한 부여 취소
REVOKE INSERT ON testdb.* FROM 'yewon'@'localhost';
▶ 다시 yewon 사용자의 권한 리스트 확인
ROLE
- 역할 사용을 통해 권한 관리를 단순화 시킴
- 시스템 권한과 객체 권한으로 구성 가능
- 역할은 사용자가 소유하지 않고, 스키마에도 존재하지 않음.
CREATE ROLE role_name;
-> 이렇게 선언 후 GRANT로 역할을 부여하면 된다.
CREATE ROLE master; //역할 생성
GRANT ALL ON testdb.* TO master; //역할에 권한 부여
GRANT master TO 'yewon'@'localhost'; //사용자에게 역할 부여
▶ yewon 사용자의 권한 리스트 확인 :: master 역할 생김!
'CS > DATABASE' 카테고리의 다른 글
008. 관계대수와 관계해석 Relational Algebra & Relational Calculus (2) | 2024.10.03 |
---|---|
007. 관계형 데이터 모델 & 관계형 데이터베이스 제약조건 (1) | 2024.10.02 |
005. SQL - DML 데이터 조작어 _ 연산 및 SQL함수(산술,문자,집계), GROUP BY (0) | 2024.09.24 |
004. SQL - DML 데이터 조작어 SELECT, INSERT, DELETE, UPDATE (0) | 2024.09.24 |
003. SQL - DDL 데이터 정의어 CREATE, ALTER, DROP (0) | 2024.09.24 |