본문 바로가기

BackEnd/DataBase - Oracle

[Oracle] 데이터 정의어(DDL)

오브젝트 종류

Table - 행을 구성하며 저장의 기본 단위
View - 논리적으로 표현된 하나 또는 여러 개의 테이블 들의 부분집합
Sequence - 숫자 생성기
Index - 일부 쿼리문의 성능 높여줌
Synonym - 오브젝트에 추가적인 이름을 부여함

 

 

 

CREATE (오브젝트 생성)

필수 : 테이블명, 컬럼명, 데이터 타입, 컬럼사이즈
선택 : Default 값, 제약조건

 


기본 문법

 

CREATE TABLE 테이블명 ( 
컬럼명1 데이터 타입, 
컬럼명3 데이터 타입, 
컬럼명2 데이터 타입, 
... 
); 


테이블 복사하는 방법
CREATE TABLE 테이블명
AS SELECT * FROM 복사할테이블명 WHERE 1=2;

테이블의 특정 컬럼만 복사하는 방법
CREATE TABLE 테이블명
AS SELECT ... FROM 복사할테이블명 WHERE ...;

NULL 값 대신 정해놓은 기본값을 넣고싶다면 DEFAULT를 사용
Ex) create TABLE ... create_date DATE DEFAULT SYSDATE; -- 기본값을 현재 날짜로 설정

 

 

 

ALTER (오브젝트 변형)


컬럼 추가하기
ALTER TABLE 테이블명 ADD (컬럼명 데이터타입(사이즈));

컬럼 수정하기
ALTER TABLE 테이블명 MODIFY (컬럼명 데이터타입(사이즈));

컬럼 삭제하기
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

컬럼명 변경하기
ALTER TABLE 테이블명 RENAME COLUMN 변경전컬럼명 TO 변경할컬럼명;

제약조건 추가하기
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건;

제약조건 삭제하기
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

읽기 전용 또는 읽기&쓰기 전용으로 설정하기 (변경이 거의 없는 코드성 자료에 사용하기 적합)
ALTER TABLE 테이블명 READ ONLY;
ALTER TABLE 테이블명 READ WRITE;

 

 

 

DROP (제약조건 포함 오브젝트 삭제)


기본 문법

 

DROP TABLE 테이블명; 

 


Flashback 기능

기본 문법

 

FLASHBACK TABLE 테이블명 TO BEFORE DROP; 


DROP 되면 그 즉시 영구적으로 삭제되지 않고 임시로 보관하는 장소(휴지통)가 있다

휴지통을 거치지 않고 테이블을 삭제하려면 아래 구문을 사용하면 된다 (민감한 자료일 때)

DROP TABLE 테이블명 PURGE; 


휴지통(Recyclebin)
윈도우의 휴지통과 같은 역할이지만 용량이 차게되면 선입선출 방식으로 자동 삭제된다

휴지통 조회하는 구문

SELECT original_name, operation, droptime FROM recyclebin;

 

 

 

TRUNCATE (데이터 절단)


오토 커밋이 되므로 ROLLBACK이 불가능하다
구조만 남겨두고 모든 행 제거함

 


기본 문법

 

TRUNCATE TABLE 테이블명; 

 

 


DELETE, TRUNCATE, DROP 비교

 

  개념 문법 차이점
DELETE 테이블의 특정 행 삭제 (단, WHERE절 생략 시 모든 행 삭제됨)  DELETE FROM 테이블명;  DML, 저장공간 반납하지 않음, ROLLBACK 가능 
TRUNCATE 테이블의 모든 행 절단(삭제)  TRUNCATE TABLE 테이블명;  DDL, 구조만 남기고 저장공간 반납함, ROLLBACK 불가능 
DROP 테이블의 구조를 삭제 (정의 자체를 완전히 삭제)  DROP TABLE 테이블명;  DDL, 구조와 오브젝트 모두 포함해서 저장공간 반납함, ROLLBACK 불가능