КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Выражения и предикаты в SQL.
Итак, в рамках поставленной задачи нам необходимо и достаточно знания лишь "классического набора” выражений SQL, а именно - арифметических выражений и предикатов следующего вида:
а) Сравнения
Аргумент1 Знак_сравнения Аргумент2
где знак сравнения - один из символов отношений = (равенство), <>, !=, # (неравенство) и >, >=,<,<=, а также, для символьных строк, == (точное равенство) и [NOT] LIKE (сравнение по маске),
Заметьте, что, если для числовых типов и типа "дата" такие сравнения имеют обычный смысл, то для символьных строк имеется ввиду лексикографическое (словарное) сравнение.
Предикат сравнения по маске имеет вид
Аргумент [NOT] LIKE Маска
где Маска - произвольная символьная строка, (возможно) содержащая специальные символы кратной замены % и одиночной замены _. Предикат [NOT] LIKE считается истинным, если маску можно превратить в стоящий слева аргумент подстановкой некоторых слов вместо символа % и одиночных символов - вместо символов _.
б) Булевские формулы, как обычно, образуются с помощью операций конъюнкции AND, дизъюнкции OR и отрицания NOT
в) "Синтаксический сахар" - группа предикатов, выразимых через булевские комбинации сравнений, но более кратких и привычных по форме (особенно, для англоязычного пользователя)
Аргумент1 [NOT] BETWEEN Аргумент2 AND Аргумент3 - краткая форма записи предиката [NOT] (Аргумент2 £Аргумент1 AND Аргумент1£Аргумент3)
Аргумент [NOT] IN (список_значений) - краткая форма записи предиката [NOT] (Аргумент=Аргумент1 OR Аргумент£Аргумент2 OR … Аргумент=АргументN)
г) Предикаты, использующие выборку образуют самый мощный - и самый сложный в освоении аппарат программирования SQL. Мы вернемся к ним в разделе «Вложенные подзапросы».
Имя_поля Знак_сравнения ALL (команда SELECT)
истинно, если сравнение выполняется для стоящего слева значения поля и всех значений, выбранных командой SELECT; при этом предполагается, что последняя выдает список значений - формально, таблицу с единственным полем, совместимым по типу со значением поля, стоящим слева. Условие считается истинным также, если подвыборка пуста.
Имя_поля Знак_сравнения ANY | SOME (команда SELECT)
истинно, если сравнение выполняется для стоящего слева значения поля и хотя бы одного из значений, выбранных командой SELECT - снова предполагается, что последняя выдает список значений, совместимых по типу со значением поля. Если подвыборка пуста, условие считается ложным.
[NOT] EXISTS (команда_SELECT)
истинно, если подвыборка (не) пуста, т.е. (не) содержит по крайней мере одну строку.
Имя_поля [NOT] IN (команда_SELECT)
имеет тот же смысл, что и одноименный предикат IN, рассмотренный выше, с той лишь разницей, что список значений не задается явно, но является результатом подвыборки; истинен, если значение поля совпадает хотя бы с одним значением из (единственного поля) результата выборки.
|