Transact-SQL

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Transact-SQL (T-SQL)- процедурне розширення мови SQL, створене компанією Microsoft (для Microsoft SQL Server) і Sybase (для Sybase ASE).

SQL був розширений наступними додатковими можливостями, такими як:

  • Керуючі оператори,
  • Локальні і глобальні змінні,
  • Різні додаткові функції для обробки рядків, дат, математики, тощо,
  • Підтримка аутентифікації Microsoft Windows.

Мова Transact-SQL є ключем до використання MS SQL Server. Всі додатки, які взаємодіють з екземпляром MS SQL Server, незалежно від їх реалізації і призначеного для користувача інтерфейсу, відправляють з сервера інструкції Transact-SQL.

Елементи синтаксису[ред.ред. код]

Директиви сценарію[ред.ред. код]

Директиви сценарію — це специфічні команди, які використовуються тільки в MS SQL. Ці команди допомагають серверу визначати правила роботи зі скриптом і транзакціями. Типові представники: GO — інформує програми SQL Server про закінчення пакета інструкцій Transact-SQL, EXEC (або EXECUTE) — виконує процедуру або скалярну функцію.

Коментарі[ред.ред. код]

Коментарі використовуються для створення пояснень для блоків сценаріїв, а також для тимчасового відключення команд при налагодженні скрипта. Коментарі бувають як строковими так і блоковими:

- — строковий коментар виключає з виконання тільки один рядок, перед яким стоять два мінуси.

/ * * / — блоковий коментар виключає з виконання цілий блок команд, укладений в зазначену конструкцію. Допускає вкладені коментарі.

Типи даних[ред.ред. код]

Як і в мовах програмування, в SQL існують різні типи даних для зберігання змінних:

  • Числа — для зберігання числових змінних (bit, int, tinyint, smallint, bigint, numeric, decimal, money, smallmoney, float, real).
  • Дати — для зберігання дати та часу (datetime, smalldatetime, date, time, datetime2, datetimeoffset).
  • Символи — для зберігання символьних даних (char, nchar, varchar, nvarchar).
  • Двійкові — для зберігання бінарних даних (binary, varbinary).
  • Більш об'ємні — типи даних для зберігання великих бінарних даних (text, ntext, image).
  • Спеціальні — покажчики (cursor), 16-байтове шістнадцяткове число, яке використовується для GUID (uniqueidentifier), штамп зміни рядка (timestamp), версія рядки (rowversion), таблиці (table).

Примітка. Для використання російських символів (НЕ ASCII кодування) використовуються типи даних з приставкою «n» (nchar, nvarchar, ntext), які кодують символи двома байтами. Інакше кажучи, для роботи з Unicode використовуються типи даних з «n» (від слова national). Строкові константи з Unicode також записуються з «n» на початку.

Примітка. Для даних змінної довжини використовуються типи даних з приставкою «var». Типи даних без приставки «var» мають фіксовану довжину області пам'яті, невикористана частина якої заповнюється пробілами або нулями.

Ідентифікатори[ред.ред. код]

Ідентифікатори — це спеціальні символи, які використовуються зі змінними для ідентифікування їх типу або для угруповання слів в змінну. Типи ідентифікаторів:

  • @ — ідентифікатор локальної змінної (користувальницької).
  • @@ — ідентифікатор глобальної змінної (вбудованої).
  • # — ідентифікатор локальної таблиці або процедури.
  • ## — ідентифікатор глобальної таблиці або процедури.
  • [] — ідентифікатор угруповання слів в змінну (працюють як стандартні "").

Змінні[ред.ред. код]

Змінні використовуються в сценаріях і для зберігання тимчасових даних. Щоб працювати зі змінною, її потрібно оголосити, при тому оголошення повинно бути здійснено в тій транзакції і пакеті інструкцій, в якій виконується команда, яка використовує цю змінну. Інакше кажучи, після завершення транзакції, а також після команди GO, змінна знищується.

Оператори[ред.ред. код]

Оператори — це спеціальні команди, призначені для виконання простих операцій над змінними: 

  • Арифметичні оператори: «*» — помножити, «/» — ділити, «%» — залишок від ділення, «+» — скласти, «-» — відняти, «()» — дужки.
  • Оператори порівняння: "=" — одно, «>» — більше, «<» — менше, "> =" — більше або дорівнює, "<=" менше або дорівнює, «<>» ("! =") — не одно, between (замість "> =", "<=").
  • Оператори з'єднання: «+» — з'єднання (конкатенація) рядків.
  • Логічні оператори: «AND» — і, «OR» — або, «NOT» — ні.
  • Оператори з множинами: «IN».

Системні функції[ред.ред. код]

  • Специфікація Transact-SQL значно розширює стандартні можливості SQL завдяки вбудованим функціям:
  • Агрегативного функції — функції, які працюють з колекціями значень і видають одне значення. Типові представники: AVG— середнє значення колонки, SUM — сума колонки, MAX — максимальне значення колонки, COUNT — кількість елементів колонки.
  • Скалярні функції— це функції, які повертають одне значення, працюючи зі скалярними даними або взагалі без вхідних даних. Типові представники: DATEDIFF— різниця між датами, ABS— модуль числа, DB_NAME— ім'я бази даних, USER_NAME— ім'я поточного користувача, LEFT— частина рядка зліва.
  • Функції-покажчики— функції, які використовуються як посилання на інші дані. Типові представники: OPENXML— покажчик на джерело даних у вигляді XML-структури, OPENQUERY— покажчик на джерело даних у вигляді іншого запиту.

Примітка. Повний список функцій можна знайти в довідці до SQL сервера.

Примітка. До скалярним функцій можна також віднести і глобальні змінні, які в тексті сценарію викликаються подвійним собакою «@@».

Вирази[ред.ред. код]

Вираз— це комбінація символів і операторів, яка отримує на вхід скалярную величину, а на виході дає іншу величину або виконує якусь дію. У Transact-SQL вирази поділяються на 3 типи: DDL, DCL і DML.

  • DDL (Data Definition Language)— використовуються для створення об'єктів в базі даних. Основні представники даного класу: CREATE— створення об'єктів, ALTER— зміна об'єктів, DROP— видалення об'єктів.
  • DCL (Data Control Language)— використовуються для призначення прав на об'єкти бази даних. Основні представники даного класу: GRANT— дозвіл на об'єкт, DENY— заборона на об'єкт, REVOKE— скасування дозволів і заборон на об'єкт.
  • DML (Data Manipulation Language)— використовуються для запитів і зміни даних. Основні представники даного класу: SELECT— вибірка даних, INSERT— вставка даних, UPDATE— зміна даних, DELETE— видалення даних.

Управління виконанням сценарію[ред.ред. код]

У Transact-SQL існують спеціальні команди, які дозволяють керувати потоком виконання сценарію, перериваючи його або направляючи в потрібну гілку.

  • Блок угруповання - структура, яка об'єднує список виразів в один логічний блок (BEGIN ... END).
  • Блок умови - структура, яка перевіряє виконання певного умови (IF ... ELSE).
  • Блок циклу - структура, що організує повторення виконання логічного блоку (WHILE ... BREAK ... CONTINUE).
  • Перехід - команда, яка виконує перехід потоку виконання сценарію на вказану мітку (GOTO).
  • - команда, що затримує виконання сценарію (WAITFOR).
  • Виклик помилки - команда, яка генерує помилку виконання сценарію (RAISERROR).

Литература[ред.ред. код]

  • Майк Гандерлой, Джозеф Джорден, Дейвид Чанц. Часть II. Язык программирования Transact-SQL // Освоение Microsoft SQL Server 2005 = Mastering Microsoft SQL Server 2005. — М.: «Диалектика», 2007. — С. 139—280. — ISBN 0-7821-4380-6.
  • Роберт Виейра. Глава 3. Основные сведения о языке T-SQL // Программирование баз данных MS SQL Server 2005 для профессионалов = Professional Microsoft SQL Server 2005 Programming. — М.: «Диалектика», 2007. — С. 86-129. — 1072 с. — ISBN 978-5-8459-1329-6.
  • Виталий Бочкарёв. Просто о Transact-SQL (рус.) (25 января 2010). Архивировано из первоисточника на WebCite 15 февраля 2012 года.
  • Microsoft Corporation. Курс MS-2071 "Создание запросов в Microsoft SQL Server 2000 с использованием Transact-SQL" (англ.) (13 октября 2004). Архивировано из первоисточника на WebCite 15 февраля 2012 года.