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.
|