Нередко возникает изменить уже имеющуюся таблицу, в частности, добавить или удалить столбцы, изменить тип столбцов и т.д.. То есть потребуется изменить определение таблицы. Для этого применяется выражение ALTER TABLE, которое имеет следующий формальный синтаксис:
ALTER TABLE название_таблицы
{ ADD название_столбца тип_данных_столбца [ограничения_столбца] |
DROP COLUMN название_столбца |
ALTER COLUMN название_столбца параметры_столбца |
ADD [CONSTRAINT] определение_ограничения |
DROP [CONSTRAINT] имя_ограничения}
Рассмотрим некоторые возможности по изменению таблицы.
Добавление нового столбца
Добавим в таблицу Customers новый столбец Phone:
ALTER TABLE Customers
ADD Phone CHARACTER VARYING(20) NULL;
Здесь столбец Phone имеет тип CHARACTER VARYING(20), и для него определен атрибут NULL, то есть столбец допускает отсутствие значения. Но что если нам надо добавить столбец, который не должен принимать значения NULL? Если в таблице есть данные, то следующая команда не будет выполнена:
ALTER TABLE Customers
ADD Address CHARACTER VARYING(30) NOT NULL;
Поэтому в данном случае решение состоит в установке значения по умолчанию через атрибут DEFAULT:
ALTER TABLE Customers
ADD Address CHARACTER VARYING(30) NOT NULL DEFAULT 'Неизвестно';
Удаление столбца
Удалим столбец Address из таблицы Customers:
ALTER TABLE Customers
DROP COLUMN Address;
Изменение типа столбца
Для изменения типа применяется ключевое слово TYPE. Изменим в таблице Customers тип данных у столбца FirstName на VARCHAR(50) (он же VARYING CHARACTER(50)):
ALTER TABLE Customers
ALTER COLUMN FirstName TYPE VARCHAR(50);
Изменение ограничений столбца
Для добавления ограничения применяется оператор SET, после которого указывается ограничение. Например, установим для столбца FirstName ограничение NOT NULL:
ALTER TABLE Customers
ALTER COLUMN FirstName
SET NOT NULL;
Для удаления ограничения применяется оператор DROP, после которого указывается ограничение. Например, удалим выше установленное ограничение:
ALTER TABLE Customers
ALTER COLUMN FirstName
DROP NOT NULL;
Изменение ограничений таблицы
Добавление ограничения CHECK:
ALTER TABLE Customers
ADD CHECK (Age > 0);
Добавление первичного ключа PRIMARY KEY:
ALTER TABLE Customers
ADD PRIMARY KEY (Id);
В данном случае предполагается, что в таблице уже есть столбец Id, который не имеет ограничения PRIMARY KEY. А с помощью вышеуказанного скрипта устанавливается ограничение PRIMARY KEY.
Добавление ограничение UNIQUE – определим для столбца Email уникальные значения:
ALTER TABLE Customers
ADD UNIQUE (Email);
При добавлении ограничения каждому из них дается определенное имя. Например, выше добавленное ограничение для CHECK будет называться customers_age_check. Имена ограничений можно посмотреть в таблице через pgAdmin.
Также мы можем явным образом назначить ограничению при добавлении имя с помощью оператора CONSTRAINT.
ALTER TABLE Customers
ADD CONSTRAINT phone_unique UNIQUE (Phone);
В данном случае ограничение будет называться “phone_unique”.
Чтобы удалить ограничение, надо знать его имя, которое указывается после выражения DROP CONSTRAINT. Например, удалим выше добавленное ограничение:
ALTER TABLE Customers
DROP CONSTRAINT phone_unique;
Переименование столбца и таблицы
Переименуем столбец Address в City:
ALTER TABLE Customers
RENAME COLUMN Address TO City;
Переименуем таблицу Customers в Users:
ALTER TABLE Customers
RENAME TO Users;
статья взята тут
Свежие комментарии