[Blog] [MP3
Musica] [MP3 Audiobook]
[Letture Creative]
[Musica Creativa]
[Deutsch] [Español]
[Português]
[Punch] [Appunti
di informatica libera]
[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>
|
<less than operator> ::= <
|
<greater than operator> ::= >
|
<SQL embedded language character> ::=
<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> }... ]
|
<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> ::= ||
|
<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>
|
<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> ]
|