Modyfikowanie pól tabeli za pomocą polecenia ALTER TABLE

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 4682 razy

Czasami zachodzi potrzeba zmodyfikowania pól tabeli, ustawienia typu, dodanie nowej kolumny czy też usunięcie. Do tego celu służy polecenie ALTER TABLE.

Dodawanie nowej kolumny danych do tabeli

Oto w jaki sposób dodaje się do tabeli nowe pola:

ALTER TABLE library.books ADD pages_nr INT NOT NULL;

Dodawanie większej liczby pól na raz:

ALTER TABLE library.books ADD nr1 INT NOT NULL, ADD nr2 NOT NULL;

Usuwanie kolumn danych z tabeli

Polecenie ALTER TABLE umożliwia również usuwanie pól tabeli. Oto przykład:

ALTER TABLE library.books DROP nr1, DROP nr2;

Uwaga! Wykonanie powyższej instrukcji nie ostrzega przed usunięciem, więc należy zachować ostrożność przy jego wykonywaniu.

Modyfikowanie pól tabeli

Załóżmy, że się rąbnąłem i chcę zmienić np. nazwę danego pola tabeli, wyglądać to będzie tak:

ALTER TABLE library.books CHANGE pages_nr pages INT NOT NULL;

Przetestowanie powyższych poleceń w konsoli:

Przebieg testowania powyższej funkcji na wcześniej utworzonej bazie danych library z tabelą books:

mysql -u root -p
Enter password: **************
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 172
Server version: 5.6.23 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> ALTER TABLE library.books ADD pages_nr INT NOT NULL;
Query OK, 0 rows affected (0.39 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE library.books ADD nr1 INT NOT NULL, ADD nr2 INT NOT NULL;
Query OK, 0 rows affected (0.41 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE library.books DROP nr1, DROP nr2;
Query OK, 0 rows affected (0.39 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE library.books CHANGE pages_nr pages INT NOT NULL;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESCRIBE library.books;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| id     | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| title  | char(255)        | NO   |     | NULL    |                |
| author | char(255)        | NO   |     | NULL    |                |
| pages  | int(11)          | NO   |     | NULL    |                |
+--------+------------------+------+-----+---------+----------------+
4 rows in set (0.02 sec)

mysql>
Propozycje książek