TCL (Transaction Control Language)

트랜잭션 제어 언어 (COMMIT, ROLLBACK)

트랜잭션이란?

한꺼번에 수행되어야 할 최소 작업 단위를 말한다.

논리적인 작업 단위 (Logical Unit of Work : LUW)

하나의 트랜잭션으로 이루어진 작업은 반드시 한꺼번에 완료(COMMIT)되어야 하며, 그렇지 않은 경우에는 한꺼번에 취소(ROLLBACK)되어야 한다.

  • COMMIT : 트랜잭션 작업이 정상 완료 되고 나면 변경 내용을 영구히 저장
  • ROLLBACK : 트랜잭션 작업을 취소하고 최근 COMMIT한 시점으로 이동
  • SAVEPOINT 세이브포인트명 : 현재 트랜잭션 작업 시점에 이름을 정해줌. 하나의 트랜잭션 안에서 구역을 나눔. 작업량이 많을 경우 유용하게 쓰일 수 있다.
  • ROLLBACK TO 세이브포인트명 : 트랜잭션 작업을 취소하고 SAVEPOINT 시점으로 이동

DML (INSERT, UPDATE, DELETE) 구문은 반드시 COMMIT을 해야 반영된다.

 

DDL(Date Definition Language)

ALTER : 객체를 수정하는 구문

테이블 객체 수정 : ALTER TABLE 테이블명 수정할내용;

- ALTER로 수정할 수 있는 내용

컬럼 추가/수정/삭제,

제약조건 추가/수정/삭제,

테이블명 변경,

제약조건 이름 변경

칼럼추가, 컬럼 생성 시 DEFAULT 값 지정

ALTER TABLE DEPT_COPY
ADD (LNAME VARCHAR2(20) DEFAULT '한국');

컬럼삭제

ALTER TABLE DEPT_COPY
DROP COLUMN LNAME;

→ 테이블에 최소 한 개 이상의 컬럼이 남아있어야 하기 때문에 모든 열을 삭제할 수는 없다.

→ 제약 조건이 있는 컬럼을 삭제 시 제약 조건도 함께 삭제해야 한다.

CASCADE CONSTRAINTS

ALTER TABLE TB1
DROP COLUMN PK CASCADE CONSTRAINTS;

 

컬럼에 제약 조건 추가

NOT NULL 제약 조건의 경우 ADD가 아니라 MODIFY 를 사용한다.

-- DEPT_COPY2에 PK 제약조건 추가
ALTER TABLE DEPT_COPY2
ADD CONSTRAINT PK_DEPT_ID2 PRIMARY KEY(DEPT_ID);

-- DEPT_COPY2에 UNIQUE 제약조건 추가
ALTER TABLE DEPT_COPY2
ADD CONSTRAINT UN_DEPT_TITLE2 UNIQUE(DEPT_TITLE);
  
-- DEPT_COPY2에 NOT NULL 제약조건 추가
-- NOT NULL 제약조건의 경우 ADD가 아닌 MODIFY 사용
ALTER TABLE DEPT_COPY2
MODIFY DEPT_TITLE CONSTRAINT NN_DEPT_TITLE2 NOT NULL;

제약 조건 삭제

DROP CONSTRAINT 제약조건명;

-- 제약조건 1개 삭제 시
ALTER TABLE CONST_EMP
DROP CONSTRAINT CK_MARRIAGE;

-- 제약조건 여러 개 삭제 시, 연달아 작성
ALTER TABLE CONST_EMP
DROP CONSTRAINT FK_JID
DROP CONSTRAINT FK_MID
DROP CONSTRAINT FK_DID;

-- NOT NULL 제약 조건은 삭제 시 MODIFY 이용
-- 
ALTER TABLE CONST_EMP
MODIFY (ENAME NULL, ENO NULL);
  • NOT NULL 은 ‘수정’으로 취급

 

컬럼 자료형 수정

MODIFY 컬럼명 자료형

ALTER TABLE DEPT_COPY2
MODIFY DEPT_ID CHAR(3)
MODIFY DEPT_TITLE VARCHAR2(30)
MODIFY LOCATION_ID VARCHAR2(2);

DEFAULT 값 변경

ALTER TABLE DEPT_COPY
MODIFY CNAME DEFAULT '미국';

컬럼 이름 변경 / 제약조건명 변경

RENAME COLUMN 기존이름 TO 바꿀이름;

RENAME CONSTRAINT 기존이름 TO 바꿀이름;

ALTER TABLE DEPT_COPY3
RENAME COLUMN DEPT_ID TO DEPT_CODE;

ALTER TABLE DEPT_COPY3
RENAME CONSTRAINT PK_DEPT_CODE3 TO PK_DCODE;

테이블 이름 변경

RENAME TO 바꿀명;

ALTER TABLE DEPT_COPY3
RENAME TO DEPT_TEST;

 

테이블 삭제

DROP TABLE 테이블명 CASCADE CONSTRAINTS;

'LECTURE > Oracle' 카테고리의 다른 글

11_SEQUENCE  (0) 2023.01.19
10_VIEW  (0) 2023.01.18
07_DML  (1) 2023.01.18
06_테이블 생성 및 제약조건  (0) 2023.01.17
05_SUBQUERY  (0) 2023.01.16

+ Recent posts