Открыть сервис

T-SQL

T-SQL (Transact-SQL) — это процедурное расширение языков SQL (Structured Query Language), разработанное корпорацией Microsoft и Sybase. Оно используется для взаимодействия с системами управления реляционными базами данных (СУБД), включая Microsoft SQL Server и Azure SQL Database. T-SQL добавляет к стандартному SQL возможности написания программного кода: переменные, условные операторы, циклы, обработку ошибок и работу с курсорами.

История

История T-SQL берёт начало в середине 1980-х годов, когда компания Sybase совместно с Microsoft и Ashton-Tate разрабатывала первую версию СУБД, известную как SQL Server. Расширение SQL, названное Transact-SQL, было создано для обеспечения более сложной логики обработки данных, чем позволял стандартный язык запросов. После разделения продуктов в начале 1990-х годов Microsoft продолжила развитие собственной версии SQL Server (начиная с версии 6.0 в 1995 году), сохранив и расширив диалект T-SQL. В 2000-е годы вместе с выходом SQL Server 2000 были добавлены новые возможности, такие как пользовательские функции и поддержка XML. Современные версии (SQL Server 2022 и Azure SQL Database) продолжают развивать T-SQL, включая интеграцию с языком R и Python, поддержку JSON, а также улучшенную обработку больших данных.

Ключевые отличия от стандартного SQL

Хотя T-SQL базируется на стандарте ANSI SQL (ISO/IEC 9075), он содержит ряд уникальных расширений и особенностей:

Структура и основные компоненты

Язык определения данных (DDL)

T-SQL позволяет создавать, изменять и удалять объекты базы данных, такие как таблицы, представления, хранимые процедуры, функции, индексы и триггеры. Основные команды DDL в T‑SQL:

Пример создания таблицы:

``sql CREATE TABLE Employees ( EmployeeID INT IDENTITY(1,1) PRIMARY KEY, FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL, HireDate DATETIME DEFAULT GETDATE() ); ``

Язык манипуляции данными (DML)

Команды DML используются для выборки, вставки, обновления и удаления данных:

Пример запроса с фильтрацией и сортировкой:

``sql SELECT FirstName, LastName, HireDate FROM Employees WHERE HireDate > '2023-01-01' ORDER BY LastName ASC; ``

Язык управления данными (DCL)

Команды DCL управляют правами доступа к объектам базы данных:

Процедурные расширения

Переменные

Переменные в T-SQL объявляются с помощью ключевого слова DECLARE и могут быть любого допустимого типа данных (INT, VARCHAR, DATETIME и др.). Значения присваиваются через SET или при выборке данных.

``sql DECLARE @TotalSales DECIMAL(10,2); SET @TotalSales = (SELECT SUM(Amount) FROM Sales); ``

Условные операторы и циклы

Условный оператор IF…ELSE позволяет выполнить различные блоки кода в зависимости от условия. Для повторяющихся действий используется цикл WHILE.

``sql IF @TotalSales > 1000 PRINT 'Продажи выше среднего'; ELSE PRINT 'Продажи ниже среднего'; ``

``sql WHILE @Counter <= 10 BEGIN PRINT @Counter; SET @Counter = @Counter + 1; END; ``

Обработка ошибок

Блок TRY…CATCH отлавливает ошибки выполнения. В блоке CATCH доступны функции для получения информации об ошибке.

``sql BEGIN TRY INSERT INTO Employees (FirstName, LastName) VALUES (NULL, 'Иванов'); END TRY BEGIN CATCH PRINT 'Ошибка: ' + ERROR_MESSAGE(); END CATCH; ``

Хранимые процедуры и функции

Хранимые процедуры — это именованные блоки T-SQL-кода, которые могут принимать параметры и возвращать наборы данных или коды состояния. Пользовательские функции (скалярные или табличные) возвращают значение или таблицу.

``sql CREATE PROCEDURE GetEmployeeByID @EmployeeID INT AS BEGIN SELECT * FROM Employees WHERE EmployeeID = @EmployeeID; END; ``

Триггеры

Триггер — это особая разновидность хранимой процедуры, которая автоматически выполняется при наступлении определённого события DML (INSERT, UPDATE, DELETE) или DDL (например, CREATE TABLE). Триггеры могут быть для каждой строки (FOR EACH ROW) или для каждого оператора (в SQL Server — только для оператора).

Типы данных

T‑SQL поддерживает широкий спектр типов данных:

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

T‑SQL является основным языком для всех версий Microsoft SQL Server, начиная с 6.0. Помимо управления данными, в среде SQL Server T‑SQL используется для администрирования (создание и настройка базы данных, управление пользователями, резервное копирование) и построения отчётов (совместно с Reporting Services). Современные версии SQL Server также поддерживают выполнение скриптов R и Python, но T‑SQL остаётся главным средством программирования на стороне сервера.

T‑SQL в Azure SQL Database

В облачном сервисе Microsoft Azure SQL Database T‑SQL является основным языком запросов и управления. Большая часть синтаксиса совпадает с локальной версией SQL Server, однако некоторые функции (например, полнотекстовый поиск, Service Broker) могут быть недоступны или иметь ограничения. Azure также предоставляет дополнительные возможности, такие как автоматическое масштабирование и высокая доступность, но работа с данными полностью строится на T‑SQL.

Критика и ограничения

Несмотря на широкую распространённость, T‑SQL подвергается критике за некоторые недостатки:

Влияние на другие технологии

T-SQL оказал влияние на разработку нескольких других диалектов SQL, включая язык, используемый в Azure Synapse Analytics и некоторых версиях Sybase ASE. Кроме того, Microsoft интегрировала T-SQL в Powеr BI (через DirectQuery и языковой запрос) для эффективной работы с данными.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →