함께하는 데이터 분석

[SQL] 트랜젝션 제어어(TCL) 본문

데이터분석 공부/SQL

[SQL] 트랜젝션 제어어(TCL)

JEONGHEON 2022. 4. 20. 23:42

이번에는 SQL 명령어 4가지 중 마지막인

 

트랜젝션 제어어(TCL)에 대해 알아보겠습니다.

 

트랜젝션 제어어는 데이터 조작어(DML) 명령어를

 

실행, 취소, 임시 저장할 때 사용하는 명령어입니다.

 

Workbench를 통해 알아보겠습니다.

 

 

 

테이블 생성

/* 테이블 생성 */
create table 인적사항 ( 
인덱스 int primary key,
이름 varchar(10),
생년월일 date not null,
성별 varchar(2)
);

전에 만들었던 인적사항 테이블을

 

그대로 가져왔습니다.

 

트랜젝션을 시작해보겠습니다.

 

 

 

트랜젝션 시작

/* 트랜젝션 시작 */
begin;

항상 트랜젝션을 시작할 때

 

begin; 을 실행해줘야 합니다.

 

이제 트랜젝션을 통해

 

취소를 하는 방법을 알아보겠습니다

 

 

 

취소(rollback)

/* 트랜젝션 시작 */
begin;

/* 테이블 데이터 삽입 */
insert into 인적사항 values (0, '최가', '1963-07-01', 'M');
insert into 인적사항 values (1, '최나', '1970-03-01', 'F');
insert into 인적사항 values (2, '최다', '1998-01-24', 'M');
insert into 인적사항 values (3, '최라', '2000-05-10', 'F');

트랜젝션을 시작한 다음

 

테이블에 데이터를 삽입해봤습니다.

 

데이터는 이전에 삽입한 데이터와 똑같습니다.

 

제대로 들어갔는지 확인해볼게요.

 

/* 테이블 조회 */
select * from 인적사항;

데이터가 제대로 들어갔네요.

 

이제 데이터 삽입한 것을 취소해보겠습니다.

 

/* 취소 */
rollback;

rollback; 을 통해 취소해줬습니다.

 

확인해보겠습니다.

 

/* 테이블 조회 */
select * from 인적사항;

데이터가 삽입되기 전으로 

 

롤백된 것을 확인할 수 있습니다.

 

이제는 취소가 아닌 실행을 알아볼게요.

 

 

 

실행(commit)

/* 트랜젝션 시작 */
begin;

/* 테이블 데이터 삽입 */
insert into 인적사항 values (0, '최가', '1963-07-01', 'M');
insert into 인적사항 values (1, '최나', '1970-03-01', 'F');
insert into 인적사항 values (2, '최다', '1998-01-24', 'M');
insert into 인적사항 values (3, '최라', '2000-05-10', 'F');

이번에도 트랜젝션을 시작한 다음

 

데이터를 삽입해줬습니다.

 

이제 실행을 시켜볼게요.

 

/* 실행 */
commit;

간단합니다.

 

commit; 을 실행해주면 됩니다.

 

/* 테이블 조회 */
select * from 인적사항;

데이터 삽입이 제대로 실행된 것을 확인할 수 있습니다.

 

마지막으로 임시저장에 대해 알아보겠습니다.

 

 

 

임시저장

delete from 인적사항;

/* 트랜젝션 시작 */
begin;

/* 테이블 데이터 삽입 */
insert into 인적사항 values (0, '최가', '1963-07-01', 'M');
insert into 인적사항 values (1, '최나', '1970-03-01', 'F');
insert into 인적사항 values (2, '최다', '1998-01-24', 'M');
insert into 인적사항 values (3, '최라', '2000-05-10', 'F');

임시저장을 하기 위해

 

아까 생성한 인적사항 데이터를 제거하고

 

트랜젝션을 재실행한 다음

 

데이터를 삽입해줬습니다.

 

확인해볼게요.

 

/* 테이블 조회 */
select * from 인적사항;

지금 이 지점을 savepoint a로 지정하겠습니다.

 

/* savepoint 저장 */
savepoint a;

이렇게 간단하게 savepoint a; 를

 

실행해주면 됩니다.

 

이제 데이터 수정을 한 다음

 

savepoint b를 설정하겠습니다.

 

/* 데이터 수정 */
update 인적사항 set 성별 = 'M';

/* savepoint 저장 */
savepoint b;

인적사항 테이블의 성별을 모두 M으로 바꿔줬습니다.

 

확인해보겠습니다.

 

/* 테이블 조회 */
select * from 인적사항;

지금 이 지점을 savepoint b로 지정하겠습니다.

 

/* savepoint 저장 */
savepoint b;

 

마지막으로 savepoint c를 지정해볼게요.

 

/* 데이터 수정 */
update 인적사항 set 성별 = 'F' where 이름 = '최나';

이름이 최나인 행의 성별 데이터를 F로 바꿔줬습니다.

 

제대로 수정됐는지 마찬가지로 확인해볼게요.

 

/* 테이블 조회 */
select * from 인적사항;

제대로 데이터가 수정됐네요.

 

이 지점을 마지막인 savepoint c로 지정할게요.

 

/* savepoint 저장 */
savepoint c;

이제 롤백을 해볼까요?

 

 

 

임시저장 b 지점으로 롤백

/* savepoint b로 rollback */
rollback to b;

두 번째 지점인 b 즉,

 

모든 성별이 M인 데이터로 롤백해주었습니다.

 

그럼 확인해볼까요?

 

/* 테이블 조회 */
select * from 인적사항;

이렇게 제대로 임시저장 b 지점으로 롤백이 됐네요.

 

마지막으로 아까 배운 commit으로 실행해주면 끝입니다.

 

/* 실행 */
commit;

여기까지 SQL 명령어인

 

트랜젝션 제어어(TCL)을 마무리하겠습니다!

'데이터분석 공부 > SQL' 카테고리의 다른 글

[SQL] 테이블 결합 - JOIN  (0) 2022.04.27
[SQL] 데이터 조회 - SELECT  (0) 2022.04.21
[SQL] 데이터 제어어(DCL)  (0) 2022.04.20
[SQL] 데이터 조작어(DML)  (0) 2022.04.19
[SQL] 데이터 정의어(DDL)  (0) 2022.04.18