Database

[MySQL] DDL (CREATE, ALTER, DROP, TRUNCATE)

비번변경 2022. 6. 20. 23:26

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;

CREATE TABLE

 

테이블과 열의 이름을 정할 때는 아래의 규칙을 따라야 한다.

  • 동일한 사용자가 동일한 이름의 테이블을 중복하여 생성할 수 없다.
  • 예약어는 사용할 수 없다.
  • 테이블 이름은 문자로 시작한다.
  • 문자 길이는 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;

ALTER TABLE

 

추가된 컬럼은 기본적으로 Null 값으로 초기화된다.
ALTER TABLE - ADD는 새 열을 추가할 수 있지만, 기존의 열을 삭제할 순 없다. 또한 생성되는 열의 위치를 지정할 수 없다.

 

MODIFY

ALTER TABLE ~ MODIFY는 열의 정의를 수정할 때 사용한다. 수정 대상은 데이터 타입, 크기, 기본값이다.

ALTER TABLE tablename
  MODIFY column1 datatype,
         column2 datatype,
    …
  );
  
-- 예시
ALTER TABLE sample_product 
  MODIFY factory CHAR(10);

ALTER TABLE MODIFY COLUMN

 

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;

ALTER TABLE ~ RENAME COLUMN

 

DROP

ALTER TABLE ~ DROP은 열을 삭제할 때 사용할 수 있다.

ALTER TABLE tablename DROP COLUMN column;

-- 예시
ALTER TABLE sample_product2 DROP COLUMN factory_name;

ALTER TABLE ~ DROP COLUMN

 

DROP

DROP TABLE은 테이블을 완전히 삭제할 때 사용할 수 있다. 사용 시 테이블의 모든 구조와 데이터가 삭제되며, DDL이므로 자동으로 커밋된다.

DROP TABLE tablename;

-- 예시
DROP TABLE sample_product;

 

 

TRUNCATE

2021.10.15 - [MySQL/MariaDB] DELETE / TRUNCATE

 

[MySQL/MariaDB] DELETE / TRUNCATE

DELETE, TRUNCATE는 두 개 모두 테이블 내용을 삭제하는 쿼리이다. 하지만 둘이 완전히 같은 기능을 하는 것은 아니다. 두 쿼리의 특징을 적어둔다. DELETE DML(Data Manipulation Language, 데이터 조작 언어) 중

passwd.tistory.com

 

 

 

 

참고 문서

https://thebook.io/006977/ch10/01/

https://dev.mysql.com/doc/refman/5.7/en/alter-table-examples.html