Язык 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.