Как добавить колонку в таблицу sql
Перейти к содержимому

Как добавить колонку в таблицу sql

  • автор:

Как добавить колонку в таблицу sql

Возможно, в какой-то момент мы захотим изменить уже имеющуюся таблицу. Например, добавить или удалить столбцы, изменить тип столбцов, добавить или удалить ограничения. То есть потребуется изменить определение таблицы. Для изменения таблиц используется выражение ALTER TABLE .

Общий формальный синтаксис команды выглядит следующим образом:

ALTER TABLE название_таблицы [WITH CHECK | WITH NOCHECK]

Таким образом, с помощью ALTER TABLE мы можем провернуть самые различные сценарии изменения таблицы. Рассмотрим некоторые из них.

Добавление нового столбца

Добавим в таблицу Customers новый столбец Address:

ALTER TABLE Customers ADD Address NVARCHAR(50) NULL;

В данном случае столбец Address имеет тип NVARCHAR и для него определен атрибут NULL. Но что если нам надо добавить столбец, который не должен принимать значения NULL? Если в таблице есть данные, то следующая команда не будет выполнена:

ALTER TABLE Customers ADD Address NVARCHAR(50) NOT NULL;

Поэтому в данном случае решение состоит в установке значения по умолчанию через атрибут DEFAULT:

ALTER TABLE Customers ADD Address NVARCHAR(50) NOT NULL DEFAULT 'Неизвестно';

В этом случае, если в таблице уже есть данные, то для них для столбца Address будет добавлено значение «Неизвестно».

Удаление столбца

Удалим столбец Address из таблицы Customers:

ALTER TABLE Customers DROP COLUMN Address;

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

Изменим в таблице Customers тип данных у столбца FirstName на NVARCHAR(200) :

ALTER TABLE Customers ALTER COLUMN FirstName NVARCHAR(200);

Добавление ограничения CHECK

При добавлении ограничений SQL Server автоматически проверяет имеющиеся данные на соответствие добавляемым ограничениям. Если данные не соответствуют ограничениям, то такие ограничения не будут добавлены. Например, установим для столбца Age в таблице Customers ограничение Age > 21.

ALTER TABLE Customers ADD CHECK (Age > 21);

Если в таблице есть строки, в которых в столбце Age есть значения, несоответствующие этому ограничению, то sql-команда завершится с ошибкой. Чтобы избежать подобной проверки на соответствие и все таки добавить ограничение, несмотря на наличие несоответствующих ему данных, используется выражение WITH NOCHECK :

ALTER TABLE Customers WITH NOCHECK ADD CHECK (Age > 21);

По умолчанию используется значение WITH CHECK , которое проверяет на соответствие ограничениям.

Добавление внешнего ключа

Пусть изначально в базе данных будут добавлены две таблицы, никак не связанные:

CREATE TABLE Customers ( Id INT PRIMARY KEY IDENTITY, Age INT DEFAULT 18, FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, Email VARCHAR(30) UNIQUE, Phone VARCHAR(20) UNIQUE ); CREATE TABLE Orders ( Id INT IDENTITY, CustomerId INT, CreatedAt Date );

Добавим ограничение внешнего ключа к столбцу CustomerId таблицы Orders:

ALTER TABLE Orders ADD FOREIGN KEY(CustomerId) REFERENCES Customers(Id);

Добавление первичного ключа

Используя выше определенную таблицу Orders, добавим к ней первичный ключ для столбца Id:

ALTER TABLE Orders ADD PRIMARY KEY (Id);

Добавление ограничений с именами

При добавлении ограничений мы можем указать для них имя, используя оператор CONSTRAINT , после которого указывается имя ограничения:

ALTER TABLE Orders ADD CONSTRAINT PK_Orders_Id PRIMARY KEY (Id), CONSTRAINT FK_Orders_To_Customers FOREIGN KEY(CustomerId) REFERENCES Customers(Id); ALTER TABLE Customers ADD CONSTRAINT CK_Age_Greater_Than_Zero CHECK (Age > 0);

Удаление ограничений

Для удаления ограничений необходимо знать их имя. Если мы точно не знаем имя ограничения, то его можно узнать через SQL Server Management Studio:

Изменение таблиц и ALTER TABLE в MS SQL Server 2016

Раскрыв узел таблиц в подузле Keys можно увидеть названия ограничений первичного и внешних ключей. Названия ограничений внешних ключей начинаются с «FK». А в подузле Constraints можно найти все ограничения CHECK и DEFAULT. Названия ограничений CHECK начинаются с «CK», а ограничений DEFAULT — с «DF».

Например, как видно на скриншоте в моем случае имя ограничения внешнего ключа в таблице Orders называется «FK_Orders_To_Customers». Поэтому для удаления внешнего ключа я могу использовать следующее выражение:

ALTER TABLE Orders DROP FK_Orders_To_Customers;

ALTER TABLE SQL Server

В этом учебном пособии вы узнаете, как использовать оператор ALTER TABLE в SQL Server (Transact-SQL) для добавления столбца, изменения столбца, удаления столбца, переименования столбца или переименования таблицы с синтаксисом и примерами.

Описание

Оператор ALTER TABLE SQL Server (Transact-SQL) используется для добавления, изменения или удаления столбцов в таблице.

Добавить столбец в таблицу.

Вы можете использовать оператор ALTER TABLE в SQL Server, чтобы добавить столбец в таблицу.

Синтаксис

Синтаксис добавления столбца в таблицу в SQL Server (Transact-SQL):

ALTER TABLE table_name
ADD column_name column-definition;

Пример

Рассмотрим пример, который показывает, как добавить столбец в таблицу SQL Server с помощью оператора ALTER TABLE.
Например:

Transact-SQL
ALTER TABLE employees
ADD last_name VARCHAR ( 50 );

Этот пример SQL Server ALTER TABLE добавит столбец в таблицу employees , с наименованием last_name .

Добавить несколько столбцов в таблицу

Вы можете использовать оператор ALTER TABLE в SQL Server для добавления нескольких столбцов в таблицу.

Синтаксис

Синтаксис добавления нескольких столбцов в существующую таблицу в SQL Server (Transact-SQL):

ALTER TABLE table_name
ADD column_1 column-definition,
column_2 column-definition,
.
column_n column_definition;

Пример

Рассмотрим пример, который показывает, как добавить несколько столбцов в таблицу в SQL Server с помощью оператора ALTER TABLE.
Например:

Transact-SQL
ALTER TABLE employees
ADD last_name VARCHAR ( 50 ),
first_name VARCHAR ( 40 );

Этот пример SQL Server ALTER TABLE добавит в таблицу employees два столбца, поле last_name как VARCHAR (50) и поле first_name как VARCHAR (40).

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

Вы можете использовать оператор ALTER TABLE в SQL Server для изменения столбца в таблице.

Синтаксис

Синтаксис изменения столбца в существующей таблице в SQL Server (Transact-SQL):

ALTER TABLE table_name
ALTER COLUMN column_name column_type;

Пример

Рассмотрим пример, который показывает, как изменить столбец в таблице SQL Server с помощью оператора ALTER TABLE.
Например:

Transact-SQL
ALTER TABLE employees
ALTER COLUMN last_name VARCHAR ( 75 ) NOT NULL ;

Этот пример SQL Server ALTER TABLE изменит столбец с именем last_name как тип данных VARCHAR (75) и принудит столбец не допускать нулевые значения.

Удалить столбец из таблицы

Вы можете использовать оператор ALTER TABLE в SQL Server для удаления столбца из таблицы.

Синтаксис

Синтаксис удаления столбца в существующей таблице в SQL Server (Transact-SQL):

ALTER TABLE table_name
DROP COLUMN column_name;

Пример

Рассмотрим пример, показывающий, как удалить столбец из таблицы на SQL Server с помощью оператора ALTER TABLE.
Например:

Transact-SQL
ALTER TABLE employees
DROP COLUMN last_name ;

Этот пример SQL Server ALTER TABLE удалит столбец с именем last_name из таблицы, называемой employee .

Переименовать столбец в таблице

Вы не можете использовать оператор ALTER TABLE в SQL Server для переименования столбца в таблице. Тем не менее, вы можете использовать sp_rename , хотя Microsoft рекомендует удалять и воссоздавать таблицу, чтобы скрипты и хранимые процедуры не были нарушены.

Синтаксис

Синтаксис переименования столбца в существующей таблице в SQL Server (Transact-SQL):

sp_rename ‘table_name.old_column_name’, ‘new_column_name’, ‘COLUMN’;

Пример

Рассмотрим пример, который показывает, как переименовать столбец в таблице на SQL Server, используя sp_rename .
Например:

Как добавить поле в таблицу sql

Для добавления поля используется запрос ALTER . Посмотрим на пример:

ALTER TABLE rockets ADD COLUMN speed int; 

Мы добавили поле speed с типом int в таблицу rockets .

Добавление столбцов в таблицу (ядро СУБД)

В этой статье описывается, как добавить новые столбцы в таблицу в SQL Server с помощью SQL Server Management Studio или Transact-SQL.

Замечания

ALTER TABLE С помощью инструкции для добавления столбцов в таблицу эти столбцы автоматически добавляются в конец таблицы.

Если вы хотите, чтобы столбцы в определенном порядке в таблице, необходимо использовать SQL Server Management Studio. Переупорядочивание таблиц не рекомендуется, но дополнительные сведения доступны в статье Изменение порядка столбцов в таблице.

Чтобы запросить существующие столбцы, используйте представление каталога объектов sys.columns.

Разрешения

Требуется разрешение ALTER на таблицу.

Использование SQL Server Management Studio

SQL Server Management Studio (SSMS) не поддерживает все параметры языка определения данных (DDL) в Azure Synapse. Вместо этого используйте скрипты T-SQL.

Вставка столбцов в таблицу с помощью конструктора таблиц

  1. В обозревателе объектовщелкните правой кнопкой мыши таблицу, в которую необходимо добавить столбцы, и выберите пункт Конструктор.
  2. Щелкните первую пустую ячейку в столбце Имя столбца.
  3. Введите имя столбца в ячейку. Имя столбца — значение, которое необходимо указать.
  4. Нажмите клавишу TAB, чтобы перейти к ячейке типа данных и выбрать тип данных из раскрывающегося списка. Тип данных является обязательным значением и присваивается значение по умолчанию, если вы не выбрали его.

Примечание. Значения по умолчанию можно установить или изменить в диалоговом окне Параметры в разделе Инструменты для баз данных.

Примечание. При создании нового столбца для свойств столбца устанавливаются значения по умолчанию, но их можно изменить на вкладке Свойства столбца .

Использование Transact-SQL

Добавление столбцов в таблицу

В следующем примере добавляются два столбца в таблицу dbo.doc_exa .

ALTER TABLE dbo.doc_exa ADD column_b VARCHAR(20) NULL, column_c INT NULL ; 

Связанный контент

  • Инструкция ALTER TABLE (Transact-SQL)
  • Свойства столбцов (страница «Общие»)
  • Создание проверочных ограничений
  • Указание значений по умолчанию для столбцов
  • Указание вычисляемых столбцов в таблице
  • Создание ограничений уникальности
  • Индексы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *