Latest web development tutorials

MySQLのALTERコマンド

我々は、データテーブルを変更したり、データテーブルのフィールドを変更する必要があるときは、MySQLのALTERコマンドを使用する必要があります。

testalter_tbl:この章開始前のチュートリアルは、私たちは、テーブル名をテーブルを作成してみましょう。

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
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使用し、句が表Iフィールド上に作成したコマンドを削除するDROP:

mysql> ALTER TABLE testalter_tbl  DROP i;

テーブル内のデータは、一つのフィールドだけを残りの場合は、フィールドを削除するには、DROPを使用することはできません。

MySQLはテーブルのフィールドの例は、私がtestalter_tblとデータ型を定義する追加すると列は、データシートにしたい追加するには、ADD句を使用します。

mysql> ALTER TABLE testalter_tbl ADD i INT;

上記のコマンドを実行した後、それらのフィールドが自動的にデータテーブルのフィールドの末尾に追加されます。

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(最初の列にビットをセット)を提供します。

実装を成功した後、使用を表示COLUMNSがチェンジ・テーブルの構造を表示するには、次のALTER TABLE文を試してみてください。

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;

最初で唯一のADD句のキーワードAFTER、あなたはフィールドを削除してから、フィールドを追加し、位置を設定するためにADDを使用DROPを使用する必要性についてのデータ・テーブル・フィールドの位置をリセットしたいので、もし。


フィールド名とタイプを変更します。

あなたは、フィールドのタイプと名前を変更する必要がある場合は、CHANGEを使用するか、ALTERコマンドの句を変更することができます。

たとえば、CHAR(10)へのCHAR(1)から、タイプフィールドCは、次のコマンドを実行することができます。

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の影響

あなたがフィールドを変更するときは、含めるかどうかだけでデフォルト値を設定するかどうかを指定することができます。

次の例では、指定したフィールド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 TYPE = 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句を使用することができます。

alter_tblの名前を変更testalter_tblデータテーブルの次の例を試してみてください。

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

コマンドをALTER、我々は次の章で紹介します。この機能は、インデックスMySQLのデータテーブルを作成および削除するためにも使用することができます。