Изменение таблиц и столбцов

Поділитись

Если таблица уже была ранее создана, и ее необходимо изменить, то для этого применяется команда 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:

12ALTER TABLE
CustomersDROP COLUMN Address;

Изменение значения по умолчанию

Установим в таблице Customers для столбца Age значение по умолчанию 22:

1
2
ALTER TABLE CustomersALTER COLUMN Age
SET DEFAULT 22;

Изменение типа столбца

Изменим в таблице Customers тип данных у столбца FirstName на CHAR(100) и установим для него атрибут NULL:

12ALTER 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 TABLE
ProductsADD PRIMARY KEY (Id
);

Теперь удалим первичный ключ:

1
2
ALTER TABLE ProductsDROP
PRIMARY KEY;

Поділитись