[DB] DDL

정의정·2023년 8월 16일
0

DB

목록 보기
7/9
post-thumbnail

💡 DDL이란?

DDL(Data Definition Language)에 대해 본격적으로 알아보자. DDL은 데이터베이스 구조를 정의하고 변경하는 기능을 제공하는 언어이다.

⭐ SQL 데이터 타입

DDL로 들어가기에 앞서, SQL에서 취급하고 있는 데이터 타입에 대해 간단히 살펴보도록 하겠다.

SQL 데이터 타입✔️

DataType설명
CHAR(n)길이가 n으로 고정된 문자열.
VARCHAR(n)최대 길이가 n인 가변 길이의 문자열.
BIGINT8바이트 정수.
INT or INTEGER4바이트 정수.
SMALLINT2바이트 정수.
NUMERIC(p, s) or DECIMAL(p, s)고정 소수점 실수. p: 소수점을 제외한 전체 길이, s: 소수점 이하 숫자의 길이
FLOAT(n)길이가 n인 부동 소수점 실수
REAL부동 소수점 실수
DATE연, 월, 일로 표현되는 날짜
TIME시, 분, 초로 표현되는 시간
BLOBBinary large object
CLOBcharacter large object

⭐ CREATE

새로운 데이터베이스 객체(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;

⭐ ALTER

새로운 컬럼을 추가거나, 기존 컬럼을 삭제하거나, 새로운 제약조건을 추가한다.

1. 새로운 컬럼 추가

Syntax✔️

ALTER TABLE < table_name > ADD < column_name > < column_type > [ < NOT NULL > ] [ < default_value > ]

Example✔️

ALTER TABLE customer ADD reg_date DATE;

2. 기존 컬럼 삭제

Syntax✔️

ALTER TABLE < table_name > DROP < column_name >

Example✔️

ALTER TABLE customer DROP age;

3. 새로운 제약조건 추가

Syntax✔️

ALTER TABLE < table_name > ADD CONSTRAINT < constraint_name > < constraint >

Example✔️

ALTER TABLE customer ADD CONSTRAINT set_pri_key PRIMARY KEY(id);

4. 기존 제약조건 삭제

Syntax✔️

ALTER TABLE < table_name > DROP CONSTRAINT < constraint_name >

Example✔️

ALTER TABLE customer DROP CONSTRAINT set_pri_key;

--

⭐ DROP

테이블 데이터 및 catalog를 삭제한다.

Syntax✔️

DROP TABLE < table_name >

Example✔️

DROP TABLE customer;

⭐ TRUNCATE

Catalog는 남겨두고 테이블 데이터만 삭제한다.

Syntax✔️

TRUNCATE TABLE < table_name >

Example✔️

TRUNCATE TABLE customer;
profile
배움 기록

0개의 댓글