Если таблица уже была ранее создана, и ее необходимо изменить, то для этого применяется команда ALTER TABLE. Ее сокращенный формальный синтаксис:
ALTER TABLE название_таблицы { ADD название_столбца тип_данных_столбца [атрибуты_столбца] | DROP COLUMN название_столбца | MODIFY COLUMN название_столбца тип_данных_столбца [атрибуты_столбца] | ALTER COLUMN название_столбца SET DEFAULT значение_по_умолчанию | ADD [CONSTRAINT] определение_ограничения | DROP [CONSTRAINT] имя_ограничения}
Вообще данная команда поддерживает гораздо больше опций и возможностей. Все их можно посмотреть в документации. Рассмотрим лишь основные сценарии, с которыми мы можем столкнуться.
Добавим в таблицу Customers новый столбец Address:
ALTER TABLE Customers ADD Address VARCHAR(50) NULL;
В данном случае столбец Address имеет тип VARCHAR и для него определен атрибут NULL.
Удалим столбец Address из таблицы Customers:
ALTER TABLE Customers DROP COLUMN Address;
Установим в таблице Customers для столбца Age значение по умолчанию 22:
ALTER TABLE Customers ALTER COLUMN Age SET DEFAULT 22;
Изменим в таблице Customers тип данных у столбца FirstName на CHAR(100)
и установим для него атрибут NULL
:
ALTER TABLE Customers MODIFY COLUMN FirstName CHAR(100) NULL;
Пусть изначально в базе данных будут добавлены две таблицы, никак не связанные:
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:
ALTER TABLE Orders ADD FOREIGN KEY(CustomerId) REFERENCES Customers(Id);
При добавлении ограничений мы можем указать для них имя, используя оператор CONSTRAINT, после которого указывается имя ограничения:
ALTER TABLE Orders ADD CONSTRAINT orders_customers_fk FOREIGN KEY(CustomerId) REFERENCES Customers(Id);
В данном случае ограничение внешнего ключа называется orders_customers_fk. Затем по этому имени мы можем удалить ограничение:
ALTER TABLE Orders DROP FOREIGN KEY orders_customers_fk;
Добавим в таблицу Products первичный ключ:
CREATE TABLE Products ( Id INT, Model VARCHAR(20) ); ALTER TABLE Products ADD PRIMARY KEY (Id);
Теперь удалим первичный ключ:
ALTER TABLE Products DROP PRIMARY KEY;