본문 바로가기
oracle

TCL (Transaction Control Language, 트랜잭션 제어 언어)

by 신방동불주먹 2022. 10. 25.

--TCL (데이터의 영구저장 또는 취소)
--트랜젝션
--commit, rollback, savepoint
--commit : 데이터 영구 저장 (테이블이 데이터 반영)
--          create구문을 사용해서 객체 생성할 때 (자동)
--rollback : 데이터 변경 취소 (테이블이 데이터 미반영) 원상복구
--          천재지변, 전기, 전쟁(자동)



create table dept01
as
select * from dept;
select * from dept01;

--지워진거 아님 (외부접속시 조회가능)
--완전하게 반영하려면 commit; 작업 필요하다
delete from dept01;

commit;
--데이터 복구, 커밋이 완료되면 적용되지 않는다 
--마지막 commit 지점까지만 가능하다
rollback;

drop table dept01;

-------------truncate = delete 같음
--트랜젝션 적용 가능 유무
--delete commit rollback 가능
delete from dept01;
--commit rollback 불가능
truncate table dept01;


--cmd 확인
--sqlplus scott/tiger
--select * from dept01;

-----DDL(데이터 정의어) : table(모든 객체)을 생성, 삭제 변경하는 명령어
--creat(생성), alter(변경), drop(삭제)

--create table 테이블 명( --table(객체)
--        컬럼명1 타입,   --column(속성)
--        컬럼명2 타입,
--        컬럼명3 타입
--      );

create table emp_ddl(
    --사번, 이름, 직책, 관리자, 입사일, 급여, 성과금, 부서번호
    empno number(4),
    ename varchar2(10), --byte 기준
    job varchar2(9),    
    mgr number(4),
    hiredate date,
    sal number(7,2), --전체는 7자리, 중 2자리는 소수자리)
    comm number(7,2),
    deptno number(2)
);

select * from emp_ddl;

insert into emp_ddl
values (9999,'유리미','MANAGER',1111,SYSDATE,4000,NULL,10);

--똑같은 테이블 생성(테이블의 복사) :AS
CREATE TABLE DEPT_DDL 
AS
SELECT * FROM DEPT;

SELECT * FROM DEPT_DDL;

--조건에 맞는 데이터만 가져온다
CREATE TABLE DEPT_30
AS
SELECT * FROM DEPT
WHERE DEPTNO = 30;


--컬럼을 일부만 가져오게
CREATE TABLE DEPT_M
AS
SELECT DNAME, LOC
FROM DEPT;


--테이블 구조만가져오게
CREATE TABLE DEPT_D
AS
SELECT * FROM DEPT
WHERE 1 != 1;


SELECT * FROM DEPT_30;

--테이블 변경(컬럼의 정보수정)
--새로운 컬럼추가, 컬럼의 이름변경, 자료형의 변경, 컬럼을 삭제 
--ALTER 

CREATE TABLE EMP_ALTER
AS
SELECT * FROM EMP;

SELECT * FROM EMP_ALTER;

--컬럼추가 
ALTER TABLE EMP_ALTER
ADD ADDRESS VARCHAR2(100);

--이름변경
ALTER TABLE EMP_ALTER
RENAME COLUMN ADDRESS TO ADDR;


--키우는 것만 가능
ALTER TABLE EMP_ALTER
MODIFY EMPNO NUMBER(10);

DESC EMP_ALTER;

--삭제
ALTER TABLE EMP_ALTER
DROP COLUMN ADDR;

--테이블 삭제 : DROP
--DROP TABLE 테이블명
DROP TABLE EMP_ALTER;

SELECT * FROM EMP_ALTER;

-------------------------------P324연습문제

CREATE TABLE EMP_HW(
    EMPNO NUMBER(4),
    ENAME VARCHAR2(10),
    JOB VARCHAR2(9),
    MGR NUMBER(4),
    HIREDATE DATE,
    SAL NUMBER(7,2),
    COMM NUMBER(7,2),
    DEPTNO NUMBER(2)
    );
    
    SELECT * FROM EMP_HW;
    SELECT * FROM EMP;
    
 ALTER TABLE EMP_HW
 ADD BIGO VARCHAR2(20);
 
 ALTER TABLE EMP_HW
 MODIFY BIGO VARCHAR(30);
 
 ALTER TABLE EMP_HW
 RENAME COLUMN BIGO TO REMARK;

INSERT INTO EMP_HW(REMARK)
VALUES(NULL);

INSERT INTO EMP_HW
SELECT * FROM EMP;

INSERT INTO EMP_HW
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, NULL FROM EMP;

INSERT INTO EMP_HW(REMARK)
VALUES(NULL);

SELECT * FROM EMP_HW;

DROP TABLE EMP_HW;

'oracle' 카테고리의 다른 글

1021_제약조건(not null, unique, primary key)  (0) 2022.10.25
1021_인덱스  (0) 2022.10.25
1021_ DQL(Data Query Language, 질의어)  (0) 2022.10.25
1021_DML(Data Manipulation Language, 조작어)  (0) 2022.10.24
1020-Join문  (0) 2022.10.24