Справочник по Transact-SQL (ядро СУБД)
В этой статье приведены основы поиска и использования справочных статей Microsoft Transact-SQL (T-SQL). T-SQL является ключом к использованию продуктов и служб Microsoft SQL. Все средства и приложения, которые взаимодействуют с базой данных SQL Server, отправляют команды T-SQL.
Соответствие T-SQL стандарту SQL
Подробные технические документы о реализации определенных стандартов в SQL Server см. в документации по поддержке стандартов Microsoft SQL Server.
Средства, использующие T-SQL
Ниже приведены лишь некоторые средства Майкрософт, использующие команды T-SQL.
- SQL Server Management Studio (SSMS)
- Azure Data Studio
- SQL Server Data Tools (SSDT)
- sqlcmd
Поиск справочных статей Transact-SQL
Чтобы найти статьи T-SQL, используйте поиск в правом верхнем углу этой страницы или используйте оглавление в левой части страницы. Можно также ввести ключевое слово T-SQL в окне редактора запросов среды Management Studio и нажать клавишу F1.
Поиск системных представлений
Чтобы найти системные таблицы, представления, функции и процедуры, см. ссылки в разделе Использование реляционных баз данных в документации по SQL.
- Представления системного каталога
- Представления совместимости системы
- Системные динамические административные представления
- Системные функции
- Системные представления информационной схемы
- Системные хранимые процедуры
- Системные таблицы
Ссылки «Относится к»
Справочные статьи T-SQL охватывают несколько версий SQL Server, начиная с 2008 года и других служб SQL Azure. В верхней части каждой статьи находится раздел, указывающий, какие продукты и услуги поддерживают тему статьи.
Например, эта статья относится ко всем версиям и имеет следующую метку.
Другой пример: следующая метка указывает статью, которая применяется только к Azure Synapse Analytics и Параллельному хранилищу данных.
В некоторых случаях статья используется продуктом или службой, но все аргументы не поддерживаются. В этом случае другие разделы вставляются в соответствующие описания аргументов в тексте статьи.
Получение помощи на странице вопросов и ответов на сайте Майкрософт
Справочники по другим языкам
Документация по SQL включает и другие справочники по языкам.
- Справочник по языку XQuery
- Справочник по языку служб Integration Services
- Справочник по языку репликации
- Справочник по языку служб Analysis Services
Следующие шаги
- Учебник. Составление инструкций Transact-SQL
- Соглашения о синтаксисе Transact-SQL (Transact-SQL)
Начало программирования на Transact-SQL
Transact-SQL (T-SQL) предоставляет надежный язык программирования с функциями, позволяющими временно хранить значения в переменных, применять условное выполнение команд, передавать параметры хранимым процедурам и управлять потоком выполнения программ.
Цели обучения
По завершении этого модуля вы сможете:
- Описание языковых элементов T-SQL, используемых для выполнения простых задач программирования.
- Описание пакетов и их обработки в SQL Server.
- Объявление и назначение переменных и синонимов.
- Использование блоков IF и WHILE для управления потоком выполнения программы.
Предварительные требования
Перед началом прохождения этого модуля необходимо иметь опыт использования запросов SELECT в Transact-SQL для получения данных из таблиц в базе данных.
Введение в MS SQL Server и T-SQL
SQL Server является одной из наиболее популярных систем управления базами данных (СУБД) в мире. Данная СУБД подходит для самых различных проектов: от небольших приложений до больших высоконагруженных проектов.
SQL Server был создан компанией Microsoft. Первая версия вышла в 1987 году. А текущей версией является версия 2022, которая вышла в ноябре 2022 году и которая будет использоваться в текущем руководстве.
SQL Server долгое время был исключительно системой управления базами данных для Windows, однако начиная с версии 16 эта система доступна и на Linux.
SQL Server характеризуется такими особенностями как:
- Производительность. SQL Server работает очень быстро.
- Надежность и безопасность. SQL Server предоставляет шифрование данных.
- Простота. С данной СУБД относительно легко работать и вести администрирование.
Центральным аспектом в MS SQL Server, как и в любой СУБД, является база данных. База данных представляет хранилище данных, организованных определенным способом. Нередко физически база данных представляет файл на жестком диске, хотя такое соответствие необязательно. Для хранения и администрирования баз данных применяются системы управления базами данных (database management system) или СУБД (DBMS). И как раз MS SQL Server является одной из такой СУБД.
Для организации баз данных MS SQL Server использует реляционную модель. Эта модель баз данных была разработана еще в 1970 году Эдгаром Коддом. А на сегодняшний день она фактически является стандартом для организации баз данных.
Реляционная модель предполагает хранение данных в виде таблиц, каждая из которых состоит из строк и столбцов. Каждая строка хранит отдельный объект, а в столбцах размещаются атрибуты этого объекта.
Для идентификации каждой строки в рамках таблицы применяется первичный ключ (primary key). В качестве первичного ключа может выступать один или несколько столбцов. Используя первичный ключ, мы можем ссылаться на определенную строку в таблице. Соответственно две строки не могут иметь один и тот же первичный ключ.
Через ключи одна таблица может быть связана с другой, то есть между двумя таблицами могут быть организованы связи. А сама таблица может быть представлена в виде отношения («relation»).
Для взаимодействия с базой данных применяется язык SQL (Structured Query Language). Клиент (например, внешняя программа) отправляет запрос на языке SQL посредством специального API. СУБД должным образом интерпретирует и выполняет запрос, а затем посылает клиенту результат выполнения.
Изначально язык SQL был разработан в компании IBM для системы баз данных, которая называлась System/R. При этом сам язык назывался SEQUEL (Structured English Query Language). Хотя в итоге ни база данных, ни сам язык не были впоследствии официально опубликованы, по традиции сам термин SQL нередко произносят как «сиквел».
В 1979 году компания Relational Software Inc. разработала первую систему управления баз данных, которая называлась Oracle и которая использовала язык SQL. В связи с успехом данного продукта компания была переименована в Oracle.
Впоследствии стали появляться другие системы баз данных, которые использовали SQL. В итоге в 1989 году Американский Национальный Институт Стандартов (ANSI) кодифицировал язык и опубликовал его первый стандарт. После этого стандарт периодически обновлялся и дополнялся. Последнее его обновление состоялось в 2011 году. Но несмотря на наличие стандарта нередко производители СУБД используют свои собственные реализации языка SQL, которые немного отличаются друг от друга.
Выделяются две разновидности языка SQL: PL-SQL и T-SQL. PL-SQL используется в таких СУБД как Oracle и MySQL. T-SQL (Transact-SQL) применяется в SQL Server. Собственно поэтому в рамках текущего руководства будет рассматриваться именно T-SQL.
В зависимости от задачи, которую выполняет команда T-SQL, он может принадлежать к одному из следующих типов:
- DDL (Data Definition Language / Язык определения данных). К этому типу относятся различные команды, которые создают базу данных, таблицы, индексы, хранимые процедуры и т.д. В общем определяют данные. В частности, к этому типу мы можем отнести следующие команды:
- CREATE : создает объекты базы данных (саму базу даных, таблицы, индексы и т.д.)
- ALTER : изменяет объекты базы данных
- DROP : удаляет объекты базы данных
- TRUNCATE : удаляет все данные из таблиц
- SELECT : извлекает данные из БД
- UPDATE : обновляет данные
- INSERT : добавляет новые данные
- DELETE : удаляет данные
- GRANT : предоставляет права для доступа к данным
- REVOKE : отзывает права на доступ к данным
Разница между SQL и T-SQL
SQL (structured query language) — известнейший декларативный язык программирования, используемый при создании, модификации и управлении данными в реляционных БД. T-SQL — это расширенная версия SQL, и ее особенность заключается в том, что она предназначена для работы с сервером от Microsoft. Речь идет о базе данных MS SQL — Microsoft SQL Server. Вдобавок к этому, процедурное расширение с именем T-SQL характеризуется совместимостью с БД компании Sybase (Sybase ASE, Adaptive Server Enterprise).
Но прежде чем продолжить, вспомним некоторые основы.
Теоретическое отступление
База данных представляет собой структуру, где данные имеют связи между собой. Для управления такими данными используют специализированное программное обеспечение — СУБД (системы управления базами данных). Когда говорят о базах реляционного типа (RDBMS), то подразумевают, что данные и связи между данными организованы с помощью таблиц. Кроме непосредственных данных, в таких таблицах есть идентификаторы (id), а также первичные и вторичные ключи, которые имеют связи с идентификаторами.
Работа СУБД предполагает выполнение определенных операций (создание, удаление, обновление и т. п.). Чтобы выполнение этих операций стало возможным, разработчики БД используют язык структурированных запросов SQL. Это язык стандарта ANSI/ISO, помогающий хранить данные и манипулировать ими в рамках какой-нибудь СУБД (MySQL, MSSQL, Oracle Database, IBM DB2 и пр.).
Таким образом, SQL — стандартный язык запросов к реляционным базам данных.
Выделяют 3 вида SQL-команд:
- DDL (Data Definition Language). Команды для изменения структуры БД и связанных объектов: ALTER, CREATE, DROP.
- DML (Data Manipulation Language). Для управления данными (для вставки, просмотра и выборки, обновления, удаления и пр.): INSERT, SELECT, UPDATE, DELETE.
- DCL (Data Control Language). Для управления пользователями: GRANT, REVOKE.
Несколько слов про TSQL
В указанных выше пояснениях определили, что SQL — это язык запросов для большинства RDBMS-продуктов. Да, совместимость (compatibility) — это хорошо, но совместимости много не бывает. Именно поэтому некоторые поставщики СУБД создали собственные аналоги языков структурированных запросов (languages), а если быть точнее — расширили имеющееся решение, но уже с учетом потребностей своего продукта. Как раз таким аналогом и является процедурное расширение Transact Structure Query Language (TSQL). Это не что иное, как специализированная версия, заточенная под MS SQL Server (2012, 2016 и пр., версия неважна).
Используя TSQL-операторы, разработчик может писать запросы и выполнять нужные операции над таблицами, объединять их, добавлять ограничения, писать хранимые процедуры и индексы, осуществлять транзакции и многое другое. Язык TSQL поддерживает разные полезные функции, многие из которых присутствуют и в версии-первоисточнике. К примеру, агрегатные функции, которые выполняют вычисления на наборе значений. Либо оконные функции и инструкцию OVER (OVER определяет окно для использования оконной функции). Оконные функции не меняют выборку, как GROUP BY, а лишь добавляют дополнительную информацию о ней. Если же вспомнить JOIN, то, несмотря на одинаковую производительность конструкций JOIN и OVER, последняя предоставляет больше свободы, чем жесткий JOIN.
Как бы там не было, есть и отличия, так как в TSQL добавили:
— поддержку аутентификации Microsoft Windows;
— глобальные и локальные переменные;
— дополнительные функции, предназначенные для обработки дат, строк и пр.
Тезисно о разнице
Для закрепления материала смотрите таблицу ниже, где собраны основные тезисы.
SQL TSQL Специфичный для предметной области язык, используется для управления данными в СУБД. Запатентованная версия SQL от Microsoft, созданная специально для СУБД MS SQL Server в качестве аналога. Язык структурированных запросов (queries). Transact-язык структурированных запросов. Разработан IBM. Разработан Microsoft. Можно встраивать SQL в TSQL. TSQL в SQL встраивать нельзя. Помогает обрабатывать и анализировать данные посредством простых запросов. Помогает добавлять бизнес-логику в приложения. Очень надеемся, что после прочтения статьи вы четко уясните разницу между этими двумя аббревиатурами. Если же хотите получить действительно продвинутые знания, связанные с управлением БД, добро пожаловать на специализированный курс OTUS!