MySQL ALTERコマンド

4781 ワード


データテーブル名を変更するか、データテーブルフィールドを変更する必要がある場合は、MySQL ALTERコマンドを使用します.まず、testalterというテーブルを作成します.tbl.
root@host# mysql -u root -p password;

Enter password:*******mysql> use OPENKETANG;

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 rows in set (0.00 sec)

 
テーブルフィールドの削除、追加または変更
以下のコマンドは、ALTERコマンドおよびDROP句を使用して、上記のテーブルを作成したiフィールドを削除します.
mysql> ALTER TABLE testalter_tbl  DROP i;

データテーブルにフィールドが1つしか残っていない場合は、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 rows in set (0.00 sec)

新しいフィールドの場所を指定する必要がある場合は、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句にのみ使用されるため、データテーブルフィールドの位置をリセットするには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;
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 rows in set (0.00 sec)

 
また、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 rows in set (0.00 sec)Changing a Table Type:

 
データテーブルタイプを変更するには、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:

Comment:1 row in set (0.00 sec)

 
テーブル名の変更
データテーブルの名前を変更する必要がある場合は、ALTER TABLE文でRENAME句を使用して実装できます.
次の例でデータテーブルtestalter_を試します.tbl名前をalter_に変更tbl:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

 
詳細MySQLコース:阿里雲大学-開発者教室