5. TCL (Transaction Control Language : 트랜잭션 제어어)
TCL란 DML(insert, update, delete)문이 실행되어서 DBMS(database management system)에 저장되거나, DML문을 수행하기 이전의 상태로 되돌리기 위해 실행되는 sql문이다.
- transaction(트랜잭션)의 사전적 의미는 거래 혹은 처리(과정)인데, '분리되어서는 안되는 논리적인 작업 단위'를 의미한다. 예를 들어 은행 송금 작업을 한다고 했을 때, 나의 통장에서 일정 금액이 빠져나가고 그 금액만큼의 돈이 다른 사람의 통장으로 들어가는 이 모든 일련의 작업들이 하나의 트랜잭션이 되는 것이다. 돈이 빠져나가는 것과 돈이 들어가는 것이 함께 일어나야하는, 분리되어서는 안되는 작업 단위인 것이다.
- DB에서의 트랜잭션의 시작점이라고 한다면 DML문을 실행하기 전 단계, 즉 DBMS에 접속한 순간이라든지 DML를 작업하고 commit을 했을 때나 rollback 을 통해 이전 commit으로 돌아갔을 때를 의미한다.
- 반대로 트랜잭션의 끝 점이라고 한다면 DB가 정상적으로든 비정상적으로든 종료되는 시점이나 DML문을 실행하고 commit 하는, 혹은 rollback 을 하는 바로 그 순간이 될 수 있고, 작업하는 세션을 종료할 때도 될 수 있다.
- TCL에는 다음의 세 종류가 있다.
insert into member values(4, 'AAA', 'BBB'); savepoint myPoint; insert into member values(5, 'bbb', 'BBB'); insert into member values(6, 'ccc', 'BBB'); rollback to myPoint; commit;
- commit : sql문의 결과를 영구적으로 DB에 반영한다.
- rollback : sql문의 실행 결과를 취소하고, 이전 commit의 상태로 돌아간다.
- savepoint : 트랜잭션의 한 지점에 표시하는 savepoint이다.
기타 명령어
- ed : ed + enter 하면 메모장이 하나가 열리는데, 오타가 있었을 경우 수정하고 저장하는 것이 가능해진다. 수정하고 저장한 후에 / + enter 하게 되면 수정된 내용으로 실행된다.
- spool '파일 이름' : 해당 파일이 만들어진다. 그리고 그 파일에 앞으로 작성하는 내용들이 기록된다. 파일 이름은 확장자까지 명시해야하며, 아무런 확장자 없이 이름만 쓸 경우, .LST 확장자로 만들어지는데 무엇인지는 모르겠다.
spool off : 파일에 대한 기록을 멈춘다. - host : sql을 사용하다가 밖으로 나갈 수 있다. exit를 통해서 다시 sql 사용 공간으로 넘어올 수 있다.
- 혹시 sql문을 작성하다가 오류가 뜬다면, 각 오류마다 붙은 번호가 다르기 때문에 해당 오류의 번호를 복사해서 검색했을 경우 상당한 도움을 받을 수 있다.
- 위 이미지 경로에 해당하는 위치에 연습용 file들이 많다. 참고해보는 것도 좋다.
command(dos) 창에서 명령어 사용하기
lsnrctl stop : 오라클 리스너 정지하기
lsnrctl start : 오라클 리스너 시작하기
lsnrctl status : 현재 리스너 상태 보기
tnsping dbname 숫자(확인 횟수) : 접속할 DB 와의 통신상태 확인
참고
insert into dept2 select * from dept;
create table dept3 as select * from dept ;
create table dept4 as select * from dept where 1=2;
select를 통해 table을 복사할 수 있다.
두 번째 방법의 경우 CTAS(아마 create table ~ as ~ 를 줄여서 말하는 것 같다.) 기법이라고 하는데, 제약 조건은 복사가 안된다는 점이 특징이다.
세 번째 방법의 경우 table의 구조만 복사하는 방법인데, 조건절이 항상 false인 편법을 사용해서 구조만 복사해낸다.
'뒷북 정리 (국비 교육) > sql, db' 카테고리의 다른 글
[oracle DB] DML (Data Manipulation Language) (0) | 2021.12.17 |
---|---|
[oracle DB] DQL (Data Query Language) (0) | 2021.12.17 |
[oracle DB] DDL (Data Definition Language) (0) | 2021.12.17 |
[oracle DB] DCL (Data Control Language) (0) | 2021.12.17 |
[oracle DB] oracle 설치 및 준비, SQL 명령어 소개 (0) | 2021.12.17 |
댓글