English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL ALTER 명령

データベーステーブルの名前を変更したり、フィールドを変更する必要がある場合、MySQL ALTERコマンドを使用する必要があります。

本章教程を始める前に、まずテーブルを作成しましょう。テーブル名は:testalter_tblです。

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3codebox;
Database changed
mysql> create table testalter_tbl
    -> (
    -> i INT,
    -> c CHAR(1)
    -> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| c     | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 셋트 내 행 (0.00 초)

테이블 필드 추가, 제거 또는 수정

다음 명령어는 ALTER 명령어와 DROP 문을 사용하여 이전에 생성한 테이블의 i 필드를 제거하는 것입니다:

mysql> ALTER TABLE testalter_tbl DROP i;

데이터 테이블에 필드가 하나밖에 남지 않았을 때는 필드를 DROP으로 제거할 수 없습니다.

MySQL에서 ADD 문을 사용하여 데이터 테이블에 열을 추가할 수 있습니다. 다음 예제는 testalter_tbl 테이블에 i 필드를 추가하고 데이터 타입을 정의하는 것입니다:

mysql> ALTER TABLE testalter_tbl ADD i INT;

위 명령어를 실행한 후, i 필드가 자동으로 데이터 테이블 필드의 마지막에 추가됩니다.

mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 셋트 내 행 (0.00 초)

신규 필드 위치를 지정하려면 MySQL이 제공하는 키워드 FIRST(첫 번째 열에 설정) 또는 AFTER 필드 이름(특정 필드 뒤에 설정)을 사용할 수 있습니다.

다음 ALTER TABLE 문을 시도해 보세요. 성공적으로 실행된 후, SHOW COLUMNS를 사용하여 테이블 구조의 변경을 확인하세요:

ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;

FIRST와 AFTER 키워드는 ADD와 MODIFY 문에서 사용할 수 있으며, 따라서 데이터 테이블 필드 위치를 재설정하려면 먼저 필드를 DROP으로 제거한 후 ADD로 필드를 추가하고 위치를 설정해야 합니다.

필드 타입 및 이름 수정

필드 타입 및 이름을 수정하려면 ALTER 명령어에서 MODIFY 또는 CHANGE 문을 사용할 수 있습니다.

예를 들어, 필드 c의 타입을 CHAR(1)를 CHAR(10)를 실행할 수 있는 명령어를 다음과 같습니다:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

CHANGE 문을 사용하면 문법이 매우 다릅니다. CHANGE 키워드 다음에는 수정할 필드 이름이 따르며, 그 다음에 새 필드 이름 및 타입을 지정합니다. 다음 예제를 시도해 보세요:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;

현재 필드 j를 BIGINT에서 INT로 변경하려면 다음 SQL 문을 사용합니다:

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

ALTER TABLE이 NULL 값과 기본 값에 미치는 영향

필드를 변경할 때, 값을 포함하거나 기본 값을 설정할지 여부를 지정할 수 있습니다.

다음 예제에서 필드 j를 NOT NULL 및 기본 값으로 설정합니다:100。

mysql> ALTER TABLE testalter_tbl 
    -> MODIFY j BIGINT NOT NULL DEFAULT 100;

기본 값을 설정하지 않으면 MySQL이 자동으로 해당 필드를 NULL로 설정합니다.

필드 기본 값 변경

필드의 기본 값을 변경하려면 ALTER를 사용할 수 있습니다. 다음 예제를 시도해 보세요:

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | 1000    |       |
+-------+---------+------+-----+---------+-------+
2 셋트 내 행 (0.00 초)

또한 ALTER 명령 및 DROP 절을 사용하여 필드의 기본 값을 제거할 수 있습니다. 다음 예제를 시도해 보세요:

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 셋트 내 행 (0.00 초)
테이블 타입 변경:

데이터 테이블 타입을 변경하려면 ALTER 명령 및 TYPE 절을 사용할 수 있습니다. 다음 예제를 시도해 보세요. 우리는 테이블 testalter_tbl의 타입을 MYISAM으로 변경하겠습니다:

주의:데이터 테이블 타입을 확인하려면 SHOW TABLE STATUS 문을 사용할 수 있습니다。

mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM;
mysql>  SHOW TABLE STATUS LIKE 'testalter_tbl'\G
*************************** 1. row ****************
           Name: testalter_tbl
           Type: MyISAM
     Row_format: Fixed
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 25769803775
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2007-06-03 08:04:36
    Update_time: 2007-06-03 08:04:36
     Check_time: NULL
 Create_options:
        댓글:
1 row in set (0.00 sec)

테이블 이름 변경

데이터 테이블 이름을 변경하려면 ALTER TABLE 문에서 RENAME 절을 사용할 수 있습니다.

다음 예제를 통해 데이터 테이블 testalter_tbl을 alter_tbl로 이름을 변경해 보세요:

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

ALTER 명령은 MySQL 데이터 테이블의 인덱스를 생성하고 제거하는 데도 사용될 수 있습니다. 이 기능에 대해 다음 장에서 알아보겠습니다.