Академический Документы
Профессиональный Документы
Культура Документы
_____________________________________________________________________________________
Теоретические указания:
ОСНОВЫ TRANSACT-SQL
Язык Transact-SQL, также известный как T-SQL, является реализацией стандарта SQL,
дополненной набором расширений Microsoft. Основной задачей языка T-SQL является обеспечение
программиста набором средств проектирования транзакционных баз данных. Язык T-SQL часто
ассоциируют с хранимыми процедурами, но на самом деле он представляет нечто большее. В
приложениях «клиент-сервер» он может быть задействован несколькими способами:
• T-SQL может использоваться в выражениях как часть команд DML INSERT, UPDATE и
DELETE, порожденных клиентским процессом;
Файл сценария SQL и окно анализатора запросов может содержать несколько пакетов. В
данном случае все пакеты разделяют ключевые слова терминаторов. По умолчанию этим
ключевым словом является GO, и оно должно быть единственным в строке. Все другие символы
(даже комментарии) нейтрализуют разделитель пакета.
Стандарт ANSI SQL требует помещения в конце каждой инструкции точки с запятой. В то
же время при программировании на языке T-SQL точка с запятой не обязательна. При этом нельзя
помещать точку с запятой после оператора TRY … END и после условия IF.
Любая длинная инструкция T-SQL может быть продолжена на следующей строке без
необходимости наличия какого-либо специального символа. Это свойство позволяет в
значительной мере повысить читаемость программного кода.
• Однострочный комментарий:
• Многострочный комментарий:
/*
Триггер вставки таблицы Order Пол Нильсен
версия 1.0 21 июля 2006 года логика: и т.д.
*/
Редактор SQL может применять и удалять комментарии во всех выделенных строках. Для
этого нужно соответственно выбрать команду меню Edit -> Advanced -> Comment Selection или
Edit -> Advanced -> Uncomment Selection. Для запуска пакетов можно выбрать пункт меню Query -
> Execute, кнопку Execute из панели инструментов или же нажатием клавиши F5.
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 2
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
ЯЗЫК DDL
Язык DDL (Data Definition Language) – это часть Transact-SQL, позволяющая создавать,
изменять и удалять структуры данных SQL. В отличие от DML, DDL не выполняет никаких
изменений над содержимым объектов, он определяет сами объекты.
Оператор CREATE
На первый взгляд может показаться, что задача создания многих объектов базы данных не
является такой уж сложной. Достаточно лишь учесть основные требования к конкретному объекту.
Но, к сожалению, на практике решение этой задачи часто становится весьма трудоемким. Прежде
всего, для успешного создания объектов необходимо тщательно соблюдать установленный
синтаксис. Оператором создания объектов является CREATE. Рассмотрим полную структуру
оператора CREATE, начиная с его наиболее обобщенной формы. Эта форма одинаково присуща
операторам CREATE, предназначенным для создания всевозможных объектов базы данных, а
различия обнаруживаются только в деталях. Первая часть оператора CREATE всегда выглядит так:
CREATE <object type> <object name>. За этой частью следуют дополнительные уточнения, состав
которых зависит от типа создаваемого объекта.
Поскольку в данном разделе речь идет о создании таблиц, то указанная структура может
быть уточнена следующим образом:
Вполне очевидно, что синтаксис этого оператора является довольно сложным, несмотря на
то что ради упрощения в этом определении исключены некоторые разделы. Далее рассмотрены
составные части синтаксического определения последовательно, начиная со второй строки
(описание первой строки уже приводилось).
Для именования таблиц и столбцов применяются такие же правила, какие относятся ко всем
другим объектам базы данных. В документации СУБД SQL Server они именуются правилами
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 3
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
выбора идентификаторов. Эти правила именования объектов довольно просты, но в данном
разделе основное внимание уделено не описанию принципов, используемых в СУБД SQL Server
для определения того, какие имена являются допустимыми и недопустимыми, а вопросам такого
выбора имен таблиц и столбцов, чтобы они были удобными и имели смысл.
Типы данных
За именем каждого столбца должно быть сразу же приведено обозначение типа данных,
поскольку не предусмотрены типы данных, применяемые по умолчанию.
Это ключевое слово определяет значение, которое должно использоваться при вставке
любой строки в качестве значения определенного поля, если для этого поля не предусмотрено
значение, заданное пользователем. Если в определении таблицы предусмотрено применение
значений, заданных по умолчанию, то оно должно следовать сразу же за обозначением типа
данных.
Если в объявлении столбца указано, что этот столбец является столбцом идентификации, то
СУБД SQL Server автоматически присваивает последовательное числовое значение полю,
относящемуся к этому столбцу, при вставке каждой строки. Число, с которого в СУБД SQL Server
начинается отсчёт значений в столбце идентификации, называется начальным значением, а
величина, на которую это значение увеличивается или уменьшается после вставки каждой строки,
называется шагом. По умолчанию и начальное значение, и шаг равны 1. Значения столбцов
IDENTITY часто используются в качестве значений столбцов PRIMARY KEY, но не обязательно
только для этой цели.
Опция NULL и NOT NULL имеют довольно простое назначение – с их помощью можно
указать, допускает ли столбец, к которому относится та или иная опция, ввод NULL-значений, или
нет. По умолчанию сразу после инсталляции СУБД SQL Server для любого столбца задается
значение опции NOT NULL, если только во время инсталляции не будет предусмотрена
возможность применения неопределенных значений, или NULL-значений.
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 4
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
столбец. В качестве примера можно указать ограничение, согласно которому в столбец
разрешается помещать только числовое обозначение месяца года, представленное числами от 1 до
12.
Первый элемент этого определения, <column name>, остается практически таким же, как и в
других определениях столбцов, — он задает имя столбца, в котором будут представлены
вычисленные значения. Ещё одним элементом этого определения является выражение
вычисленного столбца. Это выражение может представлять собой любое обычное выражение, в
котором используются литералы или значения столбцов из той же таблицы. Пример применения:
Конструкция ON
Создание таблицы
USE Automobiles
CREATE TABLE TestСтраховки(
Номер_Страховки int IDENTITY NOT NULL,
Дата_Создания datetime NULL,
Адрес_Регистрации varchar(50) NULL,
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 5
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
);
GO
Оператор ALTER
Довольно часто приходится выполнять распоряжения по изменению структуры таблицы.
Кроме того, в процессе эксплуатации базы данных может потребоваться изменить размеры,
местонахождение файлов или какие-то другие характеристики. Оператор ALTER позволяет
осуществить все необходимые для этого действия. Оператор ALTER во многом напоминает
оператор CREATE, поэтому имеет в основном такую же синтаксическую структуру:
Очевидно, что оператор модификации таблицы не менее сложен, чем оператор создания
таблицы, но многие его параметры повторяют то, что было описано выше.
USE Automobiles
ALTER TABLE TestСтраховки
ADD
RegTime datetime NULL,
Contact varchar(25) NULL,
ТестоваяДата datetime NOT NULL DEFAULT '2005-11-07'
Оператор DROP
Выполнение оператора DROP приводит к удалению любого указанного в нем объекта
(объектов). Оператор DROP является весьма быстродействующим и удобным, а синтаксис этого
оператора остается полностью одинаковым применительно ко всем основным объектам СУБД SQL
Server (таблицам, представлениям, хранимым процедурам, триггерам и т.д.). Этот синтаксис
выглядит таким образом:
Пример:
USE Automobiles
DROP TABLE TestСтраховки
Ограничения
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 7
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
Ограничения (constraints) – это второй уровень реализации бизнес-правил; они запрещают
вводить в таблицу недопустимые данные. Примеры таких бизнес-правил – установка ограничения
кредитной линии в 50000 долларов США, а также запрет вводить в таблицу страны, которых нет в
стандартном списке.
Далее объясняются шесть типов ограничений, обеспечивающих соблюдение бизнес-правил.
Ограничения CHECK
Ограничения CHECK позволяют задать диапазон допустимых значений столбца или
определить его на основе логического выражения. Все ограничения CHECK возвращают
логическое значение true или false и не могут ссылаться на столбцы другой таблицы.
Ограничения CHECK создаются на двух уровнях:
Ограничения CHECK на уровне столбца применяются только к заданному столбцу и не
могут ссылаться на данные из других столбцов.
Правила
Ограничения СНЕСК создаются в составе определения таблицы, и их повторное
использование невозможно. По функциональности правила не отличаются от ограничений
CHECK, но создаются как самостоятельные объекты. Поскольку при создании правил они не
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 8
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
связываются с конкретной таблицей или столбцом, в их определении не может быть никаких
ссылок на таблицы или столбцы. В качестве поля подстановки используют переменные. Правила,
как и ограничения СНЕСК, позволяют создавать сложные сравнения с помощью операторов AND,
OR или NOT и задавать диапазон значений с помощью логических выражений. В следующих
примерах показаны два предыдущих ограничения СНЕСК, реализованные в виде правил.
CREATE RULE EmailValidator
AS
@value like '%@%.[a-z][a-z][a-z]' or @value like '%@%.[a-z][a-z].[a-z][a-z]'
GO
CREATE RULE EmployeelDValidator
AS
@column like '[A-Z][0-9][0-9][0-9][A-Z][A-Z][A-Z][A-Z][A-Z][A-Z]'
Ограничение DEFAULT
Другой механизм реализации бизнес-правил в таблице – ограничение DEFAULT,
позволяющее SQL Server записывать в столбец значение, если оно не было введено пользователем.
Чаще всего ограничения DEFAULТ используют, когда у столбца есть типичное или очень
распространенное значение, но не обязательно единственно возможное. Например, допустим,
компания, для которой ранее были созданы таблицы, — это магазин розничной торговли,
расположенный в Берлине. В адресе большинства клиентов значится город Берлин. Но в магазин
могут заходить и покупатели из близлежащих городов. Добавить ограничение DEFAULT для
столбца со значением город в таблице Info можно следующим образом:
USE Automobiles
CREATE TABLE Info(
PersonID int IDENTITY(1,1),
Adress varchar(100) NOT NULL DEFAULT 'Berlin');
Ограничение UNIQUE
Ограничение UNIQUE запрещает ввод в один или несколько столбцов повторяющихся
значений. Например, это ограничение позволяет реализовать бизнес-правило, согласно которому
имена названия автоклубов не должны повторяться. Ограничение UNIQUE для столбца с
названиями автоклубов в таблице Автоклубы можно добавить с помощью следующего запроса:
USE Automobiles
ALTER TABLE Автоклубы
ADD CONSTRAINT NEW_UNIQUE UNIQUE (Название_Автоклуба)
Другой способ:
USE Automobiles
CREATE TABLE АвтомобилиНаОбслуживании2(
НомерКлиента int IDENTITY(1,1) PRIMARY KEY,
НомерДвигателя int NOT NULL,
ОписаниеПоломки varchar(100) NOT NULL,
FOREIGN KEY (НомерДвигателя) REFERENCES Автомобили(Номер_Двигателя));
Оператор INSERT вставляет строки (или части) в таблицу. Существуют две различные
формы:
• INSERT [INTO] tab_name [(col_list)]
DEFAULT VALUES | VALUES ({ DEFAULT | NULL | expression } [ ,...n] )
• INSERT INTO tab_name | view_name [(col_list)]
{select_statement | execute_statement}
Используя первую форму, вы можете вставить только одну строку (или часть) в tab_name
таблицу. Вторая форма оператора INSERT вставляет набор результатов из оператора SELECT
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 10
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
или из сохраненной процедуры, которая выполняется, используя оператора EXECUTE.
(Сохраненная процедура должна возвратить данные, которые были ранее вставлены в
таблицу. Оператор SELECT может выбрать значения из различных таблиц или из той же самой
таблицы куда будем вставлять с помощью оператора INSERT, если типы столбцов совместимы).
У обеих форм, вставляемые значения должны иметь тип данных, который совместим с
типом данных соответствующего столбца таблицы. Чтобы гарантировать совместимость, все
символьно-ориентированные значения и временные данные должны быть включены в
апострофы, в то время как все числовые значения не нуждаются в таком включении.
Вставка одной строки
В обеих формах оператора INSERT, явная спецификация списка столбцов является
дополнительной опцией. Это означает, что исключение списка столбцов эквивалентно
определению списка всех столбцов таблицы.
Опция DEFAULT VALUES вставляет для всех столбцов значения по умолчанию. Если
столбец будет иметь тип данных TIMESTAMP или свойство IDENTITY , то система вставляет
сгенерированное значение. Для других типов данных, столбец установлен в ненулевое значение,
если по умолчанию значение существует, или NULL, если нет. Если столбец не будет иметь
пустое значение или DEFAULT значение, то оператор INSERT выдаст ошибку.
Пример
USE Automobiles;
INSERT INTO [Automobiles].[dbo].[Банковские_Реквизиты]
VALUES
(423630277
,'VictoriaBanc'
,'VISA GOLD')
INSERT INTO [Automobiles].[dbo].[Банковские_Реквизиты]
VALUES
(530825512
,'AgroindBanc'
,'VISA GOLD')
Пример
Загрузить данные в таблицу Владельцы:
USE Automobiles;
INSERT INTO [Automobiles].[dbo].[Владельцы]
VALUES
('2007567044500'
,'Букоа Вася'
,'ул. Киев 22, 45'
,'423630277')
INSERT INTO [Automobiles].[dbo].[Владельцы]
VALUES
('1993576048559'
,'Якин Антон'
,'ул. Бухта 20, 45'
,'530825512')
Пример
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 11
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
Загрузить данные в таблицу Автомобили:
USE Automobiles;
INSERT INTO [Automobiles].[dbo].[Автомобили]
VALUES
('Mazda'
,'36782901'
,'2500'
,'12.05.2004'
,'1993576048559')
INSERT INTO [Automobiles].[dbo].[Автомобили]
VALUES
('Lexus'
,'76992305'
,'200'
,'12.05.2008'
,'1993576048559')
INSERT INTO [Automobiles].[dbo].[Автомобили]
VALUES
('Lexus'
,'74952609'
,'5059'
,'12.05.2008'
,'2007567044500')
Пример
Загрузить данные в таблицу Продажи:
USE Automobiles;
INSERT INTO [Automobiles].[dbo].[Продажи]
VALUES
('10.19.2000'
,'12'
,15000)
Есть несколько различных способов вставить значения в Следующие три примера
Есть несколько различных способов вставить значения в таблицу. Следующие три примера
показывают эти возможности.
Пример
USE Automobiles;
INSERT INTO [Automobiles].[dbo].[ТО]
VALUES
('1990234084510'
,'12.2.2006'
,NULL)
Ключевое слово NULL вставляет нулевое значение в соответствующий столбец.
Вставка значений в некоторые (но не все) столбцы таблиц обычно требует явной спецификации
соответствующих столбцов. Опущенные столбцы должны иметь или пустое или DEFAULT
значение.
Пример:
USE sample;
INSERT INTO [Automobiles].[dbo].[ТО]
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 12
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
([Номер_Паспорта]
,[Дата_ТО])
VALUES
('1990234084510'
,'12.2.2006')
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 13
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
Следующий пример так же показывает, как несколько строк можно вставить в заранее
созданную таблицу, используя вторую форму оператора INSERT.
Пример
Получить все продажи, где цена авто < 30000 и дата покупки > 01.01.2000:
CREATE TABLE [dbo].[NewПродажи](
[Номер_Заказа] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[Дата_покупки] [datetime] NOT NULL,
[Номер_двигателя] [int] NOT NULL,)
INSERT INTO [dbo].[NewПродажи]([Дата_покупки],[Номер_двигателя])
SELECT [Дата_покупки]
,[Номер_двигателя]
FROM [Automobiles].[dbo].[Продажи]
WHERE [Цена_Автомобиля] < 30000
AND [Дата_покупки] > '01.01.2000'
Таблицы NewПродажи и BlackВладельцы были пусты прежде, чем оператор INSERT вставлял
строки. Если таблица уже будет существовать и иметь строки, то новые строки будут добавлены,
без удаления присутствующих.
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 14
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
VALUES
(2006305817231,2006-03-06,40184981),
(2000153500231,2006-12-05,05823752),
(1990234084510,2004-03-08,33340326)
Оператор INSERT в примере вставляет три строки в таблицу ТО, используя конструктор
значения таблицы. Вы можете увидеть из примера, синтаксис конструктора довольно прост.
Чтобы использовать конструктор значения таблицы, перечислите значения каждой строки в
скобках и отделить каждый список от других запятой.
Оператор UPDATE
Оператор UPDATE изменяет значения строк таблицы. У этого оператора есть общая форма:
UPDATE tab_name
{ SET column_1 = {expression | DEFAULT | NULL} [,...n] [FROM
tab_name1 [,...n]]
[WHERE condition]
Строки в таблице tab_name изменены в соответствии с выражением WHERE. Для каждой
строки, которая будет изменена, оператор UPDATE использует выражение SET, назначая
константу (или выражение) к определенному столбцу. Если выражение WHERE опущено,
оператор UPDATE изменяет все строки таблицы. (Выражение FROM будет обсуждаться позже в
этом разделе).
Оператор UPDATE может только изменить данные одной таблицы.
Пример:
Установите тип кредитной карты - 'VISA' владельцу с номером кред. карты '593010582':
UPDATE
[Automobiles].[dbo].[Банковские_Реквизиты] SET
[Тип_Кредит_Карт] = 'VISA'
WHERE [N_Кредит_Карт] =
'593010582'
Пример:
Изменить цены всех авто в английских фунтах. Текущий валютный курс составляет 0.51 Ј за 1 $.
UPDATE
[Automobiles].[dbo].[Продажи]
SET [Цена_Автомобиля] = [Цена_Автомобиля] * 0.51
В данном примере все строки таблицы Продажи будут изменены из-за опущенного выражения
WHERE. Измененные строки таблицы Продажи могут быть отображены следующим
оператором Transact-SQL:
SELECT * FROM [Automobiles].[dbo].[Продажи]
Результат:
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 15
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
Пример:
Поставить значение '11.12.2006' на дату тех осмотра для владельца с именем 'Абдула Алла':
USE Automobiles;
UPDATE [Automobiles].[dbo].ТО
SET [Дата_ТО] = '11.12.2006'
WHERE Номер_Паспорта IN (
SELECT Номер_Паспорта
FROM [Владельцы]
WHERE [ФИО] = 'Абдула Алла')
Данный пример использует в операторе UPDATE подзапрос с выражением WHERE.
Из-за использования оператора IN больше чем одна строка может быть получена из этого запроса.
Этот пример идентичен предыдущему, но выполнен другим способом
Пример:
UPDATE [Automobiles].[dbo].ТО
SET [Дата_ТО] = '11.12.2006'
FROM ТО, Владельцы
WHERE Номер_Паспорта = 'Абдула Алла'
AND ТО.Номер_Паспорта = Владельцы. Номер_Паспорта
Пример:
Цена каждого авто должна быть увеличена на проценты (20, 10, или 5) в зависимости от
предыдущей цены. Т.е. авто с более низкой ценой будет увеличена на несколько процентов
выше. USE sample;
UPDATE [Automobiles].[dbo].[Продажи]
SET [Цена_Автомобиля] = CASE
WHEN [Цена_Автомобиля] > 0 and [Цена_Автомобиля] < 10000 THEN
[Цена_Автомобиля]*1.2
WHEN [Цена_Автомобиля] >=10000 and [Цена_Автомобиля] < 30000
THEN
[Цена_Автомобиля]*1.1
ELSE [Цена_Автомобиля]*1.05
END
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 16
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
Оператор DELETE
Оператор DELETE удаляет строки из таблицы. У этого оператора есть две различные формы:
• DELETE FROM table_name
[WHERE predicate];
• DELETE table_name
FROM table_name [,…] [WHERE
condition];
Будут удалены все строки, которые удовлетворяют условию в выражении WHERE. Явное
обозначение столбцов в пределах оператора DELETE не необходимо, потому что оператор
DELETE воздействует на строки, а не на столбцы.
Пример:
Удалить все карты VISA в таблице Банковские_Реквизиты:
DELETE FROM [Automobiles].[dbo].[Банковские_Реквизиты]
WHERE [Тип_Кредит_Карт] = 'VISA'
Выражение WHERE в операторе DELETE может содержать внутренний запрос.
Пример:
Удалить все строки в таблице ТО относительно владельца 'Абдула Алла':
DELETE FROM
[Automobiles].[dbo].[ТО] WHERE
[Номер_Паспорта] IN (SELECT
[Номер_Паспорта]
FROM [Владельцы]
WHERE [ФИО] = 'Абдула Алла')
Пример:
USE Automobiles;
DELETE
[Automobiles].[dbo].[ТО] FROM
[ТО], [Владельцы]
WHERE [ФИО] = 'Абдула Алла'
AND [ТО].[Номер_Паспорта] = [Владельцы].[Номер_Паспорта]
Использование выражения WHERE в операторе DELETE является дополнительной опцией. Если
выражение WHERE будет опущено, то все строки таблицы будут удалены, как показано в
следующем примере.
Пример:
USE Automobiles;
DELETE [Automobiles].[dbo].[ТО]
Есть существенное различие между DELETE и операторам DROP TABLE. Оператор DELETE
удаляет (частично или полностью) контекст таблицы, тогда как оператор DROP TABLE удаляет
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 17
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
и контекст, и схему таблицы. Таким образом, после оператора DELETE, таблица все еще
существует в базе данных (хотя возможно с пустыми строками), но после оператора DROP
TABLE, таблица больше не существует.
Выражение OUTPUT
Результат выполнения INSERT, UPDATE, или DELETE всегда содержит только текст
относительно числа измененных строк (например “3 удаленных строк”). Если контекст
такого результата не соответствует вашим потребностям, вы можете использовать выражение
OUTPUT, которое отображает явно строки, которые вставлены или обновлены в таблице
илиудалены из нее. Выражение OUTPUT использует вставленные и удаленные таблицы, чтобы
отобразить соответствующий результат. Кроме того, выражение OUTPUT должно
использоваться с выражением INTO, чтобы заполнить таблицу. Поэтому используйте
переменную таблицу, чтобы сохранить результат.
Пример показывает, как оператор OUTPUT работает с оператором DELETE.
Пример:
USE sample;
DECLARE @del_table TABLE (Номер_Заказа INT, Дата_Покупки datetime);
DELETE [Продажи]
OUTPUT DELETED. Номер_Заказа, DELETED. Дата_Покупки INTO @del_table
WHERE Дата_Покупки > ‘02.01.2004’;
SELECT * FROM @del_table
Пример:
USE sample;
DECLARE @update_table TABLE([N_Кредит_Карт] INT, [Тип_Кредит_Карт] varchar(50));
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 18
Создание и актуализация отношений в Transact-SQL
_____________________________________________________________________________________
UPDATE [Automobiles].[dbo].[Банковские_Реквизиты]
SET [Тип_Кредит_Карт] = 'VISA'
OUTPUT INSERTED. [N_Кредит_Карт], INSERTED. [Тип_Кредит_Карт] INTO @update_table
WHERE [N_Кредит_Карт] = '593010582'
SELECT * FROM @update_table
Результат:
Контрольные вопросы:
1. Что означает ключевое слово DEFAULT в коде создания отношения?
Дополнительная информация:
1. Vitalie Cotelea, Marian Cotelea. Microsoft SQL Server 2019: Pas cu pas. – Universitatea
Tehnică a Moldovei, Departamentul “Ingineria Software si Automatică”. - Chişinău: S.n.,
2020 (Tipografia “Foxtrot”). -474 p.
2. Petkovic Dusan. Microsoft SQL Server 2008: A Beginner’s Guide. – USA: McGraw-Hill
Osborne Media. 2008.
3. Нильсен Пол. Microsoft SQL Server 2005. Библия пользователя. – М.: ООО «И. Д.
Вильямс», 2008.
4. Добавление кортежей с помощью операторов INSERT и SELECT.
http://technet.microsoft.com/ru-ru/library/ms188263(v=sql.105).aspx
5. Добавление кортежей с помощью операторов SELECT
INTO. http://technet.microsoft.com/ru-
ru/library/ms190750(v=sql.105).aspx
6. Выражения с OUTPUT. http://technet.microsoft.com/ru-ru/library/ms177564(v=sql.105).aspx
7. Справочник по Transact-SQL. http://msdn.microsoft.com/ru-
ru/library/ms189826(v=SQL.90).aspx
_____________________________________________________________________________________
Базы данных. Лабораторные работы UTM, FCIM, DISA, Dorian Saranciuc Pag. 20