Чтение RSS
Рефераты:
 
Рефераты бесплатно
 

 

 

 

 

 

     
 
Общие элементы SQL
Общие элементы SQL 5.1 <Символ> (<character>)

Функция

Определяет терминальные символы языка и элементы строк.

Формат

     <character> ::=               <digit> | <letter> | <special character>     <digit> ::=               0|1|2|3|4|5|6|7|8|9     <letter> ::=               <upper case letter> | <lower case letter>     <upper case letter> ::=               A|B|C|D|E|F|G|H|I              |J|K|L|M|N|O|P|Q|R              |S|T|U|V|W|X|Y|Z     <lower case letter> ::=               a|d|c|d|e|f|g|h|i              |j|k|l|m|n|o|p|q|r              |s|t|u|v|w|x|y|z     <special character> ::=

См. Синтаксическое правило 1.

Синтаксические правила

<Специальный символ> (<special character>) является любым символом из определенного в реализации множества символов, отличным от <цифры> (<digit>) и <буквы> (<letter>). Если в реализации индикатор конца строки является символом, он также должен быть исключен из <специальных символов> (<special character>).
Замечание: См. Формат для <перевода строки> (<newline>) в 5.3, "<Лексемы> (<token>)". Множество <специальных символов> (<special character>) должно включать все символы, отличные от <цифры> (<digit>) и <буквы> (<letter>), встречающиеся в терминальных продукциях языка SQL, и символы знака процента и подчеркивания.

Общие правила

Нет.

5.2 <Литерал> (<literal>)

Функция

Определяет не неопределенное значение

Формат

     <literal> ::=                  <character string literal>                | <numeric literal>     <character string literal> ::=               '<character representation>...'     <character representation> ::=                  <nonquote character>                | <quote representation>     <nonquote character ::=              См. Синтаксическое правило 1.     <quote representation> ::=              ''     <numeric literal> ::=                  <exact numeric literal>                | <approximate numeric literal>     <exact numeric literal> ::=              [+|-] { <unsigned integer>[.<unsigned integer>]               | <unsigned integer>.               | .<unsigned integer> }     <approximate numeric literal> ::=              <mantissa>E<exponent>     <mantissa> ::= <exact numeric literal>     <exponent> ::= <signed integer>     <signed integer> ::= [+|-] <unsigned integer>     <unsigned integer> ::=               <digit>...

Синтаксические правила

<Символ-не-кавычки> (<nonquote character>) - это любой <символ> (<character>), отличный от символа одиночной кавычки ('). Тип данных <литерала символьной строки> (<character string literal>) представляет строку символов. Длина <литерала символьной строки> (<character string literal>) есть число <представлений символов> (<character representation>), которые он содержит. Каж дое <представление кавычки> (<quote representation>) в <литерале символьной строки> (<character string literal>) представляет символ одиночной кавычки как в значении, так и в длине <литерала символьной строки> (<character string literal>). Для <литерала точного числа> (<exact numeric literal>) без десятичной точки (.) неявно предполагается наличие десятичной точки после последней <цифры> (<digit>). Тип данных <литерала точного числа> (<exact numeric literal>) представляет точные числа. Точность <литерала точного числа> (<exact numeric literal>) есть число <цифр> (<digit>), которые он содержит. Масштаб <литерала точного числа> (<exact numeric literal>) есть число <цифр> (<digit>) справа от десятичной точки. Тип данных <литерала приблизительного числа> (<approximate numeric literal>) представляет приблизительные числа. Точность <литерала приблизительного числа> (<approximate numeric literal>) есть точность его <мантиссы> (<mantissa>).

Общие правила

Значение <литерала символьной строки> (<character string literal>) - это последовательность содержащихся в нем <символов> (<character>). Численное значение <литерала точного числа> (<exact numeric literal>) получается путем обычной математической интерпретации знаковой позиционной десятичной записи. Численное значение <литерала приблизительного числа> (<approximate numeric literal>) есть результат умножения точного численного значения, представленного <мантиссой> (<mantissa>), на число, полученное путем возведения числа 10 в степень, представляемую <порядком> (<exponent>). 5.3 <Лексема> (<token>)

Функция

Определяет лексические единицы.

Формат

     <token> ::=              <nondelimiter token> | <delimiter token>     <nondelimiter token> ::=                <identifier>              | <key word>              | <numeric literal>     <identifier> ::=     <upper case letter>[{ [<underscore>]<letter or digit>}...]     <underscore> ::= _     <letter or digit> ::=                 <upper case letter> | <digit>     <key word> ::=           ALL | AND | ANY | AS | ASC | AUTHORIZATION | AVG         | BEGIN | BETWEEN | BY         | CHAR | CHARACTER | CHECK | CLOSE | COBOL | COMMIT         | CONTINUE | COUNT | CREATE | CURRENT | CURSOR         | DEC | DECIMAL | DECLARE | DEFAULT | DELETE | DESC         | DISTINCT | DOUBLE         | END | ESCAPE | EXEC | EXISTS         | FETCH | FLOAT | FOR | FOREIGN | FORTRAN | FOUND         | FROM         | GO | GOTO | GRANT | GROUP | HAVING         | IN | INDICATOR | INSERT | INT | INTEGER | INTO | IS         | KEY | LANGUAGE | LIKE         | MAX | MIN | MODULE | NOT | NULL | NUMERIC         | OF | ON | OPEN | OPTION | OR | ORDER         | PASCAL | PL1 | PRECISION | PRIMARY | PRIVILEGES |         | PROCEDURE | PUBLIC         | REAL | REFERENCES | ROLLBACK         | SCHEMA | SECTION | SELECT | SET | SMALLINT | SOME         | SQL | SQLCODE | SQLERROR | SUM         | TABLE | TO | UNION | UNIQUE | UPDATE | USER         | VALUES | VIEW | WHENEVER | WHERE | WITH | WORK     <delimiter token> ::=                <character string literal>                |,|(|)|<|>|.|:|=|*|+|-|/|<>|>=|<=     <separator> ::=               { <comment> | <space> | <newline> }...     <comment> ::=             <comment introduser> [<character>...] <newline>     <comment introduser> ::= См. Синтаксическое правило 5.     <newline> ::=             определенный в реализации индикатор конца строки     <space> ::=              символ пробела

Синтаксические правила

<Лексическая единица> (<token>), отличная от <литерала символьной строки> (<character string literal>), не должна включать <пробел> (<space>). За любой <лексической единицей> (<tocken>) может следовать <разделитель> (<separator>). За <лексемой-не-ограничителем> (<nondelimiter tocken>) должны следовать <лескема-ограничитель> (<delimiter tocken>) или <разде литель> (<separator>). Если синтаксис не допускает на личия <лексемы-ограничителя> (<delimiter tocken>) за <лексемой-не-ограничителем> (<nondelimiter tocken>), то за <лексемой-не-ограничителем> (<nondelimiter tocken>) должен следовать <разделитель> (<separator>). <Идентификатор> (<identifier>) не должен содержать более 18 <символов> (<character>). <Идентификатор> (<identifier>) не должен совпадать с <ключевым словом> (<key word>). <Предваритель комментария> (<comment introduser>) есть последовательность двух или более дефисов (-), не раз деленных ни одним <пробелом> (<space>) или <переводом строки> (<newline>) и не входящих в <литерал символьной строки> (<character string literal>).

Общие правила

Нет.

5.4 Имена

Функция

Специфицирует имена

Формат

     <table name>  ::=  [<authorization  identifier>.]                         <table identifier>     <authorization identifier> ::= <identifier>     <table identifier> ::= <identifier>     <column name> ::= <identifier>     <correlation name> ::= <identifier>     <module name> ::= <identifier>     <cursor name> ::= <identifier>     <procedure name> ::= <identifier>     <parameter name> ::= <identifier>

Синтаксические правила

<Имя таблицы> (<table name>) идентифицирует именованную таблицу. Если <имя таблицы> (<table name>) не включает <идентификатора полномочий> (<authorization identifier>), то:
a) Если <имя таблицы> (<table name>) содержится в <схеме> (<schema>), то по умолчанию предполагается <идентификатор полномочий> (<authorization identifier>), определяемый как <идентификатор полномочий схемы> (<schema authorization identifier>) данной <схемы> (<schema>).
b) Если <имя таблицы> (<table name>) содержится в <модуле> (<module>), то по умолчанию предполагается <идентификатор полномочий> (<authorization identifier>), определяемый как <идентификатор полномочий модуля> (<module authorization identifier>) данного <модуля> (<module>). Два <имени таблицы> (<table name>) совпадают, в том и только в том случае, если они включают один и тот же <идентификатор таблицы> (<table identifier>) и один и тот же <идентификатор полномочий> (<authorization identifier>), независимо от того, явно или неявно указаны <идентификаторы полномочий> (<authorization identifier>). <Имя таблицы> (<table name>) объявляется в <определении таблицы> (<table definition>) или в <определении представления> (<view definition>). <Имя таблицы> (<table name>) в <операторе SQL> (<SQL statement>) должно идентифицировать таблицу, определенную в <схеме> (<schema>). <Идентификатор полномочий> (<authorization identifier>) представляет идентификатор полномочий. <Идентификатор> (<identifier>) объявляется как <имя кореляции> (<correlation name>) и ассоциируется с таблицей для индивидуальной области действия. Область действия <имени кореляции> (<correlation name>) - это либо <оператор выборки> (<select statement>), либо <подзапрос> (<subquery>), либо <спецификация запроса> (<query specification>) (см. 5.20, "<Раздел from> (<from clause>)"). Области действия могут быть вложенными. В разных областях действия одно и то же <имя кореляции> (<correlation name>) может быть ассоциировано с разными таблицами или с одной и той же таблицей. <Имя столбца> (<column name>) идентифицирует именованный столбец. <Идентификатор> (<identifier>) определяется как <имя столбца> (<column name>) через <определение таблицы> (<table definition>) или через <определение представления> (<view definition>). <Имя модуля> (<module name>) идентифицирует <модуль> (<module>). <Имя курсора> (<cursor name>) идентифицирует <курсор> (<cursor>). <Имя процедуры> (<procedure name>) идентифицирует <процедуру> (<procedure>). <Имя параметра> (<parameter name>) идентифицирует параметр.

Общие правила

Нет.

5.5 <Тип данных> <data type>

Функция

Специфицирует тип данных.

Формат

     <data type> ::=                <character string type>              | <exact numeric type>              | <approximate numeric type>     <character string type> ::=                 CHARACTER [(<lenght>)]               | CHAR [(<lenght>)]     <exact numeric type> ::=                 NUMERIC [(<precision> [,<scale>])]               | DECIMAL [(<precision> [,<scale>])]               | DEC [(<precision> [,<scale>])]               | INTEGER               | INT               | SMALLINT     <approximate numeric type> ::=                 FLOAT [(<precision>)]               | REAL               | DOUBLE PRECISION     <lenght> ::= <unsigned integer>     <precision> ::= <unsigned integer>     <scale> ::= <unsigned integer>

Синтаксические правила

CHAR - это синоним для CHARACTER. DEC - это синоним для DECIMAL. INT - это синоним для INTEGER. Значение <целого без знака> (<unsigned integer>), т.е. <длина> (<lenght>> или <точность> (<precision>), должно быть больше 0. Если <длина> (<lenght>) опущена, то она предполагается равной 1. Если <масштаб> (<scale>) опущен, то предполагается равным 0. Если опущена <точность> (<precision>), то значение определяется в реализации. <Масштаб> (<scale>) для <типа точных чисел> (<exact numeric type>) не должен быть больше, чем <точность> (<precision>) для <типа точных чисел> (<exact numeric type>). CHARACTER специфицирует тип данных строк символов с длиной, специфицируемой <длиной> (<lenght>). NUMERIC специфицирует тип данных точных чисел с точностью и масштабом, специфицируемыми через <точность> (<precision>) и <масштаб> (<scale>). DECIMAL специфицирует тип данных точных чисел с масштабом, специфицируемым <масштабом> (<scale>) и определяемой в реализации точностью, равной или большей зна чения указанной <точности> (<precision>). INTEGER специфицирует тип данных точных чисел с определенной в реализации точностью и масштабом 0. SMALLINT специфицирует тип данных точных чисел с масштабом 0 и определенной в реализации точностью не большей, чем определенная в реализации точность INTEGER. FLOAT специфицирует тип данных приблизительных чисел с двоичной точностью, равной или большей значения указанной <точности> (<precision>). REAL специфицирует тип данных приблизительных чисел с определенной в реализации точностью. DOUBLE PRECISION специфицирует тип данных приблизительных чисел с определенной в реализации точностью большей, чем определенная в реализации точность для REAL.

Общие правила

Нет.

5.6 <Спецификация значения> (<value specification>) и <спецификация цели>) (<target specification>)

Функция

Специфицируют одно или более значений, параметров или пе- ременных.

Формат

     <value specification> ::=                   <parameter specification>                 | <variable specification>                 | <literal>                 | USER     <target specification> ::=                   <parameter specification>                 | <variable specification>     <parameter specification> ::=               <parameter name> [<indicator paremeter>]     <indicator parameter> ::=               [INDICATOR] <parameter name>     <variable specification> ::=             <embedded variable name> [<indicator variable>]     <indicator variable> ::=               [INDICATOR] <embedded variable name>

Синтаксические правила

<Спецификация значения> (<value specification>) специфицирует значение, которое не выбирается из таблицы. <Спецификация параметра> (<parameter specification>) идентифицирует параметр или параметр и параметр-индикатор. Тип данных параметра-индикатора должен быть типом точных чисел со шкалой 0. Конкретный <тип точных чисел> (<exact numeric type>) параметров-индикаторов определяется в реализации. <Спецификация переменной> (<variable specification>) идентифицирует переменную включающего языка или переменную включающего языка и переменную-индикатор. Тип данных переменной-индикатора должен быть определенным в реализации типом данных для параметров-индикаторов. <Спецификация цели> (<target specification>) специфицирует параметр или переменную, которым может быть присвоено значение. <Спецификация параметра> (<parameter specification>) должна содержаться в <модуле> (<module>). <Спецификация переменной> (<variable specification>) должна со держаться во <встроенном операторе SQL> (<embedded SQL statement>). Тип данных USER - это символьная строка длины, определенной в реализации.

Общие правила

Если <спецификация параметра> (<parameter specification>) содержит <параметр-индикатор> (<indicator parameter>) и значение параметра-индикатора отрицательно, то значение, специфицируемое <спецификацией параметра> (<parameter specification>) - не определенное. В противном случае значение, специфицируемое <спецификацией параметра>(<parameter specification>) - это значение параметра, идентифицируемого <именем параметра> (<parameter name>). Если <спецификация переменной>(<variable specification>) содержит <переменную-индикатор> (<indicator variable>) и значение переменной-индикатора отрицательно, то значение, специфицируемое <спецификацией переменной> (<variable specification>) - не определенное. В противном случае значение, специфицируемое <спецификацией переменной> (<variable specification>) - это значение переменной, идентифицируемой <именем встроенной переменной> (<embedded variable name>). Значение, специфицируемое <литералом> (<literal>) - это значение, представляемое этим <литералом> (<literal>). Значение, специфицируемое USER, равно <идентификатору полномочий> (<authorization identifier>), указанному как <идентификатор полномочий модуля> (<module authorization identifier>) <модуля> (<module>), содержащего <оператор SQL> (<SQL statement>), выполнение которого вызвало вычисления <спецификации значения> (<value specification>) USER. <Спецификация столбца> (<column specification>)

Функция

Указание именованного столбца.

Формат

          <column specification> ::=                   [<qualifier>.] <column name>          <qualifier> ::=     <table name> | <correlation name>

Синтаксические правила

<Спецификация столбца> указывает именованный столбец. Смысл указания столбца зависит от контекста. Пусть C <имя столбца> (<column name>) в <спецификации столбца> (<column specification>). Тогда:
a) Если <спецификация столбца> (<columnspecification>) содержит <квалификатор>(<qualifier>), то <спецификация столбца> должна содержаться в области действия одного или более <иментаблиц> (<table name>) или <имен кореляции>(<correlation name>), равных <квалификатору>(<qualifier>). Если таких <имен таблиц> (<tablename>) или <имен кореляции> (<correlation name>)больше одного, то используется имя с наиболее локальной областью действия. Таблица, ассоциированнаяс указанным <именем таблицы> (<table name>) или<именем кореляции> (<correlation name>), должнавключать столбец с <именем столбца> (<column name>) C.
b) Если <спецификация столбца> (<columnspecification>) не включает <квалификатор>(<qualifier>), то она должна содержаться в областидействия одного или более <имен таблиц> (<tablename>) или <имен кореляции> (<correlation name>).Пусть фраза "возможные квалификаторы" обозначает те<имена таблиц> (<table name>) и <имена корреляций>(<correlation name>), для которых ассоциированныетаблицы включают столбец, <имя столбца> (<columnname>) которого есть C. Должен существовать в точности один возможный квалификатор с наиболее локальной областью действия, и это <имя таблицы>(<table name>) или <имя корреляции> (<correlationname>) неявно используется.
Замечание: "Область действия" <имени таблицы> (table name> или <имени кореляции> (<correlation name>) специфицируется в 5.20 "<Раздел from> (<from clause>)", 6.2, "<Определение таблицы> (<table definition>)" , 8.5, "<Оператор удаления: поисковый> (<delete statement: searched>)" , 8.11, "<Оператор модификации: позиционный> (<update statement: positioned>)" и 8.12, "<Оператор модификации: поисковый>(<updatestatement: searched>)". Если <спецификация столбца> (<column specification>) содержится в <выражении над таблицами> (<table expression>) T и область действия явно или неявно указанного <квалификатора> (<qualifier>) <спецификации столбца> (<column specification>) есть некоторый <оператор SQL> (<SQL statement>) или <выражение над таблицами> (<table expression>), содержащее <выражение над таблицами> (<table expression>) T, то <спецификация столбца> (<column specification>) является "внешней ссылкой" на таблицу, ассоциированную с этим <квалификатором> (<qualifier>). Пусть T обозначает таблицу, ассоциированную с явно или неявно специфицированным <квалификатором> (<qualifier>) R. Тип данных <спецификации столбца> (<column specification>) есть тип данных столбца C таблицы T.

Общие правила

"C" или "R.C" ссылаются на столбец C данной строки T. 5.8 <Спецификация функции над множеством> (<set function specification>)

Функция

Специфицирует значение, получаемое применением функции к аргументу.

Формат

           <set function specification> ::=     COUNT(*) | <distinct set function>                   | <all set function>          <distinct set function> ::=     { AVG | MAX | MIN | SUM | COUNT }     (DISTNICT <column specification>)          <all set function> ::=     { AVG | MAX | MIN | SUM }     ([ALL] <value expression>)

Синтаксические правила

Аргумент COUNT(*) и источник аргумента <функции над различными элементами множества> (<distinct set function>) и <функции надо всеми элементами множества> (<all set function>) - это таблица или группа сгруппированной таблицы в соответствии со спецификациями в 5.19, "<Выражение, вырабатывающее таблицу> (<table expression>)", 5.24, "<Подзапрос> (<subquery>)" и 5.25, "<Спецификация запроса> (<query specification>)". Пусть R обозначает аргумент или источник аргумента <спецификации функции над множеством> (<set function specification>). <Спецификация столбца> (<column specification>) <функции над различными элементами множества> (<distinct function specification>) и каждая <спецификация столбца> (<column specification>) в <выражении, вырабатывающем значение> (<value expression>) <функции надо всеми элементами множества> (<all set function>) должны недвусмысленно ссылаться на столбец R и не должны ссылаться на столбец, порожденный из <спецификации функции над множеством> (<set function specification>). <Выражение, вырабатывающее значение> (<value expression>) <функции надо всеми элементами множества> должно включать <спецификацию столбца> (<column specification>), которая ссылается на столбец R, и не должно включать <спецификацию функции над множеством> (<set function specification>). Если <спецификация столбца> (<column specification>) является внешней ссылкой, то <выражение, вырабатывающее значение> (<value expression>) не должно включать никаких операторов.
Замечание: "Внешняя ссылка" определяется в 5.7, "<Спецификация столбца> (<column specifiction">). Если <спецификация функции над множеством> (<set function specification>) содержит <спецификацию столбца> (<column specificaton>), являющуюся внешней ссылкой, то <спецификации функции над множеством> (<set function specification>) должна содержаться в <подзапросе> (<subquery>) <статьи having> (<having clause>).
Замечание: "Внешняя ссылка" определяется в 5.7, "<Спецификация столбца> (<column specifiction">). Пусть T тип данных значений, являющихся результатами вычисления <спецификации столбца> (<column specification>) или <выражения, вырабатывающего значение> (<value expression>). Если указывается COUNT, то тип данных результата <спецификации функции над множеством> (<set function specification>) - это тип точных чисел с определенной в реализации точностью и масштабом 0. Если указывается MAX или MIN, то тип данных результата есть T. Если указывается SUM или AVG, то:
a) тип T не должен быть типом символьных строк.
b) если указывается SUM и T - тип точных чисел с масштабом S, то тип данных результата - тип точных чисел с определенной в реализации точностью и масштабом S.
c) если указывается AVG и T - тип точных чисел с масштабом S, то тип данных результата - тип точных чисел с определенными в реализации точностью и масштабом.
d) если T - тип приблизительных чисел, то тип результата - тип приблизительных чисел с определенной в реализации точностью.

Общие правила

Аргументом <функции над различными элементами множества> (<distinct set function>) является множество значений. Это множество получается путем удаления неопределенных значений и всех избыточных дублирующих значений из столбца R, на который ссылается <спецификация столбца> (<column specification>). Аргументом <функции надо всеми элементами множества> (<all set function>) является мультимножество значений. Это мультимножество получается путем удаления всех неопределенных значений из результата применения <выражения, вырабатывающего значение> (<value expression>) к каждой строке R. Указание или неуказание ALL не влияет на смысл <функции надо всеми элементами множества> (<all set function>). Пусть S обозначает аргумент <функции над различными элементами множества> (<distinct set function>) или <функции надо всеми элементами множества> (<all set function>). Тогда:
a) Если задается <функция над различными элементами множества> (<distinct set function>) COUNT, то результатом является мощность S.
b) Если задается функция COUNT(*), то результатом является мощность R.
c) Если задается функция AVG, MAX, MIN или SUM и S пусто, то результатом является неопределенное значение.
d) Если задается MAX или MIN, то результатом является, соответственно, максимальное или минимальное значение в S. Эти результаты определяются с использованием правил сравнения, определенных в 5.11, "<comparison predicate>".
e) Если задается SUM, то результатом является суммазначений в S. Сумма должна быть в пределах диапазона значений типа данных результата.
f) Если задается AVG, то результатом является среднеезначение значений в S. Сумма значений в S должнабыть в пределах диапазона значений типа данных результата. 5.9 <Выражение, вырабатывающее значение> (<value expression>)

Функция

Специфицирует значение.

Формат

          <value expression> ::=     <term>                   | <value expression> + <term>                   | <value expression> - <term>          <term> ::=     <factor>              | <term> * <factor>              | <term> / <factor>          <factor> ::=                   [+|-] <primary>          <primary> ::=     <value specification>                   | <column specification>                   | <set function specification>                   | ( <value expression> )

Синтаксические правила

<Выражение, вырабатывающее значение> (<value expression>), включающее <функцию над различными элементами множества>, не должно включать никаких двухместных операторов. Первый <символ> (<character>) <лексемы> (<token>), следующей за одноместным оператором, не должен быть знаком плюс или минус. Если тип данных <первичного выражения> (<primary>) является типом символьных строк, то <выражение, вырабатывающее значение> (<value expression>) не должно включать никаких операторов. Типом данных результата является тип символьных строк. Если тип данных обоих операндов оператора является типом точных чисел, то тип данных результата является типом точных чисел с точностью и масштабом, определяемыми следующим образом:
a) Пусть s1 и s2 - масштабы первого и второго операндов, соответственно.
b) Точность результата сложения и вычитания определяется в реализации, и масштаб есть max(s1,s2).
c) Точность результата умножения определяется в реализации, и масштаб есть s1+s2.
d) Точность и масштаб результата деления определяются в реализации. Если тип данных какого-либо операнда оператора является типом приблизительных чисел, то тип данных результата есть тип приблизительных чисел. Точность результата определяется в реализации.

Общие правила

Если значение <первичного выражения> (<primary>) является неопределенным значением, то результатом <выражения, вырабатывающего значение> (<value expression>) является неопределенное значение. Если операторы не указаны, то результатом <выражения, вырабатывающего значение> (<value expression>) является значение указанного <первичного выражения> (<primary>). Когда <выражение, вырабатывающее значение> (<value expression>) применяется к строке таблицы, каждая ссылка на столбец этой таблицы является ссылкой на значение этого столбца в этой строке. Одноместные арифметические операторы + и - специфицируют одноместный плюс и одноместный минус, соответственно. Одноместный плюс не изменяет своего операнда. Одноместный минус изменяет знак своего операнда. Двухместные арифметические операторы +, -, * и / специфицируют сложение, вычитание, умножение и деление соответственно. Делитель не должен быть равен 0. Если типом результата арифметического оператора является тип целых чисел, то:
a) Если оператор не оператор деления, то математический результат операции должен быть точно представим с точностью и масштабом типа результата.
b) Если оператор - это оператор деления, то приближенный математический результат операции, представленный с точностью и масштабом типа результата не должен терять никаких лидирующих значащих цифр. Первыми вычисляются выражения в скобках. Когда порядок вычисления не определяется скобками, одноместные операторы применяются перед операторами умножения и деления, операторы умножения и деления применяются перед операторами сложения и вычитания, и операторы одного уровня предшествования применяются слева направо. 5.10 <Предикат> (<predicate>)

Функция

Специфицирует условие, для которого может быть вычислено истиностное значение "true", "false" или "unknown".

Формат

          <predicate> ::=     <comparison predicate>                   | <between predicate>                   | <in predicate>                   | <like predicate>                   | <null predicate>                   | <quantified predicate>                   | <exists predicate>

Синтаксические правила

Нет.

Общие правила

Результат <предиката> (<predicate>) получается его применением к данной строке таблицы. 5.11 <Предикат сравнения> (<comparison predicate>)

Функция

Специфицирует сравнение двух значений.

Формат

          <comparison predicate> ::=                   <value expression> <comp op>                   {<value expression> | <subquery>}          <comp op> ::=                  = | <> | < | > | <= | >=

Синтаксические правила

Тип данных первого <выражения, вырабатывающего результат> (<value expression>) и <подзапроса> (<subquery>) или второго <выражения, вырабатывающего значение> (<value expression>) должны быть сравнимыми.

Общие правила

Пусть x обозначает результат первого <выражения, вырабатывающего значение> (<value expression>) и пусть y обозначает результат <подзапроса> (<subquery>) или второго <выражения, вырабатывающего значение> (<value expression>). Мощность результата <подзапроса> (<subquery>) не должна быть больше единицы. Если x или y являются неопределенными значениями или если результат <подзапроса> (<subquery>) пустой, то результатом "x <comp op> y" является unknown. Если x и y являются не неопределенными значениями, то результатом "x <comp op> y" является true или false: "x = y" есть true тогда и только тогда, когда x и y равны. "x <> y" есть true тогда и только тогда, когда x и y не равны. "x < y" есть true тогда и только тогда, когда x меньше, чем y. "x > y" есть true тогда и только тогда, когда x больше, чем y. "x <= y" есть true тогда и только тогда, когда x не больше, чем y. "x >= y" есть true тогда и только тогда, когда x не меньше, чем y. Числа сравниваются в соответствии с их алгебраическими значениями. Сравнение двух символьных строк определяется через сравнение <символов> (<character>) с одинаковыми порядковыми позициями. Если строки не имеют одинаковую длину, то сравнение производится с рабочей копией более короткой строки, дополненной справа пробелами <space> таким образом, чтобы она имела длину, равную длине другой строки. Две строки равны, если все <символы> (<character>) с одинаковыми порядковыми позициями совпадают. Если две строки не равны, то их отношение определяется на основе сравнения первой пары неравных <символов> (<character>) с левого конца строк. Это сравнение производится в соответствии с определенной в реализации последовательностью сопоставления. Хотя "x = y" есть unknown, если x и y являются неопределенными значениями, в контекстах GROUP BY, ORDER BY и DISTINCT неопределенное значение идентично или является дубликатом другого неопределенного значения. <Предикат between> (<between predicate>)

Функция

Специфицирует сравнение с интервалом.

Формат

          <between predicate> ::=                   <value expression>          [NOT] BETWEEN <value expression> AND <value expression>

Синтаксические правила

Типы данных всех трех <выражений, вырабатывающих значение> (<value expression>) должны быть сравнимыми.

Общие правила

Пусть x, y и z обозначают результаты первого, второго и третьего <выражений, вырабатывающих значение> (<value expression>), соответственно. Результат "x BETWEEN y AND z" тот же самый, что и результат "x >= y AND x <= z". Результат "x NOT BETWEEN y AND z" тот же самый, что и результат "NOT (x BETWEEN y AND z)". 5.13 <Предикат in> (<in predicate>)

Функция

Специфицирует сравнение с квантором.

Формат

          <in predicate> ::=     <value expression> [NOT] IN     { <subquery> | (<in value list>) }          <in value list> ::=     <value specification>     { ,<value specification> }...

Синтаксические правила

Типы данных первого <выражения, вырабатывающего значение> (<value expression>) и <подзапроса> (<subquery>) или всех <выражений, вырабатывающих значение> (<value expression>) в <списке значений in> (<in value list>) должны быть сравнимыми.

Общие правила

Пусть x обозначает результат <выражения, вырабатывающего значение> (<value expression>). Пусть S обозначает результат <подзапроса> (<subquery>) как в <предикате с квантором> (<quantified predicate>) или значения, определенные через <список значений in> (<in value list>), рассматриваемые как значения строк единственного столбца таблицы степени один. Результат "x IN S" тот же самый, что и результат "x = ANY S". Результат "x NOT IN S" тот же самый, что и результат "NOT (x IN S)". 5.14 <Предикат like> (<like predicate>)

Функция

Специфицирует сравнение по совпадению с образцом.

Формат

          <like predicate> ::=     <column specification> [NOT] LIKE <pattern>                    [ESCAPE <escape character>]          <pattern> ::=     <value specification>          <escape character> ::=     <value specification>

Синтаксические правила

<Спецификация столбца> (<column specification>) должна указывать на столбец символьных строк. Тип данных <образца> (<pattern>) должен быть типом символьных строк. Тип данных <символа escape> (<escape character>) должен быть типом символьных строк длины 1.

Общие правила

Пусть x обозначает значение, указываемое <спецификацией столбца> (<column specification>), и пусть y обозначает результат <спецификации значения> (<value specification>) <образца> (<pattern>). Тогда:
a) Если указывается <символ escape> (<escapecharacter>), то:
i) Пусть z обозначает результат <спецификации значения> (<value specification>) <символа escape> (<escape character>).
ii) Должно существовать разбиение строки y на подстроки такое, что каждая подстрока имеет длину 1 или 2, никакая подстрока длины 1 не содержит символа escape z, и каждая подстрока длины 2 начинается с символа escape z, за которым следует либо символ escape z, либо символ подчеркивания, либо символ знака процента. В этом разбиении y каждая подстрока длины 2 представляет одно вхождение второго символа этой подстроки. Каждая подстрока длины 1, содержащая символ подчеркивания, представляет спецификатор произвольного символа. Каждая подстрока длины 1, содержащая знак процента, представляет спецификатор произвольной строки. Каждая подстрока длины 1, не содержащая ни символа подчеркивания, ни символа знака процента, представляет символ, который она содержит.


b) Если <символ escape> (<escape character>) не указан, то каждый символ подчеркивания в y представляет спецификатор произвольного символа, каждый символ знака процента в y представляет спецификатор произвольной строки, и каждый символ в y, который не является ни символом подчеркивания, ни символом знака процента, представляет сам этот символ.

Строка y является последовательностью минимального числа спецификаторов подстрок таких, что каждый <символ> (<character>) y является частью в точности одного спецификатора подстроки. Спецификатор подстроки - это спецификатор произвольного символа, спецификатор произвольной подстроки или любая последовательность <символов> (<character>), не являющаяся спецификатором произвольного символа или спецификатором произвольной строки. Результатом "x LIKE y" является unknown, если x или y представляют неопределенное значение. Если x и y представляют не неопределенные значения, то значением "x LIKE y" является либо true, либо false. Результатом "x LIKE y" является true, если существует разбиение x на подстроки такое, что:
a) Подстрока x является последовательностью нуля или более подряд идущих <символов> (<character>) x, и каждый <символ> (<character>) x есть часть в точности одной подстроки.
b) Если i-ый спецификатор подстроки y является спецификатором произвольного символа, i-ая подстрока x состоит из одного произвольного <символа> (<character>).
c) Если i-ый спецификатор подстроки y является спецификатором произвольной строки, i-ая подстрока x является произвольной последовательностью нуля или более <символов> (<character>).
d) Если i-ый спецификатор подстроки y не является ни спецификатором произвольного символа, ни спецификатором произвольной строки, i-ая подстрока x совпадает с этим спецификатором подстроки и имеет ту же длину, что этот спецификатор подстроки.
e) Число подстрок x равно числу спецификаторов подстрок y. Результат "x NOT LIKE y" такой же, как результат "NOT (x LIKE y)". 5.15 <Предикат null> (<null predicate>)

Функция

Специфицирует проверку значения на неопределенность.

Формат

          <null predicate> ::=     <column specification> IS [NOT] NULL

Синтаксические правила

Нет.

Общие правила

Пусть x обозначает значение, указываемое <спецификацией столбца> (<column specification>). Результатом "x IS NULL" является true или false. Результатом "x IS NULL" является true, если и только если x представляет неопределенное значение. Результат "x IS NOT NULL" такой же, как результат "NOT (x IS NULL)". 5.16 <Предикат с квантором> (<quantified predicate>)

Функция

Специфицирует сравнение с квантором.

Формат

          <quantified predicate> ::=     <value expression>     <comp op> <quantifier> <subquery>          <quantifier> ::=     <all> | <some>          <all> ::= ALL          <some> ::= SOME | ANY

Синтаксические правила

Типы данных <выражения, вырабатывающего значение> (<value expression>) и <подзапроса> (<subquery>) должны быть сравнимы.

Общие правила

Пусть x обозначает результат <выражения, вырабатывающего значение> (<value expression>) и пусть S обозначает результат <подзапроса> (<subquery>). Результат "x <comp op> <quantifier> S" вырабатывается путем применения подразумеваемого <предиката сравнения> (<comparison predicate>) "x <comp op> s" к каждому значению S:
a) Если S пусто или если значение подразумева
 
     
Бесплатные рефераты
 
Банк рефератов
 
Бесплатные рефераты скачать
| Интенсификация изучения иностранного языка с использованием компьютерных технологий | Лыжный спорт | САИД Ахмад | экономическая дипломатия | Влияние экономической войны на глобальную экономику | экономическая война | экономическая война и дипломатия | Экономический шпионаж | АК Моор рефераты | АК Моор реферат | ноосфера ба забони точики | чесменское сражение | Закон всемирного тяготения | рефераты темы | иохан себастиян бах маълумот | Тарых | шерхо дар борат биология | скачать еротик китоб | Семетей | Караш | Influence of English in mass culture дипломная | Количественные отношения в английском языках | 6466 | чистонхои химия | Гунны | Чистон | Кус | кмс купить диплом о language:RU | купить диплом ргсу цена language:RU | куплю копии дипломов для сро language:RU
 
Рефераты Онлайн
 
Скачать реферат
 
 
 
 
  Все права защищены. Бесплатные рефераты и сочинения. Коллекция бесплатных рефератов! Коллекция рефератов!