MySQL ALTER TABLE
문을 공부해보겠습니다.
저번 시간에 CREATE를 공부할 때 생성했던 checklists
테이블을 이용해보겠습니다.
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| todo_id | int | NO | PRI | NULL | auto_increment |
| task_id | int | NO | PRI | NULL | |
| todo | varchar(255) | NO | | NULL | |
| is_completed | tinyint(1) | NO | | 0 | |
+--------------+--------------+------+-----+---------+----------------+
1. 테이블에 열 추가하기
테이블에 열을 추가하기 위해선 ADD
문을 사용해야 합니다.
ALTER TABLE tbl_name ADD col_name column_definition [FIRST | AFTER col_name]
tbl_name : 새 열을 추가하려는 테이블의 이름
col_name : 새 열의 이름
column_definition : 새 열의 데이터 유형과 최대 크기 등의 제약 조건 지정
FIRST, AFTER : 새 열의 위치를 지정(default : 열 목록 끝에 추가)
예제를 통해 확인해보겠습니다.
ALTER TABLE checklists ADD n_column VARCHAR(10) NOT NULL;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| todo_id | int | NO | PRI | NULL | auto_increment |
| task_id | int | NO | PRI | NULL | |
| todo | varchar(255) | NO | | NULL | |
| is_completed | tinyint(1) | NO | | 0 | |
| n_column | varchar(10) | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
작성한 예제처럼 ADD
문만 계속 추가해 한번에 여러열을 추가할 수 있습니다.
2. 테이블 열 수정하기
테이블의 열을 수정하기 위해선 MODIFY
문을 사용해야 합니다.
ALTER TABLE checklists MODIFY col_name column_definition [FIRST | AFTER col_name]
예제를 통해 확인해보겠습니다.
ALTER TABLE checklists MODIFY n_column Int(10);
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| todo_id | int | NO | PRI | NULL | auto_increment |
| task_id | int | NO | PRI | NULL | |
| todo | varchar(255) | NO | | NULL | |
| is_completed | tinyint(1) | NO | | 0 | |
| n_column | int | YES | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
여기서 잘보아야할 것이 기존에 NOT NULL
이던 컬럼이 수정 시 명시하지 않았더니 NULL
을 허용하도록 변경되었습니다. 그러니 항상 테이블의 구조를 확인한 후 변경하는 것이 좋습니다. 그리고 MODIFY
또한 해당 구문을 추가하면 한번에 여러열을 수정할 수 있습니다.
3. 테이블에서 열 삭제하기
테이블에서 열을 삭제하기 위해선 DROP COLUMN
문을 사용해야 합니다. 예제를 작성할 때 COLUMN 이 빠지고 DROP 만 있어도 수행됩니다.
ALTER TABLE tbl_name DROP COLUMN col_name;
예제를 통해 확인해보겠습니다.
ALTER TABLE checklists DROP n_column;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| todo_id | int | NO | PRI | NULL | auto_increment |
| task_id | int | NO | PRI | NULL | |
| todo | varchar(255) | NO | | NULL | |
| is_completed | tinyint(1) | NO | | 0 | |
+--------------+--------------+------+-----+---------+----------------+
지금까지 만들어 사용했던 n_column을 삭제했습니다.
4. 테이블 이름 바꾸기
테이블 이름을 바꾸기 위해선 RENAME TO
문을 사용해야 합니다.
ALTER TABLE tbl_name RENAME TO new_tbl_name;
예제를 통해 확인해보겠습니다.
ALTER TABLE checklists RENAME TO todolist;
+-------------------+
| Tables_in_example |
+-------------------+
| todolist |
+-------------------+
show tables
를 통해 확인해본 결과 잘변경되었습니다.
지금까지 공부했던 ADD
,MODIFY
,DROP
등은 오직 컬럼만 다루는 것이 아닙니다. 컬럼 외에 INDEX, KEY, 제약 등을 다룰 수 있습니다.
이렇게 오늘은 "열 추가, 변경, 이름 변경, 삭제"와 "테이블 이름 변경"을 알아봤습니다.
관련 내용은 아래에서 확인할 수 있습니다.
https://dev.mysql.com/doc/refman/8.0/en/alter-table.html
'DB와 SQL' 카테고리의 다른 글
SQLD : 2과목 SQL 기본 및 활용 (SQL 기본) (0) | 2021.11.06 |
---|---|
Part 2. SQL - DATABASE, TABLE 생성 : DDL(CREATE) (0) | 2021.05.10 |
Part 1. 데이터베이스(DB)와 SQL이란? (0) | 2021.05.05 |