Transact-SQLTransact-SQL (T-SQL) — процедурное расширение языка SQL, созданное компанией Microsoft (для Microsoft SQL Server) и Sybase (для Sybase ASE). SQL был расширен такими дополнительными возможностями как:
Язык Transact-SQL является ключом к использованию MS SQL Server. Все приложения, взаимодействующие с экземпляром MS SQL Server, независимо от их реализации и пользовательского интерфейса, отправляют серверу инструкции Transact-SQL. Элементы синтаксисаДирективы сценарияДирективы сценария — это специфические команды, которые используются только в MS SQL. Эти команды помогают серверу определять правила работы со скриптом и транзакциями. Типичные представители: GO — информирует SQL Server об окончании пакета инструкций Transact-SQL, EXEC (или EXECUTE) — выполняет процедуру или скалярную функцию. КомментарииКомментарии используются для создания пояснений для блоков сценариев, а также для временного отключения команд при отладке скрипта. Комментарии бывают как строковыми, так и блоковыми:
Типы данныхКак и в языках программирования, в SQL существуют различные типы данных для переменных:
Примечание. Для использования русских символов (не ASCII кодировки) используются типы данных с приставкой «n» (nchar, nvarchar, ntext), которые кодируют символы двумя байтами. Иначе говоря, для работы с Unicode используются типы данных с «n» (от слова national). Строковые константы с Unicode также записываются с «n» в начале. Примечание. Для данных переменной длины используются типы данных с приставкой «var». Типы данных без приставки «var» имеют фиксированную длину области памяти, неиспользованная часть которой заполняется пробелами или нулями. ИдентификаторыИдентификаторы — это специальные символы, которые используются с переменными для идентифицирования их типа или для группировки слов в переменную. Типы идентификаторов:
ПеременныеПеременные используются в сценариях. Чтобы работать с переменной, её нужно объявить, при том объявление должно быть осуществлено в той транзакции или пакете инструкций, в которой выполняется команда, использующая эту переменную. Иначе говоря, после завершения транзакции, а также после команды GO, переменная уничтожается. Объявление переменной выполняется командой DECLARE, задание значения переменной осуществляется либо командой SET, либо SELECT: USE TestDatabase
-- Объявление переменных
DECLARE @EmpID int, @EmpName varchar(40)
-- Задание значения переменной @EmpID
SET @EmpID = 1
-- Задание значения переменной @EmpName
SELECT @EmpName = UserName FROM Users WHERE UserID = @EmpID
-- Вывод переменной @EmpName в результат запроса
SELECT @EmpName AS [Employee Name]
GO
Примечание. В этом примере используется группировка слов в лексему — конструкция [Employee Name] воспринимается как одна лексема, так как слова заключены в квадратные скобки. ОператорыОператоры — это специальные команды, предназначенные для выполнения простых операций над переменными:
Системные функцииСпецификация Transact-SQL значительно расширяет стандартные возможности SQL благодаря встроенным функциям:
Примечание. Полный список функций можно найти в справке к SQL серверу. Примечание. К скалярным функциям можно также отнести и глобальные переменные, которые в тексте сценария вызываются двойной собакой «@@». Пример: USE TestDatabase
-- Использование агрегативной функции для подсчета средней зарплаты
SELECT AVG(BaseSalary) AS [Average salary] FROM Positions
GO
-- Использование скалярной функции для получения имени базы данных
SELECT DB_NAME() AS [Database name]
GO
-- Использование скалярной функции для получения имени текущего пользователя
DECLARE @MyUser char(30)
SET @MyUser = USER_NAME()
SELECT 'The current user''s database username is: '+ @MyUser
GO
-- Использование функции-указателя для получения данных с другого сервера
SELECT * FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM owner.titles')
GO
ВыраженияВыражение — это комбинация операторов и символов, которая получает на вход скалярную величину, а на выходе дает другую величину или исполняет какое-то действие. В Transact-SQL выражения делятся на 3 типа: DDL, DCL и DML.
Пример: USE TestDatabase
-- Использование DDL
CREATE TABLE TempUsers (UserID int, UserName nvarchar(40), DepartmentID int)
GO
-- Использование DCL
GRANT SELECT ON Users TO public
GO
-- Использование DML
SELECT UserID, UserName + ' ' + UserSurname AS [User Full Name] FROM Users
GO
-- Использование DDL
DROP TABLE TempUsers
GO
Управление выполнением сценарияВ Transact-SQL существуют специальные команды, которые позволяют управлять потоком выполнения сценария, прерывая его или направляя в нужную ветвь.
См. такжеПримечания
Литература
|
Portal di Ensiklopedia Dunia