Материал: Graber_Martin_-_SQL_dlya_prostykh_smertnykh_-_2014

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Приложение D. Справка по синтаксису и командам

 

Замечание: В <строке> две следующие непосредст­

 

венно друг за другом одиночные кавычки

 

интерпретируются как одна.

<терм SQL> (* только

ограничитель предложения, зависящий от вк.1ючаю­

для расширенного*)

щего языка.

Функциональные элементы

В следующей таблице даны функциональные элементы команд SQL и их определе­

ния:

Элемент

Определение

<запрос>

Предложение SELECT

<подзапрос>

Заключенное в круглые скобки предложение

 

SELECT, расположенное внутри другого

 

предложения, которое, в действительности,

 

оценивается отдельно для каждой строки­

 

кандидата на включение в результат

 

в соответствии с внешним предложением.

<выражение, содержащее

<первичный>

значения>

l<первичный><оператор><первичный>

 

l<первичный><оператор><выражение,

 

содержащее значения>

<оператор>

один из следующих: + - / *

<первичный>

<имя столбца>

 

1 <литерал>

 

1 <функция агрегирования>

 

1 <встроенная константа>

 

1 <нестандартная функция>

<.литерал>

<строка> 1 <лютематическое выраже11ие>

<встроенная константа>

USER 1 <констаюпа, зависящая от

 

реализации>

<имя таблицы>

<идентификатор>

<спецификатор столбца>

[<и.~tя таблицы> 1 <алиас>.]<имя столбца>

<гру11110вой столбец>

<спецификатор столбца> 1 <целое>

<упорядоченный столбец>

<спецификатор столбца> 1 <целое>

Элемент

Определение

340

Элементы SQL

<ограничения на столбец>

NOT NULL 1 UNIQUE

 

1 СНЕСК (<предикат>)

 

1 PRIMARY КЕУ

 

1 REFERENCES <илlЯ таблицы> [( <илzя столбца>)]

<ограничения на таблицу>

UNIQUE (<список столбцов>)

 

1 СНЕСК (<предикат>)

 

1 PRIMARY КЕУ (<список столбцов>)

 

1 FOREIGN КЕУ (<список столбцов>)

 

REFERENCES <иАm таблицы> [(<список

 

столбцов>)]

<.:значение по умолчанию>

DEFAULT VALUE = <выра:жение,

 

содер:жащее значения>

<тип данных>

Допустимый тип (см. приложение В, где пере­

 

числены типы, поддерживаемые ANSI, либо

 

приложение С, в котором указаны наиболее

 

общие типы).

<раз.мер>

Значение, зависящее от типа данных

 

(см. приложение В).

<имя курсора>

<идентификатор>

<и.~1я индекса>

<идентификатор>

<синоним>

<идентификатор>(*нестандартный*)

<маделец>

<идентификатор для проверки nолно.мочий>

<список столбцов>

<спецификатор столбца>.,..

<список значений>

<выра.жение, содер:жащее значения>.,..

<ссылка на таблицу>

{<илт таблицы>[<алиас>] }.,..

Предикаты

Следующее определение понятия <предикат> содержит список различных типов, которые будут объяснены далее:

<предикат> :: = [NOT]

{ <предикат сравнения>

1 <в предикате>

1 <NULL-предикат>

1 <предикат "между">

341

(unknown) и первая строка (true) на пересечении дают значение резуль­

Приложение D. Справка по синтаксису и командам

1 <предикат "как">

1 <составной предикат>

1 <предикат существования>

[AND 1 OR <предикат>]

<Предикат> - это выражение, которое может быть истинным, ложным или неопре­ деленным, исключение составляют <предикат существования> и <NИLL-предикат>, которые могут быть только либо истинными, либо ложными. Результат получается не­

определенным, если NULL-значения препятствуют получению определенного ответа.

Такой результат получается, например, в том случае, если NULL-значение сравнивается

с конкретным значением. Стандартные булевы операторы - AND, OR и NOT -

могуr

использоваться с <предикатом>. NOT true (истина) - false, NOT false (ложь) -

true,

NOT unknown (неизвестно)- unknown.

 

 

 

 

AND

 

 

AND

true

false

unknown

 

true

true

false

unkno,vn

 

false

false

false

false

 

unknown

unknown

false

unknown

 

 

 

OR

 

 

OR

true

false

unknown

 

true

true

true

true

 

false

true

false

unknown

 

unknown

true

unknown

unknown

 

Эти таблицы читаются так, как таблицы умножения: значение соответствующего булева оператора стоит на пересечении строки и столбца. В таблице AND, например, третий столбец

тата (unknown).

Старшинство операций определяется скобками. При отсутствии скобок NOT имеет более высокий приоритет, за ним следуют AND и OR с одинаковым приоритетом. Раз­ личные типы <предикатов> рассмотрены по отдельности в следующих разделах.

<Предикат сравнения>

Синтаксис:

<Выражение, содержащее значения> <оператор сравнения> <выражение, содержащее значения> 1 <подзапрос>

<оператор сравнения>

<

>

342

Элементы SQL

<

>=

<>

Если какое-либо из <выра:жений, содер:жащих значения> равно NULL, то <11реди­ кат сравнения> имеет значение unknown. Если результат сравнения истинен, то пре­ дикат сравнения также истинен. Если результат сравнения ложен, то ложен и предикат сравнения. <О11ератор сравнения> имеет стандартное математическое значение для числовых значений; для значений других типов результат определяется реализацией. Два <выра:жения, содер:жащих значения>, должны быть совместимы по типам дан­ ных. Если используется <11одза11рос>, то он должен включать единственное выраже­ ние, содержащее значения в предложении SELECT, значение которого будет замещено вторым <выра:жениел1, содер:жащим значе11ия> в <11редикате сравнения> всякий раз, когда <11одза11рос> результативно выполняется.

<Предикат "между">

Синтаксис:

<Выражение, содержащее значения> [NOT] BEТWEEN <выражение,

содержащее значения> AND <выражение, содержащее значения>

Предикат "между" А BETWEEN В AND С имеет то же значение, что и предикат (А>=В AND А<=С). Предикат "между" А NOT BEТ\VEEN В AND С имеет то же зна­ чение, что и предикат NOT (А BETWEEN В AND С). <Выражение, содер:жащее зна­ чение> можно получить, используя <11одза11рос> (*нестандартный*).

<Предикат "в">

Синтаксис:

<выражение, содержащее значения> [NOT] IN <список значений> 1

<подзапрос>

<С11исок значений> состоит из множества значений, заключенных в круглые скоб­ ки и разделенных запятыми. Если используется <11одза11рос>, он должен содержать только одно <выра:жение, содер:жащее значения> в предложении SELECT (может быть и больше, но это не соответствует стандарту). <Подза11рос> выполняется от­ дельно для каждой строки-кандидата из основного запроса. Значения, полученные в результате, образуют <с11исок значений> для строки. В любом случае <11редикат "в"> истинен, если <выра:жение, содер:жащее значения> представлено в <с11иске значе­ ний> , если только не указан NOT. А NOT IN (В,С) эквивалентно NOT (А IN (В,С)).

<Предикат "как">

Синтаксис:

<Строковое значение> [NOT] LIKE <образец> [ESCAPE <символ начала

управляющей последовательности>]

343

Приложение D. Справка 110 синтаксису и комаидом

<Строковое значение> - это любое <выражение. содержащее значения> алфавитно-цифрового типа (* не соответствует стандарту *). В соответствии со стан­ дартом, <строковое значение> должно содержать только <спецификацию столбца>. <Образец> состоит из строки, относительно которой проверяется, входит ли она в <строковое значение>. <Сю1вол начала управляющей последовательности> - это единственный алфавитно-цифровой символ.

Результат сравнения положителен, если выполняются следующие условия:

•Для каждого <си.чвола подчеркивания> в <образце>, который непосредственно не предшествует <сил1волу начала управляющей последовательности>, сущест­ вует один соответствующий символ в <строковом з11аче11ии>.

•Для каждого <си.~1во.1а проце11та> в <образце>, который непосредственно не предшествует <сю1волу начала управляющей последовательности>, существу­ ет ноль или более соответствующих символов в <строково.~t з11аче11ии>.

•Для каждого <сю1вола нача.1а управляющей последовате.,1ь11ости> в <образце>,

который непосредственно не предшествует другому <сил1волу 11ачала управляю­ щей последователь11ости>, нет соответствующего символа в <строково.~t зна­

чении>.

•Для любого другого символа в <образце>, представлен точно такой же символ

в соответствующей позиции <строкового значения>.

Если результат сравнения положителен, <предикат "как"> принимает значение "истина", если только не указано NOT.

Предикат "как" А NOT LIКE 'text' эквивалентен NOT (А LIKE 'text').

<NULL-предикаТ>

Синтаксис:

<Спецификатор столбца>

IS [NOT] NULL

Предикат <спецификатор столбца> IS NULL принимает значение "истина", если значение NULL представлено в указанном столбце. Предикат <спецификатор столб­ ца> IS NOT NULL дает тот же результат, что и предикат NОТ(<спецификатор столб­

ца> IS NULL).

<Составной предикат>

Синтаксис:

<Выражение, содержащее значения> <оператор отношения>

<квантор><подзапрос>

<квантор>:: = ANY 1 ALLI SOME

Предложение SELECT <подзапроса> должно включать одно и только одно <выра­ жение, содержащее значения>. Все значения, полученные на основании <подзапро­ са> составляют <дтожество результата>. <Выражение, содержащее значения>

сравнивается с использованием <оператора отнои1ения> для каждого члена из <мно­

жества результата>. Это сравнение оценивается следующим образом:

344

Источник: https://studfile.net/preview/16418473/