Latest web development tutorials

MySQL Befehl ALTER

Wenn wir die Datentabelle ändern müssen oder Datentabelle Feld ändern, müssen Sie MySQL ALTER Befehl zu verwenden.

Tutorial vor Beginn dieses Kapitels lassen Sie uns eine Tabelle zu erstellen, um den Tabellennamen: 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)

Löschen, Hinzufügen oder ein Tabellenfeld ändern

Verwenden Sie die folgenden Befehle ALTER und DROP-Klausel löschen Befehl obigen Tabelle i Felder erstellt:

mysql> ALTER TABLE testalter_tbl  DROP i;

Wenn die Daten in der Tabelle nur ein Feld zurückbleiben, können Sie nicht DROP verwenden Sie das Feld zu löschen.

MySQL die ADD-Klausel verwenden, um Spalten zu Datenblatt hinzufügen möchten, als Beispiele für Felder in der Tabelle hinzufügen i testalter_tbl und Datentypen definieren:

mysql> ALTER TABLE testalter_tbl ADD i INT;

Nach den obigen Befehl ausgeführt wird, werden sie Felder zum Ende des Datentabellenfeld automatisch hinzugefügt.

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)

Wenn Sie den Speicherort des neuen Feldes angeben müssen, (nach dem in einem Feld-Einstellung) können Sie mit MySQL Schlüsselwort FIRST (Bit in der ersten Spalte), so dass nach Feldnamen.

Versuchen Sie, die folgende ALTER TABLE-Anweisung, nach der erfolgreichen Implementierung, Nutzung SHOW COLUMNS die Änderung der Tabellenstruktur anzuzeigen:

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;

Ersten und nach Schlüsselwörtern nur für ADD-Klausel, wenn Sie so wollen die Datentabelle Feldposition auf die Notwendigkeit, setzen Sie ein Feld verwenden DROP löschen und dann verwenden Fügen Sie das Feld hinzufügen und die Position.


Ändern Sie den Feldnamen und geben Sie

Wenn Sie den Feldtyp und den Namen ändern müssen, können Sie ändern, verwenden oder Klausel des ALTER-Kommando MODIFY.

das Typenfeld c von CHAR (1) Zum Beispiel in CHAR (10), können Sie den folgenden Befehl ausführen:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

Verwenden Sie CHANGE-Klausel Grammatik sind sehr unterschiedlich. Nach dem Wechsel Stichwort, durch den Feldnamen, den Sie ändern möchten gefolgt, und dann einen neuen Feldnamen und Typ angeben. Versuchen Sie, die folgenden Beispiele:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

Wirkung von ALTER TABLE auf Null und die Standardwerte

Wenn Sie das Feld ändern, können Sie festlegen, ob ein- oder ob nur gesetzt, den Standardwert.

Das folgende Beispiel, das angegebene Feld j NOT NULL und der Standardwert ist 100.

mysql> ALTER TABLE testalter_tbl 
    -> MODIFY j BIGINT NOT NULL DEFAULT 100;

Wenn Sie nicht über einen Standardwert gesetzt ist, wird MySQL automatisch die Feldstandardmäßig auf NULL gesetzt.


Ändern Sie die Standardfeldwerte

Sie können die ALTER den Standardwert des Feldes zu ändern, versuchen Sie die folgenden Beispiele:

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)

Sie können auch die Standardbefehl ALTER und DROP-Klauseln verwenden, das Feld zu löschen, als Beispiele:

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:

Ändern Sie die Datentabellentypen werden kann mit dem Befehl ALTER und TYPE-Klausel erreicht. Versuchen Sie, die folgenden Beispiele, werden wir die Art der Tabelle testalter_tbl MYISAM ändern:

Hinweis: Lesen Sie die Datentabellentypen , die SHOW TABLE STATUS - Anweisung verwenden können.

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)

Ändern Sie den Tabellennamen

Wenn Sie den Namen der Datentabelle ändern müssen, können Sie die RENAME-Klausel in ALTER TABLE-Anweisung zu erreichen verwenden.

Versuchen Sie, die folgenden Beispiele von Datentabellen testalter_tbl umbenennen alter_tbl:

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

ALTER-Befehl kann auch zum Erstellen und Löschen Indizes MySQL Datentabellen verwendet werden, um diese Funktion wir im nächsten Kapitel vorstellen.