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

MySQL ALTER Befehl

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)

Löschen, Hinzufügen oder Ändern von Tabellenfeldern

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.

Ändern Sie den Typ und den Namen des Felds

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;

Einfluss von ALTER TABLE auf NULL-Werte und Standardwerte

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.

Ändern des Standardwerts des Felds

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)

Tabellenname ändern

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.