Web Analytics Made Easy - Statcounter


https://www.amazon.it/dp/B0CT9YL557

We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
a2 --- Definizione di SQL92 in notazione BNF

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [violazione licenza] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 445.   Definizione di SQL92 in notazione BNF

In questo capitolo, viene descritto il linguaggio SQL92 secondo la notazione BNF (Backus Naur form). La sintassi che viene mostrata qui è tratta da <http://www.contrib.andrew.cmu.edu/~shadow/sql/sql2bnf.aug92.txt> e manca della definizione di ciò che richiede una descrizione più ampia.

<SQL terminal character> ::=
      <SQL language character>
    | <SQL embedded language character>
<SQL language character> ::=
      <simple Latin letter>
    | <digit>
    | <SQL special character>
<simple Latin letter> ::=
      <simple Latin upper case letter>
    | <simple Latin lower case letter>
<simple Latin 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
<simple Latin lower 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
<digit> ::=
    0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<SQL special character> ::=
      <space>
    | <double quote>
    | <percent>
    | <ampersand>
    | <quote>
    | <left paren>
    | <right paren>
    | <asterisk>
    | <plus sign>
    | <comma>
    | <minus sign>
    | <period>
    | <solidus>
    | <colon>
    | <semicolon>
    | <less than operator>
    | <equals operator>
    | <greater than operator>
    | <question mark>
    | <underscore>
    | <vertical bar>
<space> ::= ␣
<double quote> ::= "
<percent> ::= %
<ampersand> ::= &
<quote> ::= '
<left paren> ::= (
<right paren> ::= )
<asterisk> ::= *
<plus sign> ::= +
<comma> ::= ,
<minus sign> ::= -
<period> ::= .
<solidus> ::= /
<colon> ::= :
<semicolon> ::= ;
<less than operator> ::= <
<equals operator> ::= =
<greater than operator> ::= >
<question mark> ::= ?
<underscore> ::= _
<vertical bar> ::= |
<SQL embedded language character> ::=
      <left bracket>
    | <right bracket>
<left bracket> ::= [
<right bracket> ::= ]
<token> ::=
      <nondelimiter token>
    | <delimiter token>
<nondelimiter token> ::=
      <regular identifier>
    | <key word>
    | <unsigned numeric literal>
    | <national character string literal>
    | <bit string literal>
    | <hex string literal>
<regular identifier> ::= <identifier body>
<identifier body> ::=
    <identifier start> [ { <underscore> | <identifier part> }... ]
<identifier part> ::=
      <identifier start>
    | <digit>
<key word> ::=
      <reserved word>
    | <non-reserved word>
<reserved word> ::=
      ABSOLUTE | ACTION | ADD | ALL
    | ALLOCATE | ALTER | AND
    | ANY | ARE
    | AS | ASC
    | ASSERTION | AT
    | AUTHORIZATION | AVG
    | BEGIN | BETWEEN | BIT | BIT_LENGTH
    | BOTH | BY
    | CASCADE | CASCADED | CASE | CAST
    | CATALOG
    | CHAR | CHARACTER | CHAR_LENGTH
    | CHARACTER_LENGTH | CHECK | CLOSE | COALESCE
    | COLLATE | COLLATION
    | COLUMN | COMMIT
    | CONNECT
    | CONNECTION | CONSTRAINT
    | CONSTRAINTS | CONTINUE
    | CONVERT | CORRESPONDING | COUNT | CREATE | CROSS
    | CURRENT
    | CURRENT_DATE | CURRENT_TIME
    | CURRENT_TIMESTAMP | CURRENT_USER | CURSOR
    | DATE | DAY | DEALLOCATE | DEC
    | DECIMAL | DECLARE | DEFAULT | DEFERRABLE
    | DEFERRED | DELETE | DESC | DESCRIBE | DESCRIPTOR
    | DIAGNOSTICS
    | DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP
    | ELSE | END | END-EXEC | ESCAPE
    | EXCEPT | EXCEPTION
    | EXEC | EXECUTE | EXISTS
    | EXTERNAL | EXTRACT
    | FALSE | FETCH | FIRST | FLOAT | FOR
    | FOREIGN | FOUND | FROM | FULL
    | GET | GLOBAL | GO | GOTO
    | GRANT | GROUP
    | HAVING | HOUR
    | IDENTITY | IMMEDIATE | IN | INDICATOR
    | INITIALLY | INNER | INPUT
    | INSENSITIVE | INSERT | INT | INTEGER | INTERSECT
    | INTERVAL | INTO | IS
    | ISOLATION
    | JOIN
    | KEY
    | LANGUAGE | LAST | LEADING | LEFT
    | LEVEL | LIKE | LOCAL | LOWER
    | MATCH | MAX | MIN | MINUTE | MODULE
    | MONTH
    | NAMES | NATIONAL | NATURAL | NCHAR | NEXT | NO
    | NOT | NULL
    | NULLIF | NUMERIC
    | OCTET_LENGTH | OF
    | ON | ONLY | OPEN | OPTION | OR
    | ORDER | OUTER
    | OUTPUT | OVERLAPS
    | PAD | PARTIAL | POSITION | PRECISION | PREPARE
    | PRESERVE | PRIMARY
    | PRIOR | PRIVILEGES | PROCEDURE | PUBLIC
    | READ | REAL | REFERENCES | RELATIVE | RESTRICT
    | REVOKE | RIGHT
    | ROLLBACK | ROWS
    | SCHEMA | SCROLL | SECOND | SECTION
    | SELECT
    | SESSION | SESSION_USER | SET
    | SIZE | SMALLINT | SOME | SPACE | SQL | SQLCODE
    | SQLERROR | SQLSTATE
    | SUBSTRING | SUM | SYSTEM_USER
    | TABLE | TEMPORARY
    | THEN | TIME | TIMESTAMP
    | TIMEZONE_HOUR | TIMEZONE_MINUTE
    | TO | TRAILING | TRANSACTION
    | TRANSLATE | TRANSLATION | TRIM | TRUE
    | UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE
    | USER | USING
    | VALUE | VALUES | VARCHAR | VARYING | VIEW
    | WHEN | WHENEVER | WHERE | WITH | WORK | WRITE
    | YEAR
    | ZONE
<non-reserved word> ::=
      ADA
    | C | CATALOG_NAME
    | CHARACTER_SET_CATALOG | CHARACTER_SET_NAME
    | CHARACTER_SET_SCHEMA | CLASS_ORIGIN | COBOL | COLLATION_CATALOG
    | COLLATION_NAME | COLLATION_SCHEMA | COLUMN_NAME | COMMAND_FUNCTION
    | COMMITTED
    | CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME
    | CONSTRAINT_SCHEMA | CURSOR_NAME
    | DATA | DATETIME_INTERVAL_CODE
    | DATETIME_INTERVAL_PRECISION | DYNAMIC_FUNCTION
    | FORTRAN
    | LENGTH
    | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MORE | MUMPS
    | NAME | NULLABLE | NUMBER
    | PASCAL | PLI
    | REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE
    | ROW_COUNT
    | SCALE | SCHEMA_NAME | SERIALIZABLE | SERVER_NAME | SUBCLASS_ORIGIN
    | TABLE_NAME | TYPE
    | UNCOMMITTED | UNNAMED
<unsigned numeric literal> ::=
      <exact numeric literal>
    | <approximate numeric literal>
<exact numeric literal> ::=
      <unsigned integer> [ <period> [ <unsigned integer> ] ]
    | <period> <unsigned integer>
<unsigned integer> ::= <digit>...
<approximate numeric literal> ::= <mantissa> E <exponent>
<mantissa> ::= <exact numeric literal>
<exponent> ::= <signed integer>
<signed integer> ::= [ <sign> ] <unsigned integer>
<sign> ::= <plus sign> | <minus sign>
<national character string literal> ::=
    N <quote> [ <character representation>... ] <quote>
      [ { <separator>... <quote> [ <character representation>... ] <quote> }... ]
<character representation> ::=
      <nonquote character>
    | <quote symbol>
<quote symbol> ::= <quote><quote>
<separator> ::= { <comment> | <space> | <newline> }...
<comment> ::=
    <comment introducer> [ <comment character>... ] <newline>
<comment introducer> ::= <minus sign><minus sign>[<minus sign>...]
<comment character> ::=
      <nonquote character>
    | <quote>
<bit string literal> ::=
    B <quote> [ <bit>... ] <quote>
      [ { <separator>... <quote> [ <bit>... ] <quote> }... ]
<bit> ::= 0 | 1
<hex string literal> ::=
    X <quote> [ <hexit>... ] <quote>
      [ { <separator>... <quote> [ <hexit>... ] <quote> }... ]
<hexit> ::= <digit> | A | B | C | D | E | F | a | b | c | d | e | f
<delimiter token> ::=
      <character string literal>
    | <date string>
    | <time string>
    | <timestamp string>
    | <interval string>
    | <delimited identifier>
    | <SQL special character>
    | <not equals operator>
    | <greater than or equals operator>
    | <less than or equals operator>
    | <concatenation operator>
    | <double period>
    | <left bracket>
    | <right bracket>
<character string literal> ::=
    [ <introducer><character set specification> ]
    <quote> [ <character representation>... ] <quote>
      [ { <separator>... <quote> [ <character representation>... ] <quote> }... ]
<introducer> ::= <underscore>
<character set specification> ::=
      <standard character repertoire name>
    | <implementation-defined character repertoire name>
    | <user-defined character repertoire name>
    | <standard universal character form-of-use name>
    | <implementation-defined universal character form-of-use name>
<standard character repertoire name> ::= <character set name>
<character set name> ::= [ <schema name> <period> ]
      <SQL language identifier>
<schema name> ::=
    [ <catalog name> <period> ] <unqualified schema name>
<catalog name> ::= <identifier>
<identifier> ::=
    [ <introducer><character set specification> ] <actual identifier>
<actual identifier> ::=
      <regular identifier>
    | <delimited identifier>
<delimited identifier> ::=
    <double quote> <delimited identifier body> <double quote>
<delimited identifier body> ::= <delimited identifier part>...
<delimited identifier part> ::=
      <nondoublequote character>
    | <doublequote symbol>
<doublequote symbol> ::= <double quote><double quote>
<unqualified schema name> ::= <identifier>
<SQL language identifier> ::=
    <SQL language identifier start>
       [ { <underscore> | <SQL language identifier part> }... ]
<SQL language identifier start> ::= <simple Latin letter>
<SQL language identifier part> ::=
      <simple Latin letter>
    | <digit>
<implementation-defined character repertoire name> ::=
    <character set name>
<user-defined character repertoire name> ::= <character set name>
<standard universal character form-of-use name> ::=
    <character set name>
<implementation-defined universal character form-of-use name> ::=
    <character set name>
<date string> ::=
    <quote> <date value> <quote>
<date value> ::=
    <years value> <minus sign> <months value>
        <minus sign> <days value>
<years value> ::= <datetime value>
<datetime value> ::= <unsigned integer>
<months value> ::= <datetime value>
<days value> ::= <datetime value>
<time string> ::=
    <quote> <time value> [ <time zone interval> ] <quote>
<time value> ::=
    <hours value> <colon> <minutes value> <colon> <seconds value>
<hours value> ::= <datetime value>
<minutes value> ::= <datetime value>
<seconds value> ::=
      <seconds integer value> [ <period> [ <seconds fraction> ] ]
<seconds integer value> ::= <unsigned integer>
<seconds fraction> ::= <unsigned integer>
<time zone interval> ::=
    <sign> <hours value> <colon> <minutes value>
<timestamp string> ::=
    <quote> <date value> <space> <time value>
        [ <time zone interval> ] <quote>
<interval string> ::=
    <quote> { <year-month literal> | <day-time literal> } <quote>
<year-month literal> ::=
      <years value>
    | [ <years value> <minus sign> ] <months value>
<day-time literal> ::=
      <day-time interval>
    | <time interval>
<day-time interval> ::=
    <days value>
      [ <space> <hours value> [ <colon> <minutes value>
        [ <colon> <seconds value> ] ] ]
<time interval> ::=
      <hours value> [ <colon> <minutes value> [ <colon> <seconds value> ] ]
    | <minutes value> [ <colon> <seconds value> ]
    | <seconds value>
<not equals operator> ::= <>
<greater than or equals operator> ::= >=
<less than or equals operator> ::= <=
<concatenation operator> ::= ||
<double period> ::= ..
<module> ::=
    <module name clause>
    <language clause>
    <module authorization clause>
    [ <temporary table declaration>... ]
    <module contents>...
<module name clause> ::=
    MODULE [ <module name> ]
      [ <module character set specification> ]
<module name> ::= <identifier>
<module character set specification> ::=
    NAMES ARE <character set specification>
<language clause> ::=
    LANGUAGE <language name>
<language name> ::=
    ADA | C | COBOL | FORTRAN | MUMPS | PASCAL | PLI
<module authorization clause> ::=
      SCHEMA <schema name>
    | AUTHORIZATION <module authorization identifier>
    | SCHEMA <schema name>
          AUTHORIZATION <module authorization identifier>
<module authorization identifier> ::=
    <authorization identifier>
<authorization identifier> ::= <identifier>
<temporary table declaration> ::=
    DECLARE LOCAL TEMPORARY TABLE
        <qualified local table name>
      <table element list>
      [ ON COMMIT { PRESERVE | DELETE } ROWS ]
<qualified local table name> ::=
    MODULE <period> <local table name>
<local table name> ::= <qualified identifier>
<qualified identifier> ::= <identifier>
<table element list> ::=
      <left paren> <table element> [ { <comma> <table element> }... ] <right paren>
<table element> ::=
      <column definition>
    | <table constraint definition>
<column definition> ::=
    <column name> { <data type> | <domain name> }
    [ <default clause> ]
    [ <column constraint definition>... ]
    [ <collate clause> ]
<column name> ::= <identifier>
<data type> ::=
      <character string type>
           [ CHARACTER SET <character set specification> ]
    | <national character string type>
    | <bit string type>
    | <numeric type>
    | <datetime type>
    | <interval type>
<character string type> ::=
      CHARACTER [ <left paren> <length> <right paren> ]
    | CHAR [ <left paren> <length> <right paren> ]
    | CHARACTER VARYING <left paren> <length> <right paren>
    | CHAR VARYING <left paren> <length> <right paren>
    | VARCHAR <left paren> <length> <right paren>
<length> ::= <unsigned integer>
<national character string type> ::=
      NATIONAL CHARACTER [ <left paren> <length> <right paren> ]
    | NATIONAL CHAR [ <left paren> <length> <right paren> ]
    | NCHAR [ <left paren> <length> <right paren> ]
    | NATIONAL CHARACTER VARYING <left paren> <length> <right paren>
    | NATIONAL CHAR VARYING <left paren> <length> <right paren>
    | NCHAR VARYING <left paren> <length> <right paren>
<bit string type> ::=
      BIT [ <left paren> <length> <right paren> ]
    | BIT VARYING <left paren> <length> <right paren>
<numeric type> ::=
      <exact numeric type>
    | <approximate numeric type>
<exact numeric type> ::=
      NUMERIC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
    | DECIMAL [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
    | DEC [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
    | INTEGER
    | INT
    | SMALLINT
<precision> ::= <unsigned integer>
<scale> ::= <unsigned integer>
<approximate numeric type> ::=
      FLOAT [ <left paren> <precision> <right paren> ]
    | REAL
    | DOUBLE PRECISION
<datetime type> ::=
      DATE
    | TIME [ <left paren> <time precision> <right paren> ]
          [ WITH TIME ZONE ]
    | TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
          [ WITH TIME ZONE ]
<time precision> ::= <time fractional seconds precision>
<time fractional seconds precision> ::= <unsigned integer>
<timestamp precision> ::= <time fractional seconds precision>
<interval type> ::= INTERVAL <interval qualifier>
<interval qualifier> ::=
      <start field> TO <end field>
    | <single datetime field>
<start field> ::=
    <non-second datetime field>
        [ <left paren> <interval leading field precision> <right paren> ]
<non-second datetime field> ::= YEAR | MONTH | DAY | HOUR
    | MINUTE
<interval leading field precision> ::= <unsigned integer>
<end field> ::=
      <non-second datetime field>
    | SECOND [ <left paren> <interval fractional seconds precision> <right paren> ]
<interval fractional seconds precision> ::= <unsigned integer>
<single datetime field> ::=
      <non-second datetime field>
          [ <left paren> <interval leading field precision> <right paren> ]
    | SECOND [ <left paren> <interval leading field precision>
          [ <comma> <interval fractional seconds precision> ] <right paren> ]
<domain name> ::= <qualified name>
<qualified name> ::=
    [ <schema name> <period> ] <qualified identifier>
<default clause> ::=
      DEFAULT <default option>
<default option> ::=
      <literal>
    | <datetime value function>
    | USER
    | CURRENT_USER
    | SESSION_USER
    | SYSTEM_USER
    | NULL
<literal> ::=
      <signed numeric literal>
    | <general literal>
<signed numeric literal> ::=
    [ <sign> ] <unsigned numeric literal>
<general literal> ::=
      <character string literal>
    | <national character string literal>
    | <bit string literal>
    | <hex string literal>
    | <datetime literal>
    | <interval literal>
<datetime literal> ::=
      <date literal>
    | <time literal>
    | <timestamp literal>
<date literal> ::=
    DATE <date string>
<time literal> ::=
    TIME <time string>
<timestamp literal> ::=
    TIMESTAMP <timestamp string>
<interval literal> ::=
    INTERVAL [ <sign> ] <interval string> <interval qualifier>
<datetime value function> ::=
      <current date value function>
    | <current time value function>
    | <current timestamp value function>
<current date value function> ::= CURRENT_DATE
<current time value function> ::=
      CURRENT_TIME [ <left paren> <time precision> <right paren> ]
<current timestamp value function> ::=
      CURRENT_TIMESTAMP [ <left paren> <timestamp precision> <right paren> ]
<column constraint definition> ::=
    [ <constraint name definition> ]
    <column constraint>
      [ <constraint attributes> ]
<constraint name definition> ::= CONSTRAINT <constraint name>
<constraint name> ::= <qualified name>
<column constraint> ::=
      NOT NULL
    | <unique specification>
    | <references specification>
    | <check constraint definition>
<unique specification> ::=
    UNIQUE | PRIMARY KEY
<references specification> ::=
    REFERENCES <referenced table and columns>
      [ MATCH <match type> ]
      [ <referential triggered action> ]
<referenced table and columns> ::=
     <table name> [ <left paren> <reference column list> <right paren> ]
<table name> ::=
      <qualified name>
    | <qualified local table name>
<reference column list> ::= <column name list>
<column name list> ::=
    <column name> [ { <comma> <column name> }... ]
<match type> ::=
      FULL
    | PARTIAL
<referential triggered action> ::=
      <update rule> [ <delete rule> ]
    | <delete rule> [ <update rule> ]
<update rule> ::= ON UPDATE <referential action>
<referential action> ::=
      CASCADE
    | SET NULL
    | SET DEFAULT
    | NO ACTION
<delete rule> ::= ON DELETE <referential action>
<check constraint definition> ::=
    CHECK
        <left paren> <search condition> <right paren>
<search condition> ::=
      <boolean term>
    | <search condition> OR <boolean term>
<boolean term> ::=
      <boolean factor>
    | <boolean term> AND <boolean factor>
<boolean factor> ::=
    [ NOT ] <boolean test>
<boolean test> ::=
    <boolean primary> [ IS [ NOT ]
          <truth value> ]
<boolean primary> ::=
      <predicate>
    | <left paren> <search condition> <right paren>
<predicate> ::=
      <comparison predicate>
    | <between predicate>
    | <in predicate>
    | <like predicate>
    | <null predicate>
    | <quantified comparison predicate>
    | <exists predicate>
    | <unique predicate>
    | <match predicate>
    | <overlaps predicate>
<comparison predicate> ::=
    <row value constructor> <comp op>
        <row value constructor>
<row value constructor> ::=
       <row value constructor element>
    | <left paren> <row value constructor list> <right paren>
    | <row subquery>
<row value constructor element> ::=
      <value expression>
    | <null specification>
    | <default specification>
<value expression> ::=
      <numeric value expression>
    | <string value expression>
    | <datetime value expression>
    | <interval value expression>
<numeric value expression> ::=
      <term>
    | <numeric value expression> <plus sign> <term>
    | <numeric value expression> <minus sign> <term>
<term> ::=
      <factor>
    | <term> <asterisk> <factor>
    | <term> <solidus> <factor>
<factor> ::=
    [ <sign> ] <numeric primary>
<numeric primary> ::=
      <value expression primary>
    | <numeric value function>
<value expression primary> ::=
      <unsigned value specification>
    | <column reference>
    | <set function specification>
    | <scalar subquery>
    | <case expression>
    | <left paren> <value expression> <right paren>
    | <cast specification>
<unsigned value specification> ::=
      <unsigned literal>
    | <general value specification>
<unsigned literal> ::=
      <unsigned numeric literal>
    | <general literal>
<general value specification> ::=
      <parameter specification>
    | <dynamic parameter specification>
    | <variable specification>
    | USER
    | CURRENT_USER
    | SESSION_USER
    | SYSTEM_USER
    | VALUE
<parameter specification> ::=
    <parameter name> [ <indicator parameter> ]
<parameter name> ::= <colon> <identifier>
<indicator parameter> ::=
    [ INDICATOR ] <parameter name>
<dynamic parameter specification> ::= <question mark>
<variable specification> ::=
    <embedded variable name> [ <indicator variable> ]
<embedded variable name> ::=
    <colon><host identifier>
<host identifier> ::=
      <Ada host identifier>
    | <C host identifier>
    | <COBOL host identifier>
    | <Fortran host identifier>
    | <MUMPS host identifier>
    | <Pascal host identifier>
    | <PL/I host identifier>
<indicator variable> ::=
    [ INDICATOR ] <embedded variable name>
<column reference> ::= [ <qualifier> <period> ] <column name>
<qualifier> ::=
      <table name>
    | <correlation name>
<correlation name> ::= <identifier>
<set function specification> ::=
      COUNT <left paren> <asterisk> <right paren>
    | <general set function>
<general set function> ::=
      <set function type>
          <left paren> [ <set quantifier> ] <value expression> <right paren>
<set function type> ::=
    AVG | MAX | MIN | SUM | COUNT
<set quantifier> ::= DISTINCT | ALL
<scalar subquery> ::= <subquery>
<subquery> ::= <left paren> <query expression> <right paren>
<query expression> ::=
      <non-join query expression>
    | <joined table>
<non-join query expression> ::=
      <non-join query term>
    | <query expression> UNION  [ ALL ]
          [ <corresponding spec> ] <query term>
    | <query expression> EXCEPT [ ALL ]
          [ <corresponding spec> ] <query term>
<non-join query term> ::=
      <non-join query primary>
    | <query term> INTERSECT [ ALL ]
          [ <corresponding spec> ] <query primary>
<non-join query primary> ::=
      <simple table>
    | <left paren> <non-join query expression> <right paren>
<simple table> ::=
      <query specification>
    | <table value constructor>
    | <explicit table>
<query specification> ::=
    SELECT [ <set quantifier> ] <select list> <table expression>
<select list> ::=
      <asterisk>
    | <select sublist> [ { <comma> <select sublist> }... ]
<select sublist> ::=
      <derived column>
    | <qualifier> <period> <asterisk>
<derived column> ::= <value expression> [ <as clause> ]
<as clause> ::= [ AS ] <column name>
<table expression> ::=
    <from clause>
    [ <where clause> ]
    [ <group by clause> ]
    [ <having clause> ]
<from clause> ::= FROM <table reference>
    [ { <comma> <table reference> }... ]
<table reference> ::=
      <table name> [ [ AS ] <correlation name>
          [ <left paren> <derived column list> <right paren> ] ]
    | <derived table> [ AS ] <correlation name>
          [ <left paren> <derived column list> <right paren> ]
    | <joined table>
<derived column list> ::= <column name list>
<derived table> ::= <table subquery>
<table subquery> ::= <subquery>
<joined table> ::=
      <cross join>
    | <qualified join>
    | <left paren> <joined table> <right paren>
<cross join> ::=
    <table reference> CROSS JOIN <table reference>
<qualified join> ::=
    <table reference> [ NATURAL ] [ <join type> ] JOIN
      <table reference> [ <join specification> ]
<join type> ::=
      INNER
    | <outer join type> [ OUTER ]
    | UNION
<outer join type> ::=
      LEFT
    | RIGHT
    | FULL
<join specification> ::=
      <join condition>
    | <named columns join>
<join condition> ::= ON <search condition>
<named columns join> ::=
    USING <left paren> <join column list> <right paren>
<join column list> ::= <column name list>
<where clause> ::= WHERE <search condition>
<group by clause> ::=
    GROUP BY <grouping column reference list>
<grouping column reference list> ::=
    <grouping column reference>
        [ { <comma> <grouping column reference> }... ]
<grouping column reference> ::=
    <column reference> [ <collate clause> ]
<collate clause> ::= COLLATE <collation name>
<collation name> ::= <qualified name>
<having clause> ::= HAVING <search condition>
<table value constructor> ::=
    VALUES <table value constructor list>
<table value constructor list> ::=
    <row value constructor> [ { <comma> <row value constructor> }... ]
<explicit table> ::= TABLE <table name>
<query term> ::=
      <non-join query term>
    | <joined table>
<corresponding spec> ::=
    CORRESPONDING [ BY <left paren> <corresponding column list> <right paren> ]
<corresponding column list> ::= <column name list>
<query primary> ::=
      <non-join query primary>
    | <joined table>
<case expression> ::=
      <case abbreviation>
    | <case specification>
<case abbreviation> ::=
      NULLIF <left paren> <value expression> <comma>
            <value expression> <right paren>
    | COALESCE <left paren> <value expression>
            { <comma> <value expression> }... <right paren>
<case specification> ::=
      <simple case>
    | <searched case>
<simple case> ::=
    CASE <case operand>
      <simple when clause>...
      [ <else clause> ]
    END
<case operand> ::= <value expression>
<simple when clause> ::= WHEN <when operand> THEN <result>
<when operand> ::= <value expression>
<result> ::= <result expression> | NULL
<result expression> ::= <value expression>
<else clause> ::= ELSE <result>
<searched case> ::=
    CASE
      <searched when clause>...
      [ <else clause> ]
    END
<searched when clause> ::= WHEN <search condition> THEN <result>
<cast specification> ::=
    CAST <left paren> <cast operand> AS
        <cast target> <right paren>
<cast operand> ::=
      <value expression>
    | NULL
<cast target> ::=
      <domain name>
    | <data type>
<numeric value function> ::=
      <position expression>
    | <extract expression>
    | <length expression>
<position expression> ::=
    POSITION <left paren> <character value expression>
        IN <character value expression> <right paren>
<character value expression> ::=
      <concatenation>
    | <character factor>
<concatenation> ::=
    <character value expression> <concatenation operator>
        <character factor>
<character factor> ::=
    <character primary> [ <collate clause> ]
<character primary> ::=
      <value expression primary>
    | <string value function>
<string value function> ::=
      <character value function>
    | <bit value function>
<character value function> ::=
      <character substring function>
    | <fold>
    | <form-of-use conversion>
    | <character translation>
    | <trim function>
<character substring function> ::=
    SUBSTRING <left paren> <character value expression> FROM <start position>
                [ FOR <string length> ] <right paren>
<start position> ::= <numeric value expression>
<string length> ::= <numeric value expression>
<fold> ::= { UPPER | LOWER }
     <left paren> <character value expression> <right paren>
<form-of-use conversion> ::=
    CONVERT <left paren> <character value expression>
        USING <form-of-use conversion name> <right paren>
<form-of-use conversion name> ::= <qualified name>
<character translation> ::=
    TRANSLATE <left paren> <character value expression>
        USING <translation name> <right paren>
<translation name> ::= <qualified name>
<trim function> ::=
    TRIM <left paren> <trim operands> <right paren>
<trim operands> ::=
    [ [ <trim specification> ] [ <trim character> ] FROM ] <trim source>
<trim specification> ::=
      LEADING
    | TRAILING
    | BOTH
<trim character> ::= <character value expression>
<trim source> ::= <character value expression>
<bit value function> ::=
    <bit substring function>
<bit substring function> ::=
    SUBSTRING <left paren> <bit value expression> FROM <start position>
        [ FOR <string length> ] <right paren>
<bit value expression> ::=
      <bit concatenation>
    | <bit factor>
<bit concatenation> ::=
    <bit value expression> <concatenation operator> <bit factor>
<bit factor> ::= <bit primary>
<bit primary> ::=
      <value expression primary>
    | <string value function>
<extract expression> ::=
    EXTRACT <left paren> <extract field>
        FROM <extract source> <right paren>
<extract field> ::=
      <datetime field>
    | <time zone field>
<datetime field> ::=
      <non-second datetime field>
    | SECOND
<time zone field> ::=
      TIMEZONE_HOUR
    | TIMEZONE_MINUTE
<extract source> ::=
      <datetime value expression>
    | <interval value expression>
<datetime value expression> ::=
      <datetime term>
    | <interval value expression> <plus sign> <datetime term>
    | <datetime value expression> <plus sign> <interval term>
    | <datetime value expression> <minus sign> <interval term>
<interval term> ::=
      <interval factor>
    | <interval term 2> <asterisk> <factor>
    | <interval term 2> <solidus> <factor>
    | <term> <asterisk> <interval factor>
<interval factor> ::=
    [ <sign> ] <interval primary>
<interval primary> ::=
      <value expression primary> [ <interval qualifier> ]
<interval term 2> ::= <interval term>
<interval value expression> ::=
      <interval term>
    | <interval value expression 1> <plus sign> <interval term 1>
    | <interval value expression 1> <minus sign> <interval term 1>
    | <left paren> <datetime value expression> <minus sign>
          <datetime term> <right paren> <interval qualifier>
<interval value expression 1> ::= <interval value expression>
<interval term 1> ::= <interval term>
<datetime term> ::=
      <datetime factor>
<datetime factor> ::=
      <datetime primary> [ <time zone> ]
<datetime primary> ::=
      <value expression primary>
    | <datetime value function>
<time zone> ::=
    AT <time zone specifier>
<time zone specifier> ::=
      LOCAL
    | TIME ZONE <interval value expression>
<length expression> ::=
      <char length expression>
    | <octet length expression>
    | <bit length expression>
<char length expression> ::=
    { CHAR_LENGTH | CHARACTER_LENGTH }
        <left paren> <string value expression> <right paren>
<string value expression> ::=
      <character value expression>
    | <bit value expression>
<octet length expression> ::=
    OCTET_LENGTH <left paren> <string value expression> <right paren>
<bit length expression> ::=
    BIT_LENGTH <left paren> <string value expression> <right paren>
<null specification> ::=
    NULL
<default specification> ::=
    DEFAULT
<row value constructor list> ::=
    <row value constructor element>
        [ { <comma> <row value constructor element> }... ]
<row subquery> ::= <subquery>
<comp op> ::=
      <equals operator>
    | <not equals operator>
    | <less than operator>
    | <greater than operator>
    | <less than or equals operator>
    | <greater than or equals operator>
<between predicate> ::=
    <row value constructor> [ NOT ] BETWEEN
      <row value constructor> AND <row value constructor>
<in predicate> ::=
    <row value constructor>
      [ NOT ] IN <in predicate value>
<in predicate value> ::=
      <table subquery>
    | <left paren> <in value list> <right paren>
<in value list> ::=
    <value expression> { <comma> <value expression> }...
<like predicate> ::=
    <match value> [ NOT ] LIKE <pattern>
      [ ESCAPE <escape character> ]
<match value> ::= <character value expression>
<pattern> ::= <character value expression>
<escape character> ::= <character value expression>
<null predicate> ::= <row value constructor>
    IS [ NOT ] NULL
<quantified comparison predicate> ::=
    <row value constructor> <comp op> <quantifier> <table subquery>
<quantifier> ::= <all> | <some>
<all> ::= ALL
<some> ::= SOME | ANY
<exists predicate> ::= EXISTS <table subquery>
<unique predicate> ::= UNIQUE <table subquery>
<match predicate> ::=
    <row value constructor> MATCH [ UNIQUE ]
        [ PARTIAL | FULL ] <table subquery>
<overlaps predicate> ::=
    <row value constructor 1> OVERLAPS <row value constructor 2>
<row value constructor 1> ::= <row value constructor>
<row value constructor 2> ::= <row value constructor>
<truth value> ::=
      TRUE
    | FALSE
    | UNKNOWN
<constraint attributes> ::=
      <constraint check time> [ [ NOT ] DEFERRABLE ]
    | [ NOT ] DEFERRABLE [ <constraint check time> ]
<constraint check time> ::=
      INITIALLY DEFERRED
    | INITIALLY IMMEDIATE
<table constraint definition> ::=
    [ <constraint name definition> ]
    <table constraint> [ <constraint attributes> ]
<table constraint> ::=
      <unique constraint definition>
    | <referential constraint definition>
    | <check constraint definition>
<unique constraint definition> ::=
            <unique specification> even in SQL3)
    <unique specification>
      <left paren> <unique column list> <right paren>
<unique column list> ::= <column name list>
<referential constraint definition> ::=
    FOREIGN KEY
        <left paren> <referencing columns> <right paren>
      <references specification>
<referencing columns> ::=
    <reference column list>
<module contents> ::=
      <declare cursor>
    | <dynamic declare cursor>
    | <procedure>
<declare cursor> ::=
    DECLARE <cursor name> [ INSENSITIVE ] [ SCROLL ] CURSOR
      FOR <cursor specification>
<cursor name> ::= <identifier>
<cursor specification> ::=
    <query expression> [ <order by clause> ]
      [ <updatability clause> ]
<order by clause> ::=
    ORDER BY <sort specification list>
<sort specification list> ::=
    <sort specification> [ { <comma> <sort specification> }... ]
<sort specification> ::=
    <sort key> [ <collate clause> ] [ <ordering specification> ]
<sort key> ::=
      <column name>
    | <unsigned integer>
<ordering specification> ::= ASC | DESC
<updatability clause> ::=
    FOR
        { READ ONLY |
          UPDATE [ OF <column name list> ] }
<dynamic declare cursor> ::=
    DECLARE <cursor name> [ INSENSITIVE ] [ SCROLL ] CURSOR
        FOR <statement name>
<statement name> ::= <identifier>
<procedure> ::=
    PROCEDURE <procedure name>
        <parameter declaration list> <semicolon>
      <SQL procedure statement> <semicolon>
<procedure name> ::= <identifier>
<parameter declaration list> ::=
      <left paren> <parameter declaration>
          [ { <comma> <parameter declaration> }... ] <right paren>
    | <parameter declaration>...
<parameter declaration> ::=
      <parameter name> <data type>
    | <status parameter>
<status parameter> ::=
    SQLCODE | SQLSTATE
<SQL procedure statement> ::=
      <SQL schema statement>
    | <SQL data statement>
    | <SQL transaction statement>
    | <SQL connection statement>
    | <SQL session statement>
    | <SQL dynamic statement>
    | <SQL diagnostics statement>
<SQL schema statement> ::=
      <SQL schema definition statement>
    | <SQL schema manipulation statement>
<SQL schema definition statement> ::=
      <schema definition>
    | <table definition>
    | <view definition>
    | <grant statement>
    | <domain definition>
    | <character set definition>
    | <collation definition>
    | <translation definition>
    | <assertion definition>
<schema definition> ::=
    CREATE SCHEMA <schema name clause>
      [ <schema character set specification> ]
      [ <schema element>... ]
<schema name clause> ::=
      <schema name>
    | AUTHORIZATION <schema authorization identifier>
    | <schema name> AUTHORIZATION
          <schema authorization identifier>
<schema authorization identifier> ::=
    <authorization identifier>
<schema character set specification> ::=
    DEFAULT CHARACTER
        SET <character set specification>
<schema element> ::=
      <domain definition>
    | <table definition>
    | <view definition>
    | <grant statement>
    | <assertion definition>
    | <character set definition>
    | <collation definition>
    | <translation definition>
<domain definition> ::=
    CREATE DOMAIN <domain name>
        [ AS ] <data type>
      [ <default clause> ]
      [ <domain constraint>... ]
      [ <collate clause> ]
<domain constraint> ::=
    [ <constraint name definition> ]
    <check constraint definition> [ <constraint attributes> ]
<table definition> ::=
    CREATE [ { GLOBAL | LOCAL } TEMPORARY ] TABLE
        <table name>
      <table element list>
      [ ON COMMIT { DELETE | PRESERVE } ROWS ]
<view definition> ::=
    CREATE VIEW <table name> [ <left paren> <view column list>
                                  <right paren> ]
      AS <query expression>
      [ WITH [ <levels clause> ] CHECK OPTION ]
<view column list> ::= <column name list>
<levels clause> ::=
    CASCADED | LOCAL
<grant statement> ::=
   GRANT <privileges> ON <object name>
     TO <grantee> [ { <comma> <grantee> }... ]
       [ WITH GRANT OPTION ]
<privileges> ::=
      ALL PRIVILEGES
    | <action list>
<action list> ::= <action> [ { <comma> <action> }... ]
<action> ::=
      SELECT
    | DELETE
    | INSERT [ <left paren> <privilege column list> <right paren> ]
    | UPDATE [ <left paren> <privilege column list> <right paren> ]
    | REFERENCES [ <left paren> <privilege column list> <right paren> ]
    | USAGE
<privilege column list> ::= <column name list>
<object name> ::=
      [ TABLE ] <table name>
    | DOMAIN <domain name>
    | COLLATION <collation name>
    | CHARACTER SET <character set name>
    | TRANSLATION <translation name>
<grantee> ::=
      PUBLIC
    | <authorization identifier>
<assertion definition> ::=
    CREATE ASSERTION <constraint name> <assertion check>
      [ <constraint attributes> ]
<assertion check> ::=
    CHECK
        <left paren> <search condition> <right paren>
<character set definition> ::=
    CREATE CHARACTER SET <character set name>
        [ AS ]
      <character set source>
      [ <collate clause> | <limited collation definition> ]
<character set source> ::=
      GET <existing character set name>
<existing character set name> ::=
      <standard character repertoire name>
    | <implementation-defined character repertoire name>
    | <schema character set name>
<schema character set name> ::= <character set name>
<limited collation definition> ::=
    COLLATION FROM <collation source>
<collation source> ::=
      <collating sequence definition>
    | <translation collation>
<collating sequence definition> ::=
      <external collation>
    | <schema collation name>
    | DESC <left paren> <collation name> <right paren>
    | DEFAULT
<external collation> ::=
    EXTERNAL <left paren> <quote> <external collation name> <quote> <right paren>
<external collation name> ::=
      <standard collation name>
    | <implementation-defined collation name>
<standard collation name> ::= <collation name>
<implementation-defined collation name> ::= <collation name>
<schema collation name> ::= <collation name>
<translation collation> ::=
    TRANSLATION <translation name>
        [ THEN COLLATION <collation name> ]
<collation definition> ::=
    CREATE COLLATION <collation name> FOR
        <character set specification>
      FROM <collation source>
        [ <pad attribute> ]
<pad attribute> ::=
      NO PAD
    | PAD SPACE
<translation definition> ::=
    CREATE TRANSLATION <translation name>
      FOR <source character set specification>
        TO <target character set specification>
      FROM <translation source>
<source character set specification> ::= <character set specification>
<target character set specification> ::= <character set specification>
<translation source> ::=
      <translation specification>
<translation specification> ::=
      <external translation>
    | IDENTITY
    | <schema translation name>
<external translation> ::=
    EXTERNAL <left paren> <quote> <external translation name> <quote> <right paren>
<external translation name> ::=
      <standard translation name>
    | <implementation-defined translation name>
<standard translation name> ::= <translation name>
<implementation-defined translation name> ::= <translation name>
<schema translation name> ::= <translation name>
<SQL schema manipulation statement> ::=
      <drop schema statement>
    | <alter table statement>
    | <drop table statement>
    | <drop view statement>
    | <revoke statement>
    | <alter domain statement>
    | <drop domain statement>
    | <drop character set statement>
    | <drop collation statement>
    | <drop translation statement>
    | <drop assertion statement>
<drop schema statement> ::=
    DROP SCHEMA <schema name> <drop behavior>
<drop behavior> ::= CASCADE | RESTRICT
<alter table statement> ::=
    ALTER TABLE <table name> <alter table action>
<alter table action> ::=
      <add column definition>
    | <alter column definition>
    | <drop column definition>
    | <add table constraint definition>
    | <drop table constraint definition>
<add column definition> ::=
    ADD [ COLUMN ] <column definition>
<alter column definition> ::=
    ALTER [ COLUMN ] <column name> <alter column action>
<alter column action> ::=
      <set column default clause>
    | <drop column default clause>
<set column default clause> ::=
    SET <default clause>
<drop column default clause> ::=
    DROP DEFAULT
<drop column definition> ::=
    DROP [ COLUMN ] <column name> <drop behavior>
<add table constraint definition> ::=
    ADD <table constraint definition>
<drop table constraint definition> ::=
    DROP CONSTRAINT <constraint name> <drop behavior>
<drop table statement> ::=
    DROP TABLE <table name> <drop behavior>
<drop view statement> ::=
    DROP VIEW <table name> <drop behavior>
<revoke statement> ::=
    REVOKE [ GRANT OPTION FOR ]
        <privileges>
        ON <object name>
      FROM <grantee> [ { <comma> <grantee> }... ] <drop behavior>
<alter domain statement> ::=
    ALTER DOMAIN <domain name> <alter domain action>
<alter domain action> ::=
      <set domain default clause>
    | <drop domain default clause>
    | <add domain constraint definition>
    | <drop domain constraint definition>
<set domain default clause> ::= SET <default clause>
<drop domain default clause> ::= DROP DEFAULT
<add domain constraint definition> ::=
    ADD <domain constraint>
<drop domain constraint definition> ::=
    DROP CONSTRAINT <constraint name>
<drop domain statement> ::=
    DROP DOMAIN <domain name> <drop behavior>
<drop character set statement> ::=
    DROP CHARACTER SET <character set name>
<drop collation statement> ::=
    DROP COLLATION <collation name>
<drop translation statement> ::=
    DROP TRANSLATION <translation name>
<drop assertion statement> ::=
    DROP ASSERTION <constraint name>
<SQL data statement> ::=
      <open statement>
    | <fetch statement>
    | <close statement>
    | <select statement: single row>
    | <SQL data change statement>
<open statement> ::=
    OPEN <cursor name>
<fetch statement> ::=
    FETCH [ [ <fetch orientation> ] FROM ]
      <cursor name> INTO <fetch target list>
<fetch orientation> ::=
      NEXT
    | PRIOR
    | FIRST
    | LAST
    | { ABSOLUTE | RELATIVE } <simple value specification>
<simple value specification> ::=
      <parameter name>
    | <embedded variable name>
    | <literal>
<fetch target list> ::=
    <target specification> [ { <comma> <target specification> }... ]
<target specification> ::=
      <parameter specification>
    | <variable specification>
<close statement> ::=
    CLOSE <cursor name>
<select statement: single row> ::=
    SELECT [ <set quantifier> ] <select list>
      INTO <select target list>
        <table expression>
<select target list> ::=
    <target specification> [ { <comma> <target specification> }... ]
<SQL data change statement> ::=
      <delete statement: positioned>
    | <delete statement: searched>
    | <insert statement>
    | <update statement: positioned>
    | <update statement: searched>
<delete statement: positioned> ::=
    DELETE FROM <table name>
      WHERE CURRENT OF <cursor name>
<delete statement: searched> ::=
    DELETE FROM <table name>
      [ WHERE <search condition> ]
<insert statement> ::=
    INSERT INTO <table name>
      <insert columns and source>
<insert columns and source> ::=
      [ <left paren> <insert column list> <right paren> ]
            <query expression>
    | DEFAULT VALUES
<insert column list> ::= <column name list>
<update statement: positioned> ::=
    UPDATE <table name>
      SET <set clause list>
        WHERE CURRENT OF <cursor name>
<set clause list> ::=
    <set clause> [ { <comma> <set clause> }... ]
<set clause> ::=
    <object column> <equals operator> <update source>
<object column> ::= <column name>
<update source> ::=
      <value expression>
    | <null specification>
    | DEFAULT
<update statement: searched> ::=
    UPDATE <table name>
      SET <set clause list>
      [ WHERE <search condition> ]
<SQL transaction statement> ::=
      <set transaction statement>
    | <set constraints mode statement>
    | <commit statement>
    | <rollback statement>
<set transaction statement> ::=
    SET TRANSACTION <transaction mode>
        [ { <comma> <transaction mode> }... ]
<transaction mode> ::=
      <isolation level>
    | <transaction access mode>
    | <diagnostics size>
<isolation level> ::=
    ISOLATION LEVEL <level of isolation>
<level of isolation> ::=
      READ UNCOMMITTED
    | READ COMMITTED
    | REPEATABLE READ
    | SERIALIZABLE
<transaction access mode> ::=
      READ ONLY
    | READ WRITE
<diagnostics size> ::=
    DIAGNOSTICS SIZE <number of conditions>
<number of conditions> ::= <simple value specification>
<set constraints mode statement> ::=
    SET CONSTRAINTS <constraint name list>
        { DEFERRED | IMMEDIATE }
<constraint name list> ::=
      ALL
    | <constraint name> [ { <comma> <constraint name> }... ]
<commit statement> ::=
    COMMIT [ WORK ]
<rollback statement> ::=
    ROLLBACK [ WORK ]
<SQL connection statement> ::=
      <connect statement>
    | <set connection statement>
    | <disconnect statement>
<connect statement> ::=
    CONNECT TO <connection target>
<connection target> ::=
      <SQL-server name>
        [ AS <connection name> ]
          correspondence with Tony Gordon)
        [ USER <user name> ]
    | DEFAULT
<SQL-server name> ::= <simple value specification>
<connection name> ::= <simple value specification>
<user name> ::= <simple value specification>
<set connection statement> ::=
    SET CONNECTION <connection object>
<connection object> ::=
      DEFAULT
    | <connection name>
<disconnect statement> ::=
    DISCONNECT <disconnect object>
<disconnect object> ::=
      <connection object>
    | ALL
    | CURRENT
<SQL session statement> ::=
      <set catalog statement>
    | <set schema statement>
    | <set names statement>
    | <set session authorization identifier statement>
    | <set local time zone statement>
<set catalog statement> ::=
    SET CATALOG <value specification>
<value specification> ::=
      <literal>
    | <general value specification>
<set schema statement> ::=
    SET SCHEMA <value specification>
<set names statement> ::=
    SET NAMES <value specification>
<set session authorization identifier statement> ::=
    SET SESSION AUTHORIZATION
        <value specification>
<set local time zone statement> ::=
    SET TIME ZONE
        <set time zone value>
<set time zone value> ::=
      <interval value expression>
    | LOCAL
<SQL dynamic statement> ::=
      <system descriptor statement>
    | <prepare statement>
    | <deallocate prepared statement>
    | <describe statement>
    | <execute statement>
    | <execute immediate statement>
    | <SQL dynamic data statement>
<system descriptor statement> ::=
      <allocate descriptor statement>
    | <deallocate descriptor statement>
    | <set descriptor statement>
    | <get descriptor statement>
<allocate descriptor statement> ::=
    ALLOCATE DESCRIPTOR <descriptor name>
       [ WITH MAX <occurrences> ]
<descriptor name> ::=
    [ <scope option> ] <simple value specification>
<scope option> ::=
      GLOBAL
    | LOCAL
<occurrences> ::= <simple value specification>
<deallocate descriptor statement> ::=
    DEALLOCATE DESCRIPTOR <descriptor name>
<set descriptor statement> ::=
    SET DESCRIPTOR <descriptor name>
        <set descriptor information>
<set descriptor information> ::=
      <set count>
    | VALUE <item number>
        <set item information> [ { <comma> <set item information> }... ]
<set count> ::=
    COUNT <equals operator> <simple value specification 1>
<simple value specification 1> ::= <simple value specification>
<item number> ::= <simple value specification>
<set item information> ::=
    <descriptor item name> <equals operator> <simple value specification 2>
<descriptor item name> ::=
      TYPE
    | LENGTH
    | OCTET_LENGTH
    | RETURNED_LENGTH
    | RETURNED_OCTET_LENGTH
    | PRECISION
    | SCALE
    | DATETIME_INTERVAL_CODE
    | DATETIME_INTERVAL_PRECISION
    | NULLABLE
    | INDICATOR
    | DATA
    | NAME
    | UNNAMED
    | COLLATION_CATALOG
    | COLLATION_SCHEMA
    | COLLATION_NAME
    | CHARACTER_SET_CATALOG
    | CHARACTER_SET_SCHEMA
    | CHARACTER_SET_NAME
<simple value specification 2> ::= <simple value specification>
<item number> ::= <simple value specification>
<get descriptor statement> ::=
    GET DESCRIPTOR <descriptor name> <get descriptor information>
<get descriptor information> ::=
      <get count>
    | VALUE <item number>
        <get item information> [ { <comma> <get item information> }... ]
<get count> ::=
    <simple target specification 1> <equals operator>
         COUNT
<simple target specification 1> ::= <simple target specification>
<simple target specification> ::=
      <parameter name>
    | <embedded variable name>
<get item information> ::=
    <simple target specification 2> <equals operator> <descriptor item name>>
<simple target specification 2> ::= <simple target specification>
<prepare statement> ::=
    PREPARE <SQL statement name> FROM <SQL statement variable>
<SQL statement name> ::=
      <statement name>
    | <extended statement name>
<extended statement name> ::=
    [ <scope option> ] <simple value specification>
<SQL statement variable> ::= <simple value specification>
<deallocate prepared statement> ::=
    DEALLOCATE PREPARE <SQL statement name>
<describe statement> ::=
      <describe input statement>
    | <describe output statement>
<describe input statement> ::=
    DESCRIBE INPUT <SQL statement name> <using descriptor>
<using descriptor> ::=
    { USING | INTO } SQL DESCRIPTOR <descriptor name>
<describe output statement> ::=
    DESCRIBE [ OUTPUT ] <SQL statement name> <using descriptor>
<execute statement> ::=
    EXECUTE <SQL statement name>
      [ <result using clause> ]
      [ <parameter using clause> ]
<result using clause> ::= <using clause>
<using clause> ::=
      <using arguments>
    | <using descriptor>
<using arguments> ::=
    { USING | INTO } <argument> [ { <comma> <argument> }... ]
<argument> ::= <target specification>
<parameter using clause> ::= <using clause>
<execute immediate statement> ::=
    EXECUTE IMMEDIATE <SQL statement variable>
<SQL dynamic data statement> ::=
      <allocate cursor statement>
    | <dynamic open statement>
    | <dynamic fetch statement>
    | <dynamic close statement>
    | <dynamic delete statement: positioned>
    | <dynamic update statement: positioned>
<allocate cursor statement> ::=
    ALLOCATE <extended cursor name> [ INSENSITIVE ]
        [ SCROLL ] CURSOR
      FOR <extended statement name>
<extended cursor name> ::=
    [ <scope option> ] <simple value specification>
<dynamic open statement> ::=
    OPEN <dynamic cursor name> [ <using clause> ]
<dynamic cursor name> ::=
      <cursor name>
    | <extended cursor name>
<dynamic fetch statement> ::=
    FETCH [ [ <fetch orientation> ] FROM ] <dynamic cursor name>
        <using clause>
<dynamic close statement> ::=
    CLOSE <dynamic cursor name>
<dynamic delete statement: positioned> ::=
    DELETE FROM <table name>
      WHERE CURRENT OF
          <dynamic cursor name>
<dynamic update statement: positioned> ::=
    UPDATE <table name>
      SET <set clause>
          [ { <comma> <set clause> }... ]
        WHERE CURRENT OF
            <dynamic cursor name>
<SQL diagnostics statement> ::=
    <get diagnostics statement>
<get diagnostics statement> ::=
    GET DIAGNOSTICS <sql diagnostics information>
<sql diagnostics information> ::=
      <statement information>
    | <condition information>
<statement information> ::=
    <statement information item> [ { <comma> <statement information item> }... ]
<statement information item> ::=
    <simple target specification> <equals operator> <statement information item name>
<statement information item name> ::=
      NUMBER
    | MORE
    | COMMAND_FUNCTION
    | DYNAMIC_FUNCTION
    | ROW_COUNT
<condition information> ::=
    EXCEPTION <condition number>
      <condition information item> [ { <comma> <condition information item> }... ]
<condition number> ::= <simple value specification>
<condition information item> ::=
    <simple target specification> <equals operator> <condition information item name>
<condition information item name> ::=
      CONDITION_NUMBER
    | RETURNED_SQLSTATE
    | CLASS_ORIGIN
    | SUBCLASS_ORIGIN
    | SERVER_NAME
    | CONNECTION_NAME
    | CONSTRAINT_CATALOG
    | CONSTRAINT_SCHEMA
    | CONSTRAINT_NAME
    | CATALOG_NAME
    | SCHEMA_NAME
    | TABLE_NAME
    | COLUMN_NAME
    | CURSOR_NAME
    | MESSAGE_TEXT
    | MESSAGE_LENGTH
    | MESSAGE_OCTET_LENGTH
<embedded SQL host program> ::=
      <embedded SQL Ada program>
    | <embedded SQL C program>
    | <embedded SQL COBOL program>
    | <embedded SQL Fortran program>
    | <embedded SQL MUMPS program>
    | <embedded SQL Pascal program>
    | <embedded SQL PL/I program>
<embedded SQL declare section> ::=
      <embedded SQL begin declare>
        [ <embedded character set declaration> ]
        [ <host variable definition>... ]
      <embedded SQL end declare>
    | <embedded SQL MUMPS declare>
<embedded SQL begin declare> ::=
    <SQL prefix> BEGIN DECLARE SECTION
        [ <SQL terminator> ]
<SQL prefix> ::=
      EXEC SQL
    | <ampersand>SQL<left paren>
<SQL terminator> ::=
      END-EXEC
    | <semicolon>
    | <right paren>
<embedded character set declaration> ::=
    SQL NAMES ARE <character set specification>
<host variable definition> ::=
      <Ada variable definition>
    | <C variable definition>
    | <COBOL variable definition>
    | <Fortran variable definition>
    | <MUMPS variable definition>
    | <Pascal variable definition>
    | <PL/I variable definition>
<Ada variable definition> ::=
    <Ada host identifier> [ { <comma> <Ada host identifier> }... ] :
    <Ada type specification> [ <Ada initial value> ]
<Ada type specification> ::=
      <Ada qualified type specification>
    | <Ada unqualified type specification>
<Ada qualified type specification> ::=
      SQL_STANDARD.CHAR [ CHARACTER SET
         [ IS ] <character set specification> ]
          <left paren> 1 <double period> <length> <right paren>
    | SQL_STANDARD.BIT
          <left paren> 1 <double period> <length> <right paren>
    | SQL_STANDARD.SMALLINT
    | SQL_STANDARD.INT
    | SQL_STANDARD.REAL
    | SQL_STANDARD.DOUBLE_PRECISION
    | SQL_STANDARD.SQLCODE_TYPE
    | SQL_STANDARD.SQLSTATE_TYPE
    | SQL_STANDARD.INDICATOR_TYPE
<Ada unqualified type specification> ::=
      CHAR
          <left paren> 1 <double period> <length> <right paren>
    | BIT
          <left paren> 1 <double period> <length> <right paren>
    | SMALLINT
    | INT
    | REAL
    | DOUBLE_PRECISION
    | SQLCODE_TYPE
    | SQLSTATE_TYPE
    | INDICATOR_TYPE
<Ada initial value> ::=
    <Ada assignment operator> <character representation>...
<Ada assignment operator> ::= <colon><equals operator>
<C variable definition> ::=
      [ <C storage class> ]
      [ <C class modifier> ]
      <C variable specification>
    <semicolon>
<C storage class> ::=
      auto
    | extern
    | static
<C class modifier> ::= const | volatile
<C variable specification> ::=
      <C numeric variable>
    | <C character variable>
    | <C derived variable>
<C numeric variable> ::=
    { long | short | float | double }
      <C host identifier> [ <C initial value> ]
            [ { <comma> <C host identifier> [ <C initial value> ] }... ]
<C initial value> ::=
    <equals operator> <character representation>...
<C character variable> ::=
    char [ CHARACTER SET
             [ IS ] <character set specification> ]
      <C host identifier>
        <C array specification> [ <C initial value> ]
        [ { <comma> <C host identifier>
          <C array specification>
                 [ <C initial value> ] }... ]
<C array specification> ::=
    <left bracket> <length> <right bracket>
<C derived variable> ::=
      <C VARCHAR variable>
    | <C bit variable>
<C VARCHAR variable> ::=
    VARCHAR [ CHARACTER SET [ IS ]
        <character set specification> ]
        <C host identifier>
            <C array specification> [ <C initial value> ]
          [ { <comma> <C host identifier>
              <C array specification>
                      [ <C initial value> ] }... ]
<C bit variable> ::=
    BIT <C host identifier>
        <C array specification> [ <C initial value> ]
      [ { <comma> <C host identifier>
        <C array specification>
                   [ <C initial value> ] }... ]
<COBOL variable definition> ::=
    {01|77} <COBOL host identifier> <COBOL type specification>
      [ <character representation>... ] <period>
<COBOL type specification> ::=
      <COBOL character type>
    | <COBOL bit type>
    | <COBOL numeric type>
    | <COBOL integer type>
<COBOL character type> ::=
    [ CHARACTER SET [ IS ]
          <character set specification> ]
    { PIC | PICTURE } [ IS ] { X [ <left paren> <length> <right paren> ] }...
<COBOL bit type> ::=
    { PIC | PICTURE } [ IS ]
        { B [ <left paren> <length> <right paren> ] }...
<COBOL numeric type> ::=
    { PIC | PICTURE } [ IS ]
      S <COBOL nines specification>
    [ USAGE [ IS ] ] DISPLAY SIGN LEADING SEPARATE
<COBOL nines specification> ::=
      <COBOL nines> [ V [ <COBOL nines> ] ]
    | V <COBOL nines>
<COBOL nines> ::= { 9 [ <left paren> <length> <right paren> ] }...
<COBOL integer type> ::=
      <COBOL computational integer>
    | <COBOL binary integer>
<COBOL computational integer> ::=
    { PIC | PICTURE } [ IS ] S<COBOL nines>
      [ USAGE [ IS ] ] { COMP | COMPUTATIONAL }
<COBOL binary integer> ::=
    { PIC | PICTURE } [ IS ] S<COBOL nines>
      [ USAGE [ IS ] ] BINARY
<Fortran variable definition> ::=
    <Fortran type specification>
    <Fortran host identifier>
        [ { <comma> <Fortran host identifier> }... ]
<Fortran type specification> ::=
      CHARACTER [ <asterisk> <length> ]
          [ CHARACTER SET [ IS ]
                <character set specification> ]
    | BIT [ <asterisk> <length> ]
    | INTEGER
    | REAL
    | DOUBLE PRECISION
<MUMPS variable definition> ::=
    { <MUMPS numeric variable> | <MUMPS character variable> }
        <semicolon>
<MUMPS numeric variable> ::=
    <MUMPS type specification>
      <MUMPS host identifier> [ { <comma> <MUMPS host identifier> }... ]
<MUMPS type specification> ::=
      INT
    | DEC
          [ <left paren> <precision> [ <comma> <scale> ] <right paren> ]
    | REAL
<MUMPS character variable> ::=
    VARCHAR <MUMPS host identifier> <MUMPS length specification>
      [ { <comma> <MUMPS host identifier> <MUMPS length specification> }... ]
<MUMPS length specification> ::=
    <left paren> <length> <right paren>
<Pascal variable definition> ::=
    <Pascal host identifier> [ { <comma> <Pascal host identifier> }... ] <colon>
      <Pascal type specification> <semicolon>
<Pascal type specification> ::=
      PACKED ARRAY
          <left bracket> 1 <double period> <length> <right bracket>
        OF CHAR
          [ CHARACTER SET [ IS ]
                <character set specification> ]
    | PACKED ARRAY
          <left bracket> 1 <double period> <length> <right bracket>
        OF BIT
    | INTEGER
    | REAL
    | CHAR [ CHARACTER SET
                                [ IS ] <character set specification> ]
    | BIT
<PL/I variable definition> ::=
    {DCL | DECLARE}
        {   <PL/I host identifier>
          | <left paren> <PL/I host identifier>
                [ { <comma> <PL/I host identifier> }... ] <right paren> }
    <PL/I type specification>
    [ <character representation>... ] <semicolon>
<PL/I type specification> ::=
      { CHAR | CHARACTER } [ VARYING ]
          <left paren><length><right paren>
          [ CHARACTER SET
                [ IS ] <character set specification> ]
    | BIT [ VARYING ] <left paren><length><right paren>
    | <PL/I type fixed decimal> <left paren> <precision>
          [ <comma> <scale> ] <right paren>
    | <PL/I type fixed binary> [ <left paren> <precision> <right paren> ]
    | <PL/I type float binary> <left paren> <precision> <right paren>
<PL/I type fixed decimal> ::=
      { DEC | DECIMAL } FIXED
    | FIXED { DEC | DECIMAL }
<PL/I type fixed binary> ::=
      { BIN | BINARY } FIXED
    | FIXED { BIN | BINARY }
<PL/I type float binary> ::=
      { BIN | BINARY } FLOAT
    | FLOAT { BIN | BINARY }
<embedded SQL end declare> ::=
    <SQL prefix> END DECLARE SECTION
        [ <SQL terminator> ]
<embedded SQL MUMPS declare> ::=
    <SQL prefix>
      BEGIN DECLARE SECTION
        [ <embedded character set declaration> ]
        [ <host variable definition>... ]
      END DECLARE SECTION
    <SQL terminator>
<embedded SQL statement> ::=
    <SQL prefix>
      <statement or declaration>
    [ <SQL terminator> ]
<statement or declaration> ::=
      <declare cursor>
    | <dynamic declare cursor>
    | <temporary table declaration>
    | <embedded exception declaration>
    | <SQL procedure statement>
<embedded exception declaration> ::=
    WHENEVER <condition> <condition action>
<condition> ::=
    SQLERROR | NOT FOUND
<condition action> ::=
    CONTINUE | <go to>
<go to> ::=
    { GOTO | GO TO } <goto target>
<goto target> ::=
      <host label identifier>
    | <unsigned integer>
    | <host PL/I label variable>
<preparable statement> ::=
      <preparable SQL data statement>
    | <preparable SQL schema statement>
    | <preparable SQL transaction statement>
    | <preparable SQL session statement>
    | <preparable implementation-defined statement>
<preparable SQL data statement> ::=
      <delete statement: searched>
    | <dynamic single row select statement>
    | <insert statement>
    | <dynamic select statement>
    | <update statement: searched>
    | <preparable dynamic delete statement: positioned>
    | <preparable dynamic update statement: positioned>
<dynamic single row select statement> ::= <query specification>
<dynamic select statement> ::= <cursor specification>
<preparable dynamic delete statement: positioned> ::=
   DELETE [ FROM <table name> ]
      WHERE CURRENT OF <cursor name>
<preparable dynamic update statement: positioned> ::=
   UPDATE [ <table name> ]
      SET <set clause list>
      WHERE CURRENT OF <cursor name>
<preparable SQL schema statement> ::=
      <SQL schema statement>
<preparable SQL transaction statement> ::=
      <SQL transaction statement>
<preparable SQL session statement> ::=
      <SQL session statement>
<direct SQL statement> ::=
    <directly executable statement> <semicolon>
<directly executable statement> ::=
      <direct SQL data statement>
    | <SQL schema statement>
    | <SQL transaction statement>
    | <SQL connection statement>
    | <SQL session statement>
    | <direct implementation-defined statement>
<direct SQL data statement> ::=
      <delete statement: searched>
    | <direct select statement: multiple rows>
    | <insert statement>
    | <update statement: searched>
    | <temporary table declaration>
<direct select statement: multiple rows> ::=
    <query expression> [ <order by clause> ]
<SQL object identifier> ::=
    <SQL provenance> <SQL variant>
<SQL provenance> ::= <arc1> <arc2> <arc3>
<arc1> ::= iso | 1 | iso <left paren> 1 <right paren>
<arc2> ::= standard | 0 | standard <left paren> 0 <right paren>
<arc3> ::= 9075
<SQL variant> ::= <SQL edition> <SQL conformance>
<SQL edition> ::= <1987> | <1989> | <1992>
<1987> ::= 0 | edition1987 <left paren> 0 <right paren>
<1989> ::= <1989 base> <1989 package>
<1989 base> ::= 1 | edition1989 <left paren> 1 <right paren>
<1989 package> ::= <integrity no> | <integrity yes>
<integrity no> ::= 0 | IntegrityNo <left paren> 0 <right paren>
<integrity yes> ::= 1 | IntegrityYes <left paren> 1 <right paren>
<1992> ::= 2 | edition1992 <left paren> 2 <right paren>
<SQL conformance> ::= <low> | <intermediate> | <high>
<low> ::= 0 | Low <left paren> 0 <right paren>
<intermediate> ::= 1 | Intermediate <left paren> 1 <right paren>
<high> ::= 2 | High <left paren> 2 <right paren>

445.1   Riferimenti

Appunti di informatica libera 2006.01.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>, <daniele·giacomini (ad) poste·it>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome definizione_di_sql92_in_notazione_bnf.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [violazione licenza] [translators] [docinfo] [indice analitico]

Valid ISO-HTML!

CSS validator!

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com