Recommanded Free YOUTUBE Lecture: High Avalibility Application On AWS Cloud

MySQL ALTER TABLE - COLUMN 편

MySQL ALTER TABLE 문은 기존 테이블의 구조를 수정하거나 변경하는데 사용한다. 새로운 컬럼(column)의 추가 또는 제거, 컬럼의 데이터 유형 변경, 이름 변경, 기본 키(primary key), 색인(index), 엔진유형과 같은 테이블 옵션을 수정 할 수 있다.

여기에서는 테이블의 컬럼을 수정 하는 방법을 살펴보겠다. 다룰 내용은 아래와 같다.

  • ADD COLUMN - 컬럼 추가

  • MODIFY COLUMN - 컬럼 수정

  • CHANGE COLUMN - 컬럼 수정(이름까지)

  • DROP COLUMN - 컬럼 삭제

  • ADD PRIMARY - PRIMARY Key 설정

  • DROP PRIMARY - PRIMARY Key 삭제

문법

ALTER TABLE table_name
ACTION [COLUMN column_name | CONSTRAINT constraint_name | etc.]
  • table_name : 수정하려는 테이블의 이름이다.

  • ACTION : 수행하려는 행동 유형이다. ACTION 키워드 뒤에 수정하려는 컬럼 혹은 제약조건등이 들어갈 수 있다.

Example Table

연습을 위해서 테스트용 테이블을 만들었다.

CREATE TABLE User (
  id int NOT NULL,
  name varchar(32) NOT NULL,
  email varchar(32) NOT NULL,
  address varchar(128) NOT NULL
)

ALTER TABLE ADD COLUMN - 컬럼 추가

테이블에 컬럼을 추가한다. 문법은 아래와 같다.

ALTER TABLE table_name
ADD column_name datatype;

User 테이블에 website url을 저장하기 위한 컬럼을 추가해보자.

ALTER TABLE User 
ADD website VARCHAR(80);

ALTER TABLE MODIFY COLUMN - 컬럼 수정

이미 존재하는 컬럼을 데이터 타입을 변경한다.

ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

website의 데이터 타입을 TEXT로 변경하기로 했다.

ALTER TABLE User 
MODIFY COLUMN website TEXT;

ALTER TABLE CHANGE COLUMN - 컬럼 수정(이름까지)

MODIFY COLUMN과 비슷하지만 이름까지 변경 할 수 있다.

ALTER TABLE table_name
CHANGE COLUMN original_name new_name column_definition;

website 컬럼의 이름을 website_url 로 하고 데이터타입을 varchar(160)으로 변경해보자. 그리고 NOT NULL 제약 조건도 함께 설정했다.

ALTER TABLE User 
CHANGE website website_url VARCHAR(160) NOT NULL;

테이블 스키마를 확인해보자.

mysql> desc User;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id          | int          | NO   |     | NULL    |       |
| name        | varchar(32)  | NO   |     | NULL    |       |
| email       | varchar(32)  | NO   |     | NULL    |       |
| address     | varchar(128) | NO   |     | NULL    |       |
| website_url | varchar(160) | NO   |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+

ALTER TABLE DROP COLUMN - 컬럼 삭제

테이블에서 컬럼을 삭제한다. 문법은 아래와 같다.

ALTER TABLE table_name
DROP COLUMN column_name;

더 이상 사용하지 않는 website 컬럼을 삭제하기로 했다.

ALTER TABLE User 
DROP website;

ALTER TABLE ADD PRIMARY - PRIMARY Key 설정

테이블에 Primary Key를 설정한다.

ALTER TABLE table_name
ADD PRIMARY KEY (ID, LastName, ...)

id 컬럼을 primary key로 설정해보자.

ALTER TABLE User 
ADD PRIMARY KEY (id);

Primary key가 생성되면 인덱스가 만들어진다. show index 명령으로 인덱스 테이블 정보를 확인해보자.

show index from User \G
*************************** 1. row ***************************
        Table: User
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null: 
   Index_type: BTREE
      Comment: 
Index_comment: 
      Visible: YES
   Expression: NULL

ALTER TABLE DROP PRIMARY KEY - PRIMARY Key 삭제

테이블의 Primary Key를 삭제한다.

ALTER TABLE User 
DROP PRIMARY KEY;

id 컬럼의 primary key를 삭제해보자. Primary key는 테이블에 하나만 있기 때문에 컬럼이나 인덱스 이름등을 설정할 필요가 없다.

ALTER TABLE User DROP PRIMARY KEY;

참고