Системы обработки информации - язык баз данных SQL

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


  • <Специальный символ> (<special character>) является любым символом из определенного в реализации множества символов, отличным от <цифры> (<digit>) и <буквы> (<letter>). Если в реализации индикатор конца строки является символом, он также должен быть исключен из <специальных символов> (<special character>).


    Замечание: См. Формат для <перевода строки> (<newline>) в , "<Лексемы> (<token>)".

  • Множество <специальных символов> (<special character>) должно включать все символы, отличные от <цифры> (<digit>) и <буквы> (<letter>), встречающиеся в терминальных продукциях языка SQL, и символы знака процента и подчеркивания.

  • <Символ-не-кавычки> (<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>).



  • <Лексическая единица> (<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>).



  • <Имя таблицы> (<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>) (см. , "<Раздел 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>) идентифицирует параметр.



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



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


  • Содержание раздела