English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
When we need to modify the table name of the data table or modify the fields of the data table, we need to use the MySQL ALTER command.
Before we start this chapter tutorial, let's first create a table named: 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; +-------+---------+------+-----+---------+-------+ | Feld | Typ | Null | Schlüssel | Standardwert | Extra | +-------+---------+------+-----+---------+-------+ | i | int(11) | YES | | NULL | | c | char(1) | YES | | NULL | +-------+---------+------+-----+---------+-------+ 2 Zeilen in der Liste (0,00 sec)
Folgender Befehl verwendet den ALTER-Befehl und die DROP-Klausel, um das oben erstellte i-Feld zu löschen:
mysql> ALTER TABLE testalter_tbl DROP i;
Wenn nur ein Feld in der Datenbanktabelle verbleibt, kann das Feld nicht mit DROP gelöscht werden.
In MySQL wird der ADD-Ausdruck verwendet, um Spalten in die Datenbanktabelle hinzuzufügen. Zum Beispiel wird das Feld i im Tabellen testalter_tbl hinzugefügt und der Datentyp definiert:
mysql> ALTER TABLE testalter_tbl ADD i INT;
Nach Ausführung des obigen Befehls wird das Feld i automatisch am Ende der Datenbankfelder hinzugefügt.
mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Feld | Typ | Null | Schlüssel | Standardwert | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | i | int(11) | YES | | NULL | +-------+---------+------+-----+---------+-------+ 2 Zeilen in der Liste (0,00 sec)
Wenn Sie die Position des neuen Felds angeben möchten, können Sie die Schlüsselwörter FIRST (erstes Feld festlegen) und AFTER Feldname (nach einem bestimmten Feld festlegen) von MySQL verwenden.
Versuchen Sie folgenden ALTER TABLE-Ausdruck, überprüfen Sie nach dem Erfolg mit SHOW COLUMNS die Änderung der Tabellenstruktur:
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;
Die Schlüsselwörter FIRST und AFTER können in den ADD- und MODIFY-Ausdrücken verwendet werden, daher müssen Sie vor dem Umschalten der Position der Datenbankfelder das Feld zuerst mit DROP löschen und dann mit ADD hinzufügen und die Position einstellen.
Wenn Sie den Typ und den Namen eines Felds ändern möchten, können Sie im ALTER-Befehl die MODIFY- oder CHANGE-Klausel verwenden.
Zum Beispiel, ändern Sie den Typ des Felds c in CHAR(1) Ändern Sie dies in CHAR(10) Sie können folgenden Befehl ausführen:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
Die Syntax ist erheblich anders, wenn Sie den CHANGE-Ausdruck verwenden. Nach dem Schlüsselwort CHANGE folgt der Name des zu ändernden Felds, gefolgt von der neuen Feldname und dem Typ. Versuchen Sie folgenden Beispiel:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Wenn Sie das Feld j von BIGINT auf INT ändern möchten, lautet der SQL-Befehl wie folgt:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
Wenn Sie ein Feld ändern, können Sie angeben, ob ein Wert enthalten ist oder ob ein Standardwert festgelegt wird.
Im folgenden Beispiel wird das Feld j als NOT NULL und mit dem Standardwert100 .
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Wenn Sie den Standardwert nicht festlegen, wird MySQL das Feld automatisch auf NULL setzen.
Sie können den Befehl ALTER verwenden, um den Standardwert des Felds zu ändern. Versuchen Sie den folgenden Beispiel:
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Feld | Typ | Null | Schlüssel | Standardwert | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | i | int(11) | YES | | 1000 | | +-------+---------+------+-----+---------+-------+ 2 Zeilen in der Liste (0,00 sec)
Sie können auch den Befehl ALTER mit dem DROP-Ausdruck verwenden, um den Standardwert des Felds zu löschen, wie im folgenden Beispiel gezeigt:
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Feld | Typ | Null | Schlüssel | Standardwert | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | YES | | NULL | | i | int(11) | YES | | NULL | +-------+---------+------+-----+---------+-------+ 2 Zeilen in der Liste (0,00 sec) Ändern eines Tabellentyps:
Um den Typ der Datenbanktabelle zu ändern, kann der Befehl ALTER mit dem TYPE-Ausdruck verwendet werden. Versuchen Sie den folgenden Beispiel, wir ändern den Typ der Tabelle testalter_tbl in MYISAM:
Achtung:Um den Typ der Datenbanktabelle anzuzeigen, kann der Befehl SHOW TABLE STATUS verwendet werden.
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: Kommentar: 1 row in set (0.00 sec)
Wenn Sie den Namen der Datenbanktabelle ändern möchten, können Sie die RENAME Klausel im ALTER TABLE Statement verwenden, um dies zu erreichen.
Versuchen Sie den folgenden Beispiel, um die Datenbanktabelle testalter_tbl in alter_tbl umzubenennen:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
Der ALTER-Befehl kann auch verwendet werden, um Indizes von MySQL-Datenbanktabellen zu erstellen und zu löschen, diese Funktion wird in den kommenden Kapiteln vorgestellt.