DDL
데이터 정의어 (Data Definition Language)
데이터베이스 스키마와 데이터를 어떻게 저장해야 하는지 정의한다.
Commit하지 않아도 데이터베이스에 즉각 반영되며 데이터 사전에 기록된다.
DDL은 여러 객체에 대해 실행할 수 있지만 이 글에서는 테이블을 대상으로 각 명령어를 알아본다.
CREATE
CREATE TABLE은 새로운 테이블을 생성할 때 사용한다.
CREATE TABLE tablename (
column1 datatype,
column2 datatype,
...
);
-- 예시
CREATE TABLE sample_product (
product_id INT,
product_name VARCHAR(20),
manu_date DATE
);
예시 실행 결과
SHOW COLUMNS FROM sample_product;
테이블과 열의 이름을 정할 때는 아래의 규칙을 따라야 한다.
- 동일한 사용자가 동일한 이름의 테이블을 중복하여 생성할 수 없다.
- 예약어는 사용할 수 없다.
- 테이블 이름은 문자로 시작한다.
- 문자 길이는 1 ~ 30 Byte 이내여야 한다.
ALTER
ALTER TABLE 명령은 생성한 테이블에 열을 추가, 변경, 삭제할 때 사용한다.
ADD
ALTER TABLE tablename
ADD column1 datatype,
column2 datatype,
...
;
-- 예시
ALTER TABLE sample_product
ADD factory VARCHAR(10);
예시 실행 결과
SHOW COLUMNS
FROM sample_product;
추가된 컬럼은 기본적으로 Null 값으로 초기화된다.
ALTER TABLE - ADD는 새 열을 추가할 수 있지만, 기존의 열을 삭제할 순 없다. 또한 생성되는 열의 위치를 지정할 수 없다.
MODIFY
ALTER TABLE ~ MODIFY는 열의 정의를 수정할 때 사용한다. 수정 대상은 데이터 타입, 크기, 기본값이다.
ALTER TABLE tablename
MODIFY column1 datatype,
column2 datatype,
…
);
-- 예시
ALTER TABLE sample_product
MODIFY factory CHAR(10);
RENAME
ALTER TABLE ~ RENAME는 테이블 이름 또는 열의 이름을 수정할 때 사용한다.
테이블 이름 수정
ALTER TABLE old_table RENAME new_table;
-- 또는
RENAME TABLE
tbl_name TO new_tbl_name
열 이름 수정 (MySQL 8.0)
ALTER TABLE tablename RENAME COLUMN b TO a;
-- 예시
ALTER TABLE sample_product RENAME COLUMN factory TO factory_name;
DROP
ALTER TABLE ~ DROP은 열을 삭제할 때 사용할 수 있다.
ALTER TABLE tablename DROP COLUMN column;
-- 예시
ALTER TABLE sample_product2 DROP COLUMN factory_name;
DROP
DROP TABLE은 테이블을 완전히 삭제할 때 사용할 수 있다. 사용 시 테이블의 모든 구조와 데이터가 삭제되며, DDL이므로 자동으로 커밋된다.
DROP TABLE tablename;
-- 예시
DROP TABLE sample_product;
TRUNCATE
2021.10.15 - [MySQL/MariaDB] DELETE / TRUNCATE
참고 문서
https://thebook.io/006977/ch10/01/
https://dev.mysql.com/doc/refman/5.7/en/alter-table-examples.html