-- DDL(Data Definition Language) : 데이터 정의어 ==> create, drop, alter, truncate
--> 여기서 중요한 것은 DDL문을 실행하면 자동적으로 commit; 이 된다는 것이다.
100번 사원의 정보 변경
select *
from employees
where employee_id = 100;
-- salary ==> 24000
-- email ==> SKING
update employees set salary = 54321, email = 'dfsdfsd'
where employee_id = 100;
-- 1 행 이(가) 업데이트되었습니다.
create table tbl_temp
(no number
, name varchar2(20)
);
-- Table TBL_TEMP이(가) 생성되었습니다.
-- DDL 문을 실행했으므로 자동적으로 auto commit;
select *
from employees
where employee_id = 100;
rollback;
-- 롤백 완료.
select *
from employees
where employee_id = 100;
-- 위에서 DDL문(create)을 실행했으므로 자동적으로 commit; 이 되었기 때문에 rollback 안됨.
select *
from employees@TEACHERSERVER;
update employees set email = 'abcd';
select *
from employees;
update employees set last_name = '몰라';
-- 107개 행 이(가) 업데이트되었습니다.
commit;
-- 깨진 DB링크 복구
select *
from employees;
update employees LE set first_name = ( select first_name from employees@TEACHERSERVER where employee_id = LE.employee_id )
, last_name = ( select last_name from employees@TEACHERSERVER where employee_id = LE.employee_id )
, salary = ( select salary from employees@TEACHERSERVER where employee_id = LE.employee_id )
, email = ( select email from employees@TEACHERSERVER where employee_id = LE.employee_id );
-- 깨진 DB링크 복구
commit;
------ ====== **** TRUNCATE table 테이블명; **** ====== ------
--> TRUNCATE table 테이블명; 을 실행하면 테이블명 에 존재하던 모든 행(row)들을 삭제해주고,
-- 테이블명에 해당하는 테이블은 완전초기화 가 되어진다.
-- 중요한 사실은 TRUNCATE table 테이블명; 은 DDL 문이기에 auto commit; 되어지므로 rollback 이 불가하다.
-- delete from 테이블명; 을 실행하면 이것도 테이블명 에 존재하던 모든 행(row)들을 삭제해준다.
-- 이것은 DML문 이므로 rollback 이 가능하다.
create table tbl_emp_copy1
as
select * from employees;
-- Table TBL_EMP_COPY1이(가) 생성되었습니다.
select *
from tbl_emp_copy1;
delete from tbl_emp_copy1;
-- 107개 행 이(가) 삭제되었습니다.
select count(*)
from tbl_emp_copy1; -- 0
rollback;
select count(*)
from tbl_emp_copy1; -- 107
truncate table tbl_emp_copy1;
-- Table TBL_EMP_COPY1이(가) 잘렸습니다.
select *
from tbl_emp_copy1; -- 데이터 없음
select count(*)
from tbl_emp_copy1; -- 0
rollback; -- auto commit; 이 되었으므로 rollback 해도 소용이 없음
'SQL' 카테고리의 다른 글
***** 시퀀스(sequence) 짱중요 ***** (0) | 2022.07.12 |
---|---|
오라클 계정 생성하기 (0) | 2022.07.12 |
트랜잭션 제어어(TCL == Transaction Control Language) - commit, rollback (0) | 2022.07.12 |
데이터 질의어(DQL == Data Query Language) - select (0) | 2022.07.12 |
데이터 조작어(DML) - merge (병합) (0) | 2022.07.11 |