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コース:阿里雲大学-開発者教室