5. Общие элементы

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.

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

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

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

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

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

  1. Значение <литерала символьной строки> (<character string literal>) - это последовательность содержащихся в нем <символов> (<character>).
  2. Численное значение <литерала точного числа> (<exact numeric literal>) получается путем обычной математической интерпретации знаковой позиционной десятичной записи.
  3. Численное значение <литерала приблизительного числа> (<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> ::=

              символ пробела

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

  1. <Лексическая единица> (<token>), отличная от <литерала символьной строки> (<character string literal>), не должна включать <пробел> (<space>).
  2. За любой <лексической единицей> (<tocken>) может следовать <разделитель> (<separator>). За <лексемой-не-ограничителем> (<nondelimiter tocken>) должны следовать <лескема-ограничитель> (<delimiter tocken>) или <разде литель> (<separator>). Если синтаксис не допускает на личия <лексемы-ограничителя> (<delimiter tocken>) за <лексемой-не-ограничителем> (<nondelimiter tocken>), то за <лексемой-не-ограничителем> (<nondelimiter tocken>) должен следовать <разделитель> (<separator>).
  3. <Идентификатор> (<identifier>) не должен содержать более 18 <символов> (<character>).
  4. <Идентификатор> (<identifier>) не должен совпадать с <ключевым словом> (<key word>).
  5. <Предваритель комментария> (<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>

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

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

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

  1. CHAR - это синоним для CHARACTER. DEC - это синоним для DECIMAL. INT - это синоним для INTEGER.
  2. Значение <целого без знака> (<unsigned integer>), т.е. <длина> (<lenght>> или <точность> (<precision>), должно быть больше 0.
  3. Если <длина> (<lenght>) опущена, то она предполагается равной 1. Если <масштаб> (<scale>) опущен, то предполагается равным 0. Если опущена <точность> (<precision>), то значение определяется в реализации.
  4. <Масштаб> (<scale>) для <типа точных чисел> (<exact numeric type>) не должен быть больше, чем <точность> (<precision>) для <типа точных чисел> (<exact numeric type>).
  5. CHARACTER специфицирует тип данных строк символов с длиной, специфицируемой <длиной> (<lenght>).
  6. NUMERIC специфицирует тип данных точных чисел с точностью и масштабом, специфицируемыми через <точность> (<precision>) и <масштаб> (<scale>).
  7. DECIMAL специфицирует тип данных точных чисел с масштабом, специфицируемым <масштабом> (<scale>) и определяемой в реализации точностью, равной или большей зна чения указанной <точности> (<precision>).
  8. INTEGER специфицирует тип данных точных чисел с определенной в реализации точностью и масштабом 0.
  9. SMALLINT специфицирует тип данных точных чисел с масштабом 0 и определенной в реализации точностью не большей, чем определенная в реализации точность INTEGER.
  10. FLOAT специфицирует тип данных приблизительных чисел с двоичной точностью, равной или большей значения указанной <точности> (<precision>).
  11. REAL специфицирует тип данных приблизительных чисел с определенной в реализации точностью.
  12. 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>

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

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

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

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

Назад | Содержание | Вперед