DDL(Data Definition Language)에 대해 본격적으로 알아보자. DDL은 데이터베이스 구조를 정의하고 변경하는 기능을 제공하는 언어이다.
DDL로 들어가기에 앞서, SQL에서 취급하고 있는 데이터 타입에 대해 간단히 살펴보도록 하겠다.
SQL 데이터 타입✔️
DataType 설명 CHAR(n) 길이가 n으로 고정된 문자열. VARCHAR(n) 최대 길이가 n인 가변 길이의 문자열. BIGINT 8바이트 정수. INT or INTEGER 4바이트 정수. SMALLINT 2바이트 정수. NUMERIC(p, s) or DECIMAL(p, s) 고정 소수점 실수. p: 소수점을 제외한 전체 길이, s: 소수점 이하 숫자의 길이 FLOAT(n) 길이가 n인 부동 소수점 실수 REAL 부동 소수점 실수 DATE 연, 월, 일로 표현되는 날짜 TIME 시, 분, 초로 표현되는 시간 BLOB Binary large object CLOB character large object
새로운 데이터베이스 객체(Schema, Table, View)들을 생성한다.
Syntax✔️
CREATE TABLE
< table_name >
{
< column definitions >
|< like table clause >
;
}
👉🏻 CREATE 구문은 위와 같다.👉🏻
< column definitions >
를 사용해 테이블을 생성할 수 있고,< like table clause >
를 사용해서 기존에 있는 테이블을 이용한 테이블 생성도 가능하다.
< column definitions >
👉🏻 {< data column definition >
, ... }
👉🏻 컬럼 정의의 묶음이라고 생각하면 된다.
👉🏻 각 컬럼 정의가 어떻게 구성되어 있는지는 아래에서 확인할 수 있다.
< data column definition >
👉🏻< coloumn_name >
< datatype >
[< default value >
] [< integrity constraint >
]
👉🏻 컬럼 정의로서, 컬럼 이름과 데이터타입을 명시해야 한다.
👉🏻 선택적으로< default value >
를 이용해 기본 값을 설정할 수 있다.
👉🏻 선택적으로< integrity constraint >
를 이용해 컬럼에 기본 키, Unique 등 무결성 제약 조건을 설정할 수 있다.
< default value >
👉🏻 DEFAULT< value >
👉🏻 해당 컬럼에 대한 값이 들어오지 않았을 때 기본 값< value >
으로 설정해둔 값이 저장되도록 한다.
< integrity constraint >
👉🏻 [< UNIQUE >
|< primary key >
|< reference constraint >
|< check constraint >
]
👉🏻 컬럼에 무결성 제약 조건을 설정한다.
👉🏻< UNIQUE >
: 대체 키를 지정하고 유일성을 가지는 컬럼임을 지정한다.
👉🏻< primary key >
: Row를 식별할 수 있는 기본 키이다.< UNIQUE >
+< NOT NULL >
< reference constraint >
👉🏻 참조하는 테이블을 지정하는 외래키를 설정한다. 추후에 자세히 다루도록 할테니, 여기선 이정도로 이해하고 넘어가자.
< check constraint >
👉🏻 CHECK (< condition >
)
👉🏻 열에 잘못된 값이 들어가지 않도록 제한한다.
< like table clause >
👉🏻 LIKE< table_name >
[ WITH DATA ]
👉🏻 DATA 테이블과 구성이 같은 테이블을 데이터 없이 생성한다.
👉🏻 WITH DATA 구문을 쓸 경우엔, 테이블 내 데이터까지 똑같이 생성한다.Example✔️
CREATE TABLE student { id VARCHAR(8) PRIMARY KEY, name VARCHAR(20) NOT NULL, dept_name VARCHAR(20), grade SMALLINT, FOREIGN KEY (dept_name) REFERENCES department }; CREATE TABLE customer_backup LIKE customer WITH DATA;
새로운 컬럼을 추가거나, 기존 컬럼을 삭제하거나, 새로운 제약조건을 추가한다.
Syntax✔️
ALTER TABLE
< table_name >
ADD< column_name >
< column_type >
[< NOT NULL >
] [< default_value >
]Example✔️
ALTER TABLE customer ADD reg_date DATE;
Syntax✔️
ALTER TABLE
< table_name >
DROP< column_name >
Example✔️
ALTER TABLE customer DROP age;
Syntax✔️
ALTER TABLE
< table_name >
ADD CONSTRAINT< constraint_name >
< constraint >
Example✔️
ALTER TABLE customer ADD CONSTRAINT set_pri_key PRIMARY KEY(id);
Syntax✔️
ALTER TABLE
< table_name >
DROP CONSTRAINT< constraint_name >
Example✔️
ALTER TABLE customer DROP CONSTRAINT set_pri_key;
--
테이블 데이터 및 catalog를 삭제한다.
Syntax✔️
DROP TABLE
< table_name >
Example✔️
DROP TABLE customer;
Catalog는 남겨두고 테이블 데이터만 삭제한다.
Syntax✔️
TRUNCATE TABLE
< table_name >
Example✔️
TRUNCATE TABLE customer;