SQL
DDL
#
Find similar titles
- (rev. 13)
- Dragon
Structured data
- Category
- Database
Table of Contents
DDL (데이터 정의 언어 : Data Definition Language) #
DDL(Data Definition Language)은 데이터의 구조를 정의하는 데 사용하는 SQL 문으로 이 SQL을 사용하여 데이터의 구조를 생성, 변경, 삭제 등을 수행할 수 있다.
- 스키마 객체를 생성, 변경, 삭제할 수 있다.
- CREATE, ALTER, DROP 명령어는 작업할 객체에 단독으로 접근해야 한다. 예를 들어 다른 사용자가 작업할 테이블에 트랜잭션을 열고 있다면 자신의 ALTER TABLE 문장은 실패한다.
DDL의 종류 #
CREATE #
CREATE Table, CREATE Sequences, CREATE Index, CREATE View 등과 같이 객체를 생성하는 데 사용한다.
TABLE #
- 테이블 명은 다른 테이블의 이름과 중복될 수 없다.
- 한 테이블 내에서 컬럼 명은 중복될 수 없다.
- 테이블 명은 영문자로 시작해야 한다.
-
내장 키워드는 테이블 명 또는 컬럼 명으로 사용할 수 없다.
CREATE TABLE table_name ( column_name1 데이터타입(크기) [DEFAULT value], column_name2 데이터타입(크기) [DEFAULT value], ... );
CONSTRAINT (제약조건) #
- PRIMARY KEY (기본키, PK) : 테이블 내의 개별 데이터를 식별하기 위해 정의된 제약조건이다. 이 조건을 설정한 컬럼의 데이터는 컬럼 내에서 중복될 수 없으며 Null값을 허용하지 않는다. 즉 PK는 Unique + Not Null의 제약조건을 갖는다.
- FOREIGN KEY (외래키, FK) : 부모 테이블과 자식 테이블 간의 관계를 정의하기 위해 부모 테이블의 PK값을 참조하는 자식 테이블의 제약조건이다.
- UNIQUE KEY (고유키, UK) : 테이블 내의 개별 데이터를 고유하게 식별하기 위한 제약조건이다.
- NOT NULL (NN) : 해당 컬럼의 데이터값에 Null을 허용하지 않는 제약조건이다. 즉 필수입력을 의미한다.
-
CHECK (CK) : 해당 컬럼에 허용할 수 있는 데이터 값의 범위를 제한한다.
CREATE TABLE table_name ( column_name1 데이터타입(크기) [DEFAULT value], column_name2 데이터타입(크기) [DEFAULT value], CONSTRAINT constraint_name constraint_type(column1[, column2...]), ... );
SEQUENCE #
CREATE SEQUENCE sequence_name
[INCREMENT BY n] -- 증가 값
[START WITH n] -- 시작 값
[MINVALUE n] -- 최소 값
[MAXVALUE n|NOMAXVALUE] -- 최대 값
[CYCLE|NOCYCLE] -- 최대 값 이후 시작 값으로 되돌아갈지 여부
[CACHE n|NOCACHE] -- 시퀀스 생성 캐싱 여부 및 캐쉬 값
;
INDEX #
CREATE INDEX index_name on table_name (column_name[,column_name...]);
VIEW #
CREATE OR REPLACE VIEW view_name (column_name1[,column_name2...]) AS
SELECT column_name1[,column_name2...]
FROM table_name;
ALTER #
ALTER Table, ALTER Sequences, ALTER Index, ALTER View 등과 같이 객체를 변경하는 데 사용한다.
ADD (컬럼 추가) #
ALTER TABLE table_name
ADD (컬럼1 데이터타입(크기) [제약조건], 컬럼2 데이터타입(크기)...);
MODIFY (컬럼 유형 변경) #
-
컬럼 유형 변경
ALTER TABLE table_name MODIFY (컬럼1 데이터타입(크기), 컬럼2 데이터타입(크기)...);
-
제약조건 변경
ALTER TABLE table_name MODIFY (컬럼1 CONSTRAINT 제약조건명 제약조건(컬럼명 조건식));
RENAME #
테이블과 컬럼의 이름을 변경하는 데 사용한다.
-
테이블명 변경
RENAME from_table_name TO to_tale_name;
-
컬럼명 변경
ALTER TABLE table_name RENAME COLUMN from_col_name TO to_col_name;
DROP #
DROP Table, DROP Sequences, DROP Index, DROP View 등과 같이 개체를 삭제하는 데 사용한다.
-
테이블, 시퀀스, 인덱스, 뷰 삭제
DROP TABLE table_name; DROP SEQUENCE sequence_name; DROP INDEX index_name; DROP VIEW view_name;
-
테이블과 함께 참조된 제약조건을 모두 삭제할 경우
DROP TABLE table_name CASCADE CONSTRAINTS;
-
컬럼 삭제
ALTER TALLE table_name DROP COLUMN column_name;
-
삭제할 컬럼에 제약조건이 존재할 경우
ALTER TABLE table_name DROP COLUMN column_name CASCADE CONSTRAINTS;
TRUNCATE #
테이블에서 영구적으로 모든 행을 삭제할 때 이 구문을 사용하며 "DELETE FROM table_name" 구문과 동일하다. 이 구문은 롤백 되지 않는다.
TRUNCATE TABLE table_name;