В этом материале мы рассмотрим конструктор табличных значений языка T-SQL, а именно Вы узнаете, что это такое и как использовать данный конструктор на практике.
Что такое конструктор табличных значений в языке T-SQL?
Конструктор табличных значений – это возможность языка Transact-SQL, с помощью которой можно создать набор значений строк, для того чтобы использовать этот набор в качестве таблицы. Другими словами, эта возможность позволяет указывать в одной инструкции DML несколько строк данных.
Конструктор табличных значений можно использовать в предложении VALUES инструкции INSERT, в предложении USING инструкции MERGE, а также для формирования таблицы в предложении FROM.
Заметка! Чем отличаются функции от хранимых процедур в T-SQL.
Данный конструктор можем быть полезен, например, в тех случаях, когда Вам необходимо осуществить вставку нескольких строк в таблицу в одной инструкции INSERT, т.е. Вы не хотите писать для каждой добавляемой строки отдельную инструкцию INSERT.
Упрощённый синтаксис
VALUES ( <Список значений строк> ) [ ,...n ]
Если использовать конструктор табличных значений, для того чтобы вставлять данные в таблицу, то можно в качестве значения указывать DEFAULT, чтобы SQL Server вставлял значение по умолчанию, определенное для столбца.
Во время добавления нескольких строк с помощью инструкции INSERT, значения соблюдают такие же правила преобразования типов данных, как и в инструкции UNION ALL, т.е. при несовпадении типов будет происходить неявное преобразование к типу с более высоким приоритетом. Будет возвращаться ошибка, в случае если указанные значения не поддерживают неявное преобразование.
Для конструктора табличных значений существует ограничение, с помощью него можно создать максимум 1000 строк.
Примеры использования конструктора табличных значений в T-SQL
Для того чтобы понимать, как можно использовать конструктор табличных значений, давайте разберем пару примеров, но сначала давайте создадим тестовую таблицу. В качестве SQL сервера у меня выступает Microsoft SQL Server 2016 Express.
CREATE TABLE dbo.TestTable( ProductId INT NOT NULL, ProductName VARCHAR(50) NULL, Summa MONEY NULL, CONSTRAINT PK_TestTable PRIMARY KEY CLUSTERED (ProductId ASC) )
Пример с INSERT — вставка нескольких строк
В первом примере давайте вставим несколько строк в таблицу, используя одну инструкцию INSERT.
INSERT INTO dbo.TestTable (ProductId, ProductName, Summa) VALUES (1, 'Компьютер', 500), (2, 'Принтер', 300), (3, 'Монитор', 300) GO SELECT * FROM dbo.TestTable
Как видим, у нас вставилось 3 строки.
Заметка! Обработка ошибок в языке T-SQL — конструкция TRY CATCH.
Пример с FROM – формирование таблицы и обращение к ней
Теперь давайте сформируем таблицу с помощью конструктора табличных значений и обратимся к ней, т.е. сделаем выборку.
SELECT * FROM (VALUES (1, 'Компьютер', 500), (2, 'Принтер', 300), (3, 'Монитор', 300) ) AS TmpTable (ProductId, ProductName, Summa)
Вот таким образом можно использовать конструктор табличных значений в предложение FROM. Точно также его можно использовать в предложение USING инструкции MERGE.
Я бы не сказал, что эта возможность очень полезна, но в то же время я считаю, что о конструкторе табличных значений Transact-SQL знать нужно, в своей книге «SQL код» я подробно рассказываю про другие полезные возможности языка SQL, на этом у меня все, пока!
Заметка! Для профессионального изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL.