일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 태블로
- r
- tableau
- 딥러닝
- pandas
- 통계
- 시각화
- pytorch
- 파이썬
- Deep Learning Specialization
- sklearn
- 머신러닝
- 자격증
- Python
- 이것이 코딩테스트다
- 데이터분석
- SQLD
- 회귀분석
- ADsP
- Google ML Bootcamp
- 데이터분석준전문가
- scikit learn
- SQL
- 데이터 분석
- 코딩테스트
- 데이터 전처리
- ML
- matplotlib
- IRIS
- 이코테
- Today
- Total
함께하는 데이터 분석
[SQL] 트랜젝션 제어어(TCL) 본문
이번에는 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 |