자격증/SQLD
[SQLD 자격증] 2과목 | TCL(ROLLBACK, SAVEPOINT, COMMIT)
seminj
2023. 2. 13. 17:19
728x90
반응형

관계형 데이터베이스

권한 받기 | 데이터 구조 정의 | 데이터 변형 | 데이터 조회 |
DCL (Data Control Language) |
DDL (Data Definition Language) |
DML (Data Manipulation Language) |
|
GRANT : 권한 부여 | CREATE : 구조 생성 | INSERT : 데이터 입력 | SELECT : 조회 |
REVOKE : 권한 회수 | ALTER : 구조 변경 | UPDATE : 데이터 수정 | |
DROP : 구조 삭제 | DELETE : 데이터 삭제 | ||
RENAME : 이름 변경 | |||
TRUNCATE : 테이블 초기화 |
TCL (Transaction Control Language)
- TCL : 트랜젝션을 제어하기 위한 언어
*트랜젝션: 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
DDL을 거쳐 DML을 통한 정보를 데이터베이스에서 조회를 할때 다음에도 확인 할 수 있도록 하는 것- COMMIT : 반영
- ROLLBACK : 취소
- SAVEPOINT : 위치지정

TCL 명령어 | |
COMMIT | 데이터에 대한 변화를 DB에 반영하기 위한 명령어 |
SAVEPOINT | 코드를 분할하기 위한 저장 포인트 지정 |
ROLLBACK | 트랜잭션이 시작되기 이전의 상태로 되돌리기 위한 언어 최신 COMMIT이나 특수한 SAVEPOINT로 되돌릴 수 있는 명령어 |
문제

정답
250

CREATE TABLE T1( -- 테이블 T1 생성
col1 varchar2(10) -- col1, col2 생성
col2 number(10)
);
INSERT INTO T1 VALUES(10, 100); -- col1, col2 컬럼에 각각 값을 넣어줌
INSERT INTO T1 VALUES(20, 200); -- col1, col2 컬럼에 각각 값을 넣어줌
INSERT INTO T1 VALUES(25, 250); -- col1, col2 컬럼에 각각 값을 넣어줌
SAVEPOINT S1; -- S1 임시저장
DELETE T1 WHERE col1 = 10;
UPDATE T1 SET col1 = 40 WHERE col2 = 200;
SAVEPOINT S1; -- S1 임시저장
-- col1 - 40, 30
-- col2 - 200, 250
INSERT INTO T1 VALUES(50, 500);
-- col1 - 40, 30, 50
-- col2 - 200, 250, 500
ROLLBACK TO SAVEPOINT S1; -- SAVEPOINT S1으로 돌아가라, BUT, S1이 두개일경우 가장 최신것으로 가면 됨
-- col1 - 40, 30
-- col2 - 200, 250
SELECT MAX(col2) FROM T1; -- col2에서 MAX가장 큰값 찾아줘
문제

정답
10, 50, 30
INSERT INTO T2 VALUES(10);
INSERT INTO T2 VALUES(20);
INSERT INTO T2 VALUES(30);
SAVEPOINT S1;
-- col1 - 10, 20, 30 ; 임시저장 S1
UPDATE T2 SET col1 = 50 WHERE col1 = 20;
SAVEPOINT S2;
-- col1 - 10, 50, 30 ; 임시저장 S2
DELETE T2 WHERE col1 = 30;
SAVEPOINT S3;
-- col1 - 10, 50 ; 임시저장 S3
INSERT INTO T2 VALUES(70);
-- col1 - 10, 50, 70
ROLLBACK S2;
-- col1 - 10, 50, 30 ; 임시저장 S2
COMMIT;
- DML은 자동 commit (반영) 되지 않음
- ROLLBACK, DROP 은 되돌릴 수 없다던 말
= [SQL Server] 기준 DDL = auto-commit 이 됨
- COMMIT 과 ROLLBACK 효과
- 데이터 무결성을 보장할 수 있다.
- 영구적인 변경 전 데이터에 대한 변동사항을 확인 할 수 있다.
- 논리적 연관성 있는 작업을 그룹화하여 처리할 수 있다.
문제

정답
10, 20, 30
INSERT INTO T2 VALUES(10);
INSERT INTO T2 VALUES(20);
INSERT INTO T2 VALUES(30);
COMMIT;
-- T2 col1 - 10, 20, 30
UPDATE T2 SET col1 = 50 WHERE col1 = 20;
DELETE T2 WHERE col1 = 30;
INSERT INTO T2 VALUES(70);
ROLLBACK;
COMMIT;
- ROLLBACK : SAVEPOINT가 없을 경우 가장 최신의 COMMIT 상태로 복원된다.
문제

정답
2, 5, 7
- DCL - GRANT(권한 부여), REVOKE(권한 회수)
- DDL - CREATE(구조 생성), ALTER(구조 변경), DROP(구조 삭제), RENAME(이름 변경), TRUNCATE(테이블 초기화)
- DML - INSERT(데이터 입력), UPDATE(데이터 수정), DELETE(데이터 삭제), SELECT(데이터 조회)
- TCL - COMMIT(반영), ROLLBACK(취소), SAVEPOINT(위치지정)
문제

정답
2
- 트랜잭션이 실행되는 동안 다른 트랜잭션에 영향을 받아 잘못된 결과를 만들어선 안된다. : 고립성
- all or nothing. 트랜잭션에서 정의된 연산은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 있어야한다. : 원자성
- 트랜잭션이 성공적으로 완료되면 해당 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다. : 지속성
- 트랜잭션 발생 전 데이터베이스 내용에 잘못된 점이 없다면 트랜잭션 수행 후에도 데이터베이스의 내용에 잘못이 있으면 안된다. : 일관성
SQLD 목차 바로가기
🧑💻지금 바로 수강신청해서 한 번에 합격하기👩💻
▶ 해당 영상은 10개월만에 8만명이 시청하신 "유튜브 SQLD 자격증 대표 인기강의" 입니다.
▶ 메타코드 유튜브 바로가기
※ 본 포스팅은 해당제품을 제공받아 직접 사용 후 작성되었습니다.
728x90
반응형