Database/MySQL

MySQL을 처음 시작했으면 테이블을 생성하자! DDL에 대해서 알아보자

Jinny zinny 2025. 6. 6. 12:11

DDL(Data Definition Language)

테이블을 생성할 수 있는 CREATE,ALTER,DROP,TRUNCATE이 바로 DDL이다.

나중에 따로 포스팅을 만들어 설명하겠지만, TABLE에 직접 데이터를 다룰 수 있는 명령어인 SELECT,INSERT,UPDATE,DELETE와는 다르게 TABLE을 생성,변형,삭제,데이터 전체 삭제의 기능을 할 수 있는 것이 바로 DDL이다.

CREATE

CREATE TABLE `테이블이름`(
    `칼럼 이름` 제약 조건
);

위 명령어의 형식이 CREATE의 큰 형식이다.

테이블을 생성한 뒤 Column 이름과 제약 조건등인 Not Null, Primary Key, Unique등을 입력하면 된다. (이때 쉼표를 넣지말고 쭉 나열하면 된다.)

원칙적인 CREATE TABLE 선언은 아래와 같다.

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]

이떄 TEMPORARY 선언은 Session이나 Connection이 종료되었을 때 자동으로 사라지는 TABLE이며, 보통 사용하지 않는다.

IF NOT EXISTS 명령어 같은 경우 삽입하게 된다면 테이블이 없는 경우에 생성하게 되므로, 오류를 피할 수 있다.

공식문서를 참고하게 된다면 CREATE 명령어만 해도 분량이 엄청나기에 추후 DDL 카테고리로 따로 후술하고자 한다.

ALTER

ALTER TABLE `테이블 이름` ADD COLUMN `칼럼 이름`;

등으로 쿼리를 작성할 수 있지만, ADD Column 위치로 들어오는 조건이 굉장히 다양하다.

ADD INDEX나 ADD CONSTRAINTS가 들어올 수도 있다.

원칙적인 ALTER TABLE 선언은 아래와 같다.

ALTER TABLE tbl_name
    [alter_option [, alter_option] ...]
    [partition_options]

TABLE의 구조를 바꾸게 되는 ALTER Option과 Partition의 구조를 바꾸는 Partition_option이 있다.

아래와 같은 간단한 예시를 보여주자면, t2라는 Table에서 c라는 이름의 Column과 d라는 이름의 column을 지우는 명령어를 실행한 것이다.

이 명령어를 실행하면 t2라는 TABLE에 c,d Column이 삭제되도록 테이블이 변경되었기에 ATLER TABLE이라는 명령어를 쓰게 된다.

ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d;

DROP

DROP [UNDO] TABLESPACE tablespace_name

테이블을 삭제하는 명령어니, 걍 보고 잊길 바란다.

90%이상의 경우에 당신은 DROP을 할 수 없는 계정을 받을 것이기에..?

(물론 프로젝트에서는 DROP 많이 할 것이다..)

TRUNCATE

TRUNCATE [TABLE] tbl_name

테이블의 데이터를 전체 삭제하는 명령어니, 얘도 그냥 보고 잊길 바란다.

위의 DROP 명령어와의 차이점은 DROP은 테이블도 삭제하지만, TRUNCATE는 데이터만 삭제하고 테이블의 구조는 남아있게 된다.

하지만 잊어라 데이터를 지우는 일은 번거롭더라도 DELETE를 써라

이 글은 정보성 글로 작성하고 있기에 아래의 2가지 명령어 정보를 제공하고 있다.

그러나 DROP은 사용하는 상황이 있다고 하더라도, TRUNCATE 같은 경우는 DML의 DELETE란 대체제가 있으니,

가급적 TRUNCATE는 사용하지 말자.

반응형