MySQL - polecenie ALTER
MySQL ALTER polecenie jest bardzo przydatne, gdy chcesz zmienić nazwę swojej tabeli, dowolnego pola tabeli lub jeśli chcesz dodać lub usunąć istniejącą kolumnę w tabeli.
Zacznijmy od stworzenia tabeli o nazwie testalter_tbl.
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
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)
Upuszczanie, dodawanie lub zmiana położenia kolumny
Jeśli chcesz usunąć istniejącą kolumnę i z powyższej tabeli MySQL, użyj rozszerzenia DROP klauzula wraz z ALTER polecenie, jak pokazano poniżej -
mysql> ALTER TABLE testalter_tbl DROP i;
ZA DROP klauzula nie zadziała, jeśli kolumna jest jedyną pozostałą w tabeli.
Aby dodać kolumnę, użyj DODAJ i określ definicję kolumny. Poniższa instrukcja przywraca pliki kolumna do testalter_tbl -
mysql> ALTER TABLE testalter_tbl ADD i INT;
Po wydaniu tej instrukcji testalter będzie zawierał te same dwie kolumny, które miał podczas pierwszego tworzenia tabeli, ale nie będzie miał takiej samej struktury. Dzieje się tak, ponieważ domyślnie dodawane są nowe kolumny na końcu tabeli. Więc pomimo tego, żei pierwotnie była pierwszą kolumną w mytbl, teraz jest ostatnią.
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)
Aby wskazać, że chcesz, aby kolumna znajdowała się w określonej pozycji w tabeli, użyj przycisku FIRST, aby ustawić ją jako pierwszą kolumnę lub AFTER col_name aby wskazać, że nowa kolumna powinna zostać umieszczona po kolumnie_nazwa.
Spróbuj wykonać następujące czynności ALTER TABLE oświadczenia, używając SHOW COLUMNS po każdym, aby zobaczyć, jaki efekt ma każdy z nich -
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;
Specyfikatory FIRST i AFTER działają tylko z klauzulą ADD. Oznacza to, że jeśli chcesz zmienić położenie istniejącej kolumny w tabeli, musisz najpierwDROP to i wtedy ADD w nowej pozycji.
Zmiana (zmiana) definicji kolumny lub nazwy
Aby zmienić definicję kolumny, użyj MODIFY lub CHANGE klauzula wraz z poleceniem ALTER.
Na przykład, aby zmienić kolumnę c od CHAR (1) do CHAR (10), możesz użyć następującego polecenia -
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
Z CHANGE, składnia jest nieco inna. Po słowie kluczowym CHANGE nadaj nazwę kolumnie, którą chcesz zmienić, a następnie określ nową definicję, która zawiera nową nazwę.
Wypróbuj następujący przykład -
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Jeśli teraz używasz CHANGE do konwersji j od BIGINT wrócić do INT bez zmiany nazwy kolumny wyciąg będzie wyglądał jak poniżej -
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
The Effect of ALTER TABLE on Null and Default Value Attributes- Kiedy MODYFIKUJ lub ZMIENIASZ kolumnę, możesz również określić, czy kolumna może zawierać wartości NULL i jaka jest jej wartość domyślna. W rzeczywistości, jeśli tego nie zrobisz, MySQL automatycznie przypisze wartości tym atrybutom.
Poniższy blok kodu jest przykładem, w którym NOT NULL kolumna będzie miała domyślnie wartość 100.
mysql> ALTER TABLE testalter_tbl
-> MODIFY j BIGINT NOT NULL DEFAULT 100;
Jeśli nie użyjesz powyższego polecenia, MySQL wypełni wartości NULL we wszystkich kolumnach.
Zmiana (zmiana) wartości domyślnej kolumny
Możesz zmienić wartość domyślną dla dowolnej kolumny przy użyciu ALTER Komenda.
Wypróbuj następujący przykład.
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)
Możesz usunąć domyślne ograniczenie z dowolnej kolumny, używając klauzuli DROP wraz z rozszerzeniem ALTER Komenda.
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)
Zmiana (zmiana) typu tabeli
Możesz użyć typu tabeli, używając TYPEklauzula wraz z poleceniem ALTER. Wypróbuj poniższy przykład, aby zmienićtestalter_tbl do MYISAM typ tabeli.
Aby sprawdzić aktualny typ tabeli, użyj SHOW TABLE STATUS komunikat.
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)
Zmiana nazwy (zmiana) tabeli
Aby zmienić nazwę tabeli, użyj RENAME opcja ALTER TABLE komunikat.
Wypróbuj następujący przykład, aby zmienić nazwę testalter_tbl do alter_tbl.
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
Możesz użyć polecenia ALTER, aby utworzyć i upuścić polecenie INDEX w pliku MySQL. Szczegółowo omówimy to polecenie w następnym rozdziale.