3 Имя колонки.В качестве операнда может выступать колонка таблицы. Это часто используется при обработке данных в таблице, удовлетворяющих определённому критерию. Пользователь указывает в выражении имя интересующей его колонки, а сервер будет автоматически подставлять соответствующие значения. При последовательном просмотре таблицы значение будет изменяться.
4 Переменная.Это именованная область памяти определённого объёма, в которой хранятся данные. Физически любая переменная есть последовательность из одного или нескольких байт. То, как сервер будет обрабатывать последовательность, представляющую значение переменной, зависит от типа данных, ассоциированного с этой переменной.
5 Подзапрос.В качестве выражения можно указать подзапрос, который подготовит соответствующий набор данных. По принципу работы это эквивалентно указанию колонки таблицы, только в случае подзапроса данные не нужно явно «закачивать» в таблицу. Сервер сам сделает всю работу: создаст временную таблицу с необходимой структурой, скопирует в неё выбранные данные и подключит полученный набор данных в качестве выражения.
6 Конструкции CASE, NULLIFи COALESCE. Эти конструкции позволяют использовать логическое условие для определения возвращаемого результата. Конструкция CASEможет быть представлена в виде громоздкого набора последовательных логических условия
Логические операторы предоставляют большие возможность по управлению данными и широко используется при написании запросов и фрагментов программ.
Оператор ALL
Expr {=|<>|!=|>|>=|!>|<|<=|!<} ALL (subquery)
С помощью оператора ALLвыполняется сравнение скалярного выражения со всеми значениями, возвращаемыми подзапросом. Скалярная величина сравнивается с каждым значением, возвращаемым подзапросом. Если логическое условие выполняется для всех возвращаемых подзапросом значений, только тогда всё условие считается выполненным.
Операторы SOME и ANY
Scalar_ expression {=|<>|! = |>|>= | !>|<|<=| !<} SOME (subquery)
Scalar_ expression {=|<>|! = |>|>= | !>|<|<=| !<} ANY (subquery)
С помощью этих операторов можно сравнить скалярную величину со всеми значениями в колонке таблицы. Разницы между использованием операторов ANYи SOMEнет. Если хотя бы в одной строке содержится значение, равное скалярной величине, то условие выполняется.
Оператор BETWEEN
Test_ expression [NOT] BETWEEN begin_ expression AND end_ expression
С помощью этого оператора можно получить ответ на вопрос, лежит ли величина в указанном диапазоне. Исходная величина задаётся аргументом test_ expression. Аргумент begin_ expressionзадаёт начало диапазона, а аргумент end_ expression – конец диапазона. Оператор BETWEENможно без труда представить в виде двух операций сравнения:
Test_ expression>=begin_ expression AND test_ expression<=end_ expression
Оператор EXISTS
EXSISTS (sudquery)
Этот оператор возвращает значение TRUE, если указанный подзапрос возвращает хотя бы одну строку. В противном случае возвращает значение FALSE.
ОператорIN
Test_ expression [NOT] IN
(subquery | expression [….n])
С помощью этого оператора можно проверить, соответствует ли выражение test_expressionодному из перечисленных выражений или значений, возвращаемых подзапросом. ПриработеоператорIN можнозаменитьоператором«=ANY».
Оператор LIKE
Match_ expression [NOT] LIKE pattern [ESCAPE escape_ character]
С помощью этого оператора можно выполнять сравнение выражения с заданным шаблоном. Пусть, например, вам нужно найти в базе данных всех авторов, номера телефонов которых начинаются на 415. Можно, конечно, сделать это с помощью обычных операций сравнения, вырезая первые три символа и сравнивая их с «415».
Поиск можно легко выполнить с помощью оператора LIKE, в котором допускается использование символов-заменителей. Аргумент match_ expressionзадаёт исходное выражение, для которого необходимо выполнить проверку. Шаблон для сравнения задаётся с помощью аргумента pattern. Символы заменители: «%», «_», «[]», «[^]». Операнд LIKEпозволяет использовать специальный управляющий символ, задаваемый с помощью аргумента escape_ character, который предписывает воспринимать следующий за ним символ, как обычный.
3.3 Логические операторы, инструкции языка определения
Выражения в Transact-SQLпредставляют собой комбинацию идентификаторов, функций, логических и арифметических операций, констант и других объектов. Выражение может быть использовано в качестве аргумента в командах, хранимых процедурах или запросах.
Выражение состоит из операндов (собственно данные) и операторов (действия, производимые над операндами). Операнды Transact-SQLделятся на следующие типы:
7 Константы.Это постоянные величины, значения которых не могут быть никаким образом изменены. Примеры: 7, 13.64, ‘TextPtr’.
8 Функции. Это изменённые программы, выполняющие обработку данных и возвращающие определённый результат. Функции могут иметь входные параметры или просто возвращать значение.
9 Имя колонки.В качестве операнда может выступать колонка таблицы. Это часто используется при обработке данных в таблице, удовлетворяющих определённому критерию. Пользователь указывает в выражении имя интересующей его колонки, а сервер будет автоматически подставлять соответствующие значения. При последовательном просмотре таблицы значение будет изменяться.
10 Переменная.Это именованная область памяти определённого объёма, в которой хранятся данные. Физически любая переменная есть последовательность из одного или нескольких байт. То, как сервер будет обрабатывать последовательность, представляющую значение переменной, зависит от типа данных, ассоциированного с этой переменной.
11 Подзапрос.В качестве выражения можно указать подзапрос, который подготовит соответствующий набор данных. По принципу работы это эквивалентно указанию колонки таблицы, только в случае подзапроса данные не нужно явно «закачивать» в таблицу. Сервер сам сделает всю работу: создаст временную таблицу с необходимой структурой, скопирует в неё выбранные данные и подключит полученный набор данных в качестве выражения.
12 Конструкции CASE, NULLIFи COALESCE. Эти конструкции позволяют использовать логическое условие для определения возвращаемого результата. Конструкция CASEможет быть представлена в виде громоздкого набора последовательных логических условия
Логические операторы предоставляют большие возможность по управлению данными и широко используется при написании запросов и фрагментов программ.
Оператор ALL
Expr {=|<>|!=|>|>=|!>|<|<=|!<} ALL (subquery)
С помощью оператора ALLвыполняется сравнение скалярного выражения со всеми значениями, возвращаемыми подзапросом. Скалярная величина сравнивается с каждым значением, возвращаемым подзапросом. Если логическое условие выполняется для всех возвращаемых подзапросом значений, только тогда всё условие считается выполненным.
Операторы SOME и ANY
Scalar_ expression {=|<>|! = |>|>= | !>|<|<=| !<} SOME (subquery)
Scalar_ expression {=|<>|! = |>|>= | !>|<|<=| !<} ANY (subquery)
С помощью этих операторов можно сравнить скалярную величину со всеми значениями в колонке таблицы. Разницы между использованием операторов ANYи SOMEнет. Если хотя бы в одной строке содержится значение, равное скалярной величине, то условие выполняется.
Оператор BETWEEN
Test_ expression [NOT] BETWEEN begin_ expression AND end_ expression
С помощью этого оператора можно получить ответ на вопрос, лежит ли величина в указанном диапазоне. Исходная величина задаётся аргументом test_ expression. Аргумент begin_ expressionзадаёт начало диапазона, а аргумент end_ expression – конец диапазона. Оператор BETWEENможно без труда представить в виде двух операций сравнения:
Test_ expression>=begin_ expression AND test_ expression<=end_ expression
Оператор EXISTS
EXSISTS (sudquery)
Этот оператор возвращает значение TRUE, если указанный подзапрос возвращает хотя бы одну строку. В противном случае возвращает значение FALSE.
ОператорIN
Test_ expression [NOT] IN
(subquery | expression [….n])
С помощью этого оператора можно проверить, соответствует ли выражение test_expressionодному из перечисленных выражений или значений, возвращаемых подзапросом. ПриработеоператорIN можнозаменитьоператором«=ANY».
Оператор LIKE
Match_ expression [NOT] LIKE pattern [ESCAPE escape_ character]
С помощью этого оператора можно выполнять сравнение выражения с заданным шаблоном. Пусть, например, вам нужно найти в базе данных всех авторов, номера телефонов которых начинаются на 415. Можно, конечно, сделать это с помощью обычных операций сравнения, вырезая первые три символа и сравнивая их с «415».
Поиск можно легко выполнить с помощью оператора LIKE, в котором допускается использование символов-заменителей. Аргумент match_ expressionзадаёт исходное выражение, для которого необходимо выполнить проверку. Шаблон для сравнения задаётся с помощью аргумента pattern. Символы заменители: «%», «_», «[]», «[^]». Операнд LIKEпозволяет использовать специальный управляющий символ, задаваемый с помощью аргумента escape_ character, который предписывает воспринимать следующий за ним символ, как обычный.
Transact-SQL, на сегодняшний день, является самым распространенным инструментом в разработке баз данных. Освоивший его человек может создавать базы данных и их объекты, предоставлять пользователям доступ к серверу, базам данных и их объектам, создавать различные объекты баз данных, манипулировать данными, оптимизировать работу сервера и многое другое.
Типы данных определяют представление колонок таблиц, параметров процедур и переменных. В SQL Server помимо предопределенных системах типов данных можно создавать и пользовательские типы, основывающиеся на системных. Более подробно о создании пользовательских типов данных можно ознакомиться в разделе, посвященном хранимой процедуре sp_addtype. В SQL Server все типы данных регистонезависимые, в силу чего недопустимо использование различных пользовательских типов данных, отличающихся только регистром.
Для имен объектов необязательно быть уникальными в базе данных, например, имена колонок и индексов должны быть уникальными только в пределах таблицы или представления (view), все же имена других объектов должны быть уникальными в пределах базы данных для каждого владельца. Любую колонку или таблицу можно уникально идентифицировать следующим составным именем - имя базы данных, имя владельца, имя таблицы или представления. Промежуточные значения - имя владельца может быть опущено, если это не приводит к конфликтам имен. В случае удаленных хранимых процедур ее имя задается следующим образом: server.database.owner.procedure