Как изменить таблицу в sql management studio
Возможно, в какой-то момент мы захотим изменить уже имеющуюся таблицу. Например, добавить или удалить столбцы, изменить тип столбцов, добавить или удалить ограничения. То есть потребуется изменить определение таблицы. Для изменения таблиц используется выражение 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:
Раскрыв узел таблиц в подузле Keys можно увидеть названия ограничений первичного и внешних ключей. Названия ограничений внешних ключей начинаются с «FK». А в подузле Constraints можно найти все ограничения CHECK и DEFAULT. Названия ограничений CHECK начинаются с «CK», а ограничений DEFAULT — с «DF».
Например, как видно на скриншоте в моем случае имя ограничения внешнего ключа в таблице Orders называется «FK_Orders_To_Customers». Поэтому для удаления внешнего ключа я могу использовать следующее выражение:
ALTER TABLE Orders DROP FK_Orders_To_Customers;
Просмотр и редактирование таблиц SQL Server в графическом режиме
Иногда бывает необходимо произвести некоторые элементарные действия с базой данных, например найти некое значение и\или изменить его. Для тех, кто постоянно работает с базами и владеет языком запросов, эта задача не составит труда, но если вы видите SQL Server в первый раз, то проще всего просмотреть и отредактировать данные в графическом режиме.
Для этого надо открыть SQL Server Management Studio, найти в разделе «Databases» нужную базу и раскрыть ее. Затем в разделе «Tables» выбрать таблицу и правой клавишей мыши вызвать контекстное меню. В этом меню есть два пункта — «Select Top 1000 Rows» и «Edit Top 200 Rows».

Select Top 1000 Rows, как следует из названия, выводит первые 1000 строк таблицы

а Edit Top 200 Rows открывает для редактирования первые 200 строк таблицы. Это очень удобно, так как таблицу можно быстро пролистать, найти требуемую информацию и изменить ее.

При необходимости дефолтные значения 200\1000 можно изменить. Для этого надо открыть меню «Tools», перейти к пункту «Options»

открыть вкладку «SQL Server Object Explorer» и в разделе «Table and View Options» установить необходимые значения. А если поставить 0, то будет выводиться все содержимое базы без ограничений.

Все вышеописаное применимо ко всем более-менее актуальным версиям, начиная с SQL Server 2008 и заканчивая SQL Server 2016.
Ввод, удаление и изменение значений полей
До сих пор мы просто извлекали самыми разными способами данные из таблиц. Пришло время изучить как они туда попадают.
Значения могут быт помещены и удалены из полей, тремя командами:
- INSERT — вставка данных
- UPDATE — изменение данных
- DELETE — удаление
Ввод значений
Все строки вводятся с использованием команды INSERT. В самой простой форме используется следующий синтаксис:
INSERT INTO table_name VALUES ( value, value, . )
Так для того чтобы добавить запись в таблицу торговых агентов можно использовать команду:
INSERT INTO Salespeople VALUES( 1008, 'Johnson', 'London', 12 )
Команды модификации не производят никакого вывода. Но Query Analyzer сообщит Вам, что была добавлена 1 запись. Таблица уже должна существовать к моменту исполнения этой команды, а тип каждого значения в скобках после VALUES должен совпадать с типом данных столбца, в который оно вставляется. Первое значение попадает в столбец 1, второе — 2 и т.д.
Если вам нужно ввести пустое значение (NULL), просто укажите его в списке значений. Например:
INSERT INTO Salespeople VALUES ( 1009, 'Peel', NULL, 12 )
Вы можете явно указать столбцы, куда Вы хотите вставить значение. Это позволит вставлять значения в любом порядке.
INSERT INTO Customers( city, cname, cnum ) VALUES( 'Новосибирск', 'Петров', 2010 )
Обратите внимание, что столбцы rating и snum отсутствуют. Это значит, что во вставленной записи им будет присвоено значение по умолчанию. Обычно это NULL или значение указанное при создании таблицы. Более подробно мы это рассмотрим далее.
Команду INSERT можно использовать для вставки результатов запроса. Чтобы сделать это, просто заменяем предложение VALUES на соответствующий запрос:
INSERT INTO MoscowStaff SELECT * FROM Salespeople WHERE city = 'Москва'
- Она должна уже быть создана командой CREATE TABLE
- Она должна иметь четыре столбца, которые совпадают с таблицей торговых агентов в терминах типов данных.
Удаление строк из таблиц
Для удаления строк из таблицы используется команда DELETE. Она удаляет не отдельные значения, а строки целиком. Чтобы удалить все содержание таблицы агентов вы можете ввести команду:
DELETE FROM Salespeople
Но я пока не рекомендую Вам этого делать.
Обычно, Вам требуется удалять некоторые определенные строки в таблице. Чтобы определить какие строки будут удалены, используйте условие отбора, как мы это делали для запросов. Например, чтобы удалить агента Шилина можно ввести:
DELETE FROM Salespeople WHERE snum = 1007
Разумеется, если условию будет соответствовать несколько записей, все они будут удалены.
В отличие от файловых СУБД типа DBASE, SQL Server не помечает записи как удаленные, а удаляет их физически, т.е. восстановлению они не подлежат. Будьте осторожны с командой DELETE!
Изменение значения поля
Команда UPDATE позволяет изменять некоторые или все значения в существующей записи в таблице. Эта команда содержит предложение UPDATE, за которым указывается имя таблицы, и предложение SET, которое указывает на изменение которое нужно сделать для определенного столбца. Например, чтобы изменить рейтинги всех заказчиков на 200 можно ввести команду:
UPDATE Customers SET rating = 200
Аналогично DELETE, UPDATE может использовать условия для выбора записей, подлежащих изменению. Вот так можно изменить рейтинг для всех заказчиков агента Иванова (код 1001):
UPDATE Customers SET rating = 300 WHERE snum = 1001
В предложении SET можно указывать несколько столбцов, разделяя их запятыми.
Теперь мы изучили три команды, которые управляют содержимым БД. Если добавить к этому долгое изучение запросов, то выходит что мы основы SQL уже позади. Что будет дальше? Как говорят в американских шоу: «Дальше вы увидите:»
- Ограничение значений данных — большой раздел, посвященный первичным и внешним ключам, различным constraint‘ам (ограничениям) и т.п.
- Поддержка целостности данных — что это и с чем его едят.
- Представления — как скрыть от пользователя истинную структуру данных
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 .
Например:
