Если таблица уже была ранее создана, и ее необходимо изменить, то для этого применяется команда ALTER TABLE. Ее сокращенный формальный синтаксис:
| 1 2 3 4 5 6 7 | ALTER TABLE название_таблицы { ADD название_столбца тип_данных_столбца [атрибуты_столбца] | DROP COLUMN название_столбца |MODIFY COLUMN название_столбца тип_данных_столбца [атрибуты_столбца] |ALTER COLUMN название_столбца SET DEFAULT значение_по_умолчанию |ADD [CONSTRAINT] определение_ограничения |DROP [CONSTRAINT] имя_ограничения} |
Вообще данная команда поддерживает гораздо больше опций и возможностей. Все их можно посмотреть в документации. Рассмотрим лишь основные сценарии, с которыми мы можем столкнуться.
Добавление нового столбца
Добавим в таблицу Customers новый столбец Address:
| 1 2 | ALTER TABLE CustomersADD Address VARCHAR(50) NULL; |
В данном случае столбец Address имеет тип VARCHAR и для него определен атрибут NULL.
Удаление столбца
Удалим столбец Address из таблицы Customers:
| 12 | ALTER TABLE CustomersDROP COLUMN Address; |
Изменение значения по умолчанию
Установим в таблице Customers для столбца Age значение по умолчанию 22:
| 1 2 | ALTER TABLE CustomersALTER COLUMN Age SET DEFAULT 22; |
Изменение типа столбца
Изменим в таблице Customers тип данных у столбца FirstName на CHAR(100) и установим для него атрибут NULL:
| 12 | ALTER TABLE CustomersMODIFY COLUMN FirstName CHAR(100) NULL; |
Добавление и удаление внешнего ключа
Пусть изначально в базе данных будут добавлены две таблицы, никак не связанные:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE Customers(Id INT PRIMARY KEY AUTO_INCREMENT,Age INT, FirstName VARCHAR(20) NOT NULL,LastName VARCHAR(20) NOT NULL);CREATE TABLE Orders(Id INT PRIMARY KEY AUTO_INCREMENT,CustomerId INT,CreatedAt Date); |
Добавим ограничение внешнего ключа к столбцу CustomerId таблицы Orders:
| 1 2 | ALTER TABLE OrdersADD FOREIGN KEY(CustomerId) REFERENCES Customers(Id); |
При добавлении ограничений мы можем указать для них имя, используя оператор CONSTRAINT, после которого указывается имя ограничения:
| 1 2 3 | ALTER TABLE OrdersADD CONSTRAINT orders_customers_fk FOREIGN KEY(CustomerId) REFERENCES Customers(Id); |
В данном случае ограничение внешнего ключа называется orders_customers_fk. Затем по этому имени мы можем удалить ограничение:
| 1 2 | ALTER TABLE OrdersDROP FOREIGN KEY orders_customers_fk; |
Добавление и удаление первичного ключа
Добавим в таблицу Products первичный ключ:
| 1 2 3 4 5 6 7 8 | CREATE TABLE Products(Id INT,Model VARCHAR(20));ALTER TABLEProductsADD PRIMARY KEY (Id); |
Теперь удалим первичный ключ:
| 1 2 | ALTER TABLE ProductsDROP PRIMARY KEY; |