Язык реляционных баз данных Transact-SQL (T-SQL). История развития. Идентификаторы в T-SQL.

Язык SQL был разработан в 70-х годах прошлого века корпорацией IBM как язык управления реляционными базами данных. До него и после него были попытки создания альтернативных языков, но стандартом стал именно SQL. Практически все производители промышленных СУБД используют и развивают в своих программных продуктах ту или иную модификацию SQL. С 70-х годов было разработано много версий языка часто несовместимых друг с другом. В результате в 1992 г. Американским институтом стандарта был разработан стандарт SQL92 описывающий поведение SQL ориентированных серверов баз данных и регламентирующий основные правила работы с ними. Целью разработки этого стандарта было уменьшение несовместимости различных версий языка SQL. Однако несмотря на все усилия и попытки добиться единого стандарта каждый из производителей использует и развивает свою модификацию SQL.

Идентификаторы

Все объекты MS SQL сервер имеют свои собственные имена, с помощью которых можно ссылаться на них.

Имена объектов называются идентификаторами. Transact SQL налагает ряд ограничений наименований объектов:

Первый символ имени объекта должен быть одним из символов латинского или национального алфавита, либо символом подчеркивания. Для обозначения объектов сервер разрешает использование символов @, # для именования временных таблиц и хранимых процедур. Временные объекты существуют только в течении сеанса или транзакции, а за тем уничтожаются. Для обозначения глобальных временных объектов, к которым могут обращаться все пользователиTransact SQL позволяет использовать символы @@, ##. Некоторые функции и переменные начинаются с символа @@.

Основная часть идентификатора может включать любые символы, десятичные цифры, подчеркивание, решетки и т. д.

При выборе имени следует убедиться, что оно не является зарезервированным словом, и что не существует объект с таким именем. Transact SQL не различает регистров.

Запрещено использование внутри имени пробелов, круглых скобок и спец. символов.

Длина имени объекта не должна превышать 128 символов. Исключения составляют имена временных таблиц, длина имени которых не должна превышать 116 символов.

 

 

Язык T-SQL. Выражения.

Выражения SQL сервер представляют собой комбинацию идентификаторов, функций, логических и арифметических операций, констант и других объектов.

Выражение может быть использовано в качестве аргумента в командах, хранимым процедурах или запросах. Выражение состоит из операндов и операторов.

Операнды SQL сервер делится на следующие типы:

1. Константы - постоянные величины, значения которых не могут быть изменены.

2. Функции – именованные программы, выполняющие обработку данных и в некотором случае возвращающие определенный результат.

3. Имя колонки - в качестве операнда может выступать колонка таблицы. Это часто используется при обработке данных таблицы, удовлетворяющих определенному критерию.

4. Переменная - именованная область памяти определенного объема, в которой хранятся данные.

5. Подзапрос - в качестве выражения можно указать подзапрос, который подготавливает соответствующий набор данных.

Выполняемые действия задаются с помощью операторов, которые делятся на типы:

1. простейшие (унарные) операторы работают только с одним операндом.

2. оператор присваивания. В SQL-сервер единственным оператором присваивания является знак равенства.

3. арифметические операции - это бинарные операции, выполняемые с операндами, имеющими числовой тип данных. К ним относят *, /, +, -, %.

4. строковые - единственная операция - конкатенация (сложение). Для обозначения используется знак +.

5. сравнение.

Операторы сравнения могут дать информацию о сравнительной величине операндов. Допускается использование следующих логических операндов: =, >, <, <=, >=,!= или <>, не менее чем !<, не более чем !>. Если сравнение невозможно, то возвращается неопределенное значение NULL.

6. логические операторы.

Операторы этого типа возвращают значения TRUE или FALSE и могут быть использованы в различных конструкциях, включая запросы.

В T-SQL есть следующие операторы:

ALL - выполняет сравнение для набора данных.

AND - оперирует с двумя булевыми выражениями.

ANY, SOME - выполняет сравнение для набора данных.

BETWEEN - проверяет, лежит ли значение в указанном диапазоне.

EXIST – возвращает TRUE, если подзапрос возвращает хотя бы одну строку.

IN - возвращает TRUE, если значение входит в указанный список.

LIKE - проверяет значение на «похожесть» по указанному шаблону.

NOT - инвертирует значение булева типа.

OR - возвращает TRUE, если хотя бы один из двух операндов равен TRUE.