Эти таблицы читаются способом на подобии таблицы умножения: вы объединяете верные, неверные, или неизвестные значения из строк с их столбцами чтобы на перекрестье получить результат. В таблице AND, например, третий столбец (Неизвестно) и первая строка (Верно) на пересечении в верхнем правом углу дают результат - неизвестно, другими словами: Верно AND Неизвестно = неизвестно.
Порядок вычислений определяется круглыми скобками. Они не представляются каждый раз. NOT оценивается первым, далее AND и OR. Различные типы предикатов<predicate> рассматриваются отдельно в следующем разделе.
Если либо <value expression> = NULL, либо <comparison predicate > = неизвестно; другими словами, это верно если сравнение верно или неверно если сравнение неверно. <relational op> имеет стандартные математические значения для числовых значений; для других типов значений, эти значения определяются конкретной реализацией. Оба <value expression> должны иметь сравнимые типы данных. Если подзапрос<subquery> используется, он должен содержать одно выражение <value expression> в предложении SELECT, чье значение будет заменять второе выражение <value expression> в предикате сравнения<comparision predicate>, каждый раз когда <subquery > действительно выполняется.
<between predicate>
Синтаксис
< value expression > [NOT] BETWEEN < value expression >
AND < value expression >
< between predicate > - A BETWEEN B AND C , имеет такое же значение что и <predicate > - ( A >= B AND <= C). <between predicate> для которого A NOT BETWEEN B AND C, имеет такое же значение что и NOT ( BETWEEN B AND C). <value expression> может быть выведено с помощью нестандартного запроса <subquery> ( *nonstandard* ).
< in prediicate >
Синтаксис
<value expression> [NOT] IN <value list> | <subquery>
Список значений<value list> будет состоять из одного или более перечисленых значений в круглых скобках и отделяемых запятыми, которые имеют сравнимый с <value expression> тип данных. Если используется подзапрос<subquery>, он должен содержать только одно выражение <value expression> в предложении SELECT ( возможно и больше, но это уже будет вне стандарта ANSI ). Подзапрос<subquery > фактически, выполняется отдельно для каждой строки-кандидата основного запроса, и значения которые он выведет, будут составлять список значений<value list> для этой строки. В любом случае, предикат<in predicate> будет верен если выражение<value expression> представленное в списке значений<value list>, если не указан NOT. Фраза A NOT IN (B, C) является эквивалентом фразы NOT (A IN (B, C)).
< like predicate >
Синтаксис
<charvalue> [NOT] LIKE <pattern> [ESCAPE
<escapechar>]
<charvalue > - это любое *нестандартное* выражение <value expression> алфавитно-цифрового типа. <charvalue > может быть, в сооветствии со стандартом, только определенным столбцом<column spec>. Образец<pattern> состоит из строки<string> которая будет проверена на совпадение с <charvalue>. Символ окончания<escapechar > - это одиночный алфавитно-цифровой символ. Совпадение произойдет, если верны следующие условия :
* Для каждого символа подчеркивания<underscore > в образце<pattern > кото рая не предшесивует
символу окончания<escapechar>, имеется один соответствующий ему символ <charvalue>.
* Для каждого < percent sign> в образце<pattern> который не предшест-
вует <escapechar>, имеются нули или более соответствующие символы
в <charvalue>.
* Для каждого <escapechar > в <pattern > который не предшествует друго-
му <escapechar>, нет никакого соответствующего символа в <charvalue>.
* Для каждого иного символа в <pattern>, один и тот же символ устанавли-
вается у соответствующей отметке в <charvalue>.
Если совпадение произошло, <like predicate > - верен, если не был указан NOT. Фраза NOT LIKE 'текст' - эквивалентна NOT ( A LIKE 'текст').
< null predicate >
Синтаксис
<column spec> IS [NOT] NULL
<column spec> = IS NULL, если NULL значение представлено в этом столбце. Это сделает <null predicate > верным если не указан NULL. Фраза <column spec> IS NOT NULL, имеет тот же результат что и NOT ( <column spec > IS NULL ).
< quantified predicate >
Синтаксис
<value expression> <relational op>
<quantifier> <subquery>
<quantifier> :: = ANY | ALL | SOME
Предложение SELECT подзапроса<subquery > должно содержать одно и только одно выражение значения<value expression>. Все значения выведенные подзапросом<subquery > составляют набор результатов<result set>. <value expression> сравнивается, используя оператор связи<relational operator>, с каждым членом набора результатов<result set>.
Это сравнение оценивается следующим образом:
· Если <quantifier> = ALL, и каждый член набора результатов<result set> делает это сравнение верным, <quantified predicate > - верен.
* Если <quantifier> = ANY, и имеется по крайней мере один член из набора результатов<result set> , который делает верным это сравнение, то <quantified predicate > является верным.
* Если набор результатов<result set> пуст, то <quantified predicate> верен, если <quantifier> = ALL , и неверен если иначе.
* Если <quantifier> = SOME, эффект - тот же что и для ANY.
* Если <quantified predicate> не верен и не неверен, он - неизвестен.
<exists predicate>
Синтаксис:
EXISTS (<subquery>)
Если подзапрос<subquery> выводит одну или более строк вывода, <exists predicate> - верен; и неверен если иначе.
=============== SQL КОМАНДЫ ================
Этот раздел подробно описывает синтаксис различных команд SQL. Это даст вам возможность быстро отыскивать команду, находить ее синтаксис и краткое описание ее работы.
ИМЕЙТЕ ВВИДУ Команды которые начинаются словами - EXEC SQL, а также команды или предложения заканчивающиеся словом - <SQL term> могут использоваться только во вложенном SQL.