BNF Grammar for ISO/IEC 9075:1999 - Database Language SQL (SQL-99) ================================================================== @(#)$Id: sql-99.bnf,v 2.10 2017/11/14 06:53:22 jleffler Exp $ --p Using Appendix G of "SQL:1999 Understanding Relational Language Components" by J Melton and A R Simon (Morgan Kaufmann, May 2001, ISBN 0-55860-456-1) as the primary source of the syntax, here is the BNF syntax for SQL-99. The Word 97 version of this document is available from: --## --## http://www.mkp.com/books_catalog/catalog.asp?ISBN=1-55860-456-1 . --/p --p Note that this version of this file includes the corrections from ISO 9075:1999/Cor.1:2000. --/p --p The plain text version of this grammar is --## sql-99.bnf . --/p --hr --h2 Key SQL Statements and Fragments --/h2 --bl --li ALTER DOMAIN --li ALTER TABLE --li CLOSE cursor --li Column definition --li COMMIT WORK --li CONNECT --li CREATE ASSERTION --li CREATE CHARACTER SET --li CREATE COLLATION --li CREATE DOMAIN --li CREATE FUNCTION --li CREATE PROCEDURE --li CREATE SCHEMA --li CREATE TABLE --li CREATE TRANSLATION --li CREATE TRIGGER --li CREATE VIEW --li Data type --li DEALLOCATE PREPARE --li DECLARE cursor --li DECLARE LOCAL TEMPORARY TABLE --li DELETE --li DESCRIBE --li DESCRIPTOR statements --li DISCONNECT --li EXECUTE --li EXECUTE IMMEDIATE --li FETCH cursor --li FROM clause --li GET DIAGNOSTICS --li GRANT --li GROUP BY clause --li HAVING clause --li INSERT --li Literals --li OPEN cursor --li ORDER BY clause --li PREPARE --li REVOKE --li ROLLBACK WORK --li SAVEPOINT --li Search condition --li SELECT --li SET CATALOG --li SET CONNECTION --li SET CONSTRAINTS --li SET NAMES --li SET SCHEMA --li SET SESSION AUTHORIZATION --li SET TIME ZONE --li SET TRANSACTION --li SQL Client MODULE --li UPDATE --li Value expression --li WHERE clause --/bl --hr --h2 Identifying the version of SQL in use --/h2 --p This material (starting with ) is defined in section 6.3 "Object Identifier for Database Language SQL" of ISO/IEC 9075-1:1999 (SQL Framework). It is used to express the capabilities of an implementation. The package names are identifiers such as 'PKG001', equivalent to 'Enhanced datetime facilities', as defined in the informative Annex B to SQL Framework. Each such package identifies a number of features that are provided when the SQL object identifier claims to provide the package. --/p ::= ::= ::= iso | 1 | iso 1 ::= standard | 0 | standard 0 ::= 9075 ::= ::= <1987> | <1989> | <1992> | <1999> <1987> ::= 0 | edition1987 0 <1989> ::= <1989 base> <1989 package> <1989 base> ::= 1 | edition1989 1 <1989 package> ::= | ::= 0 | IntegrityNo 0 ::= 1 | IntegrityYes 1 <1992> ::= 2 | edition1992 2 <1999> ::= 3 | edition1999 3 ::= ::= | | ::= 0 | Low 0 ::= 1 | Intermediate 1 ::= 2 | High 2 ::= --p --small --i The parenthesized (i) and (n) are italic in the SQL standard. It is not clear exactly what this should look like, despite all the information. However, it is also not important; this is not really a part of the SQL language per se. Note that the package numbers are PKG001 to PKG009, for example. We still have to devise a mechanism to persuade bnf2yacc.pl to ignore this information. --/i --/small --/p ::= ... ::= | ::= 0 | Part-(n)No 0 ::= !! (as specified in ISO/IEC 9075-(n)) ::= | ::= ::= 3 | sqlcli1999 3 ::= ::= 4 | sqlpsm1999 4 ::= | ::= 1 | moduleyes 1 ::= 0 | moduleno 0 ::= --p --small --i The original used sqlbindings199x, but the x should clearly be a 9. --/i --/small --/p ::= 5 | sqlbindings1999 5 ::= | ::= 1 | directyes 1 ::= 0 | directno 0 ::= | ... ::= 0 | embeddedno 0 ::= | | | | | | ::= 1 | embeddedAda 1 ::= 2 | embeddedC 2 ::= 3 | embeddedCOBOL 3 ::= 4 | embeddedFortran 4 ::= 5 | embeddedMUMPS 5 ::= 6 | embeddedPascal 6 ::= 7 | embeddedPLI 7 --hr --h2 Basic Definitions of Characters Used, Tokens, Symbols, Etc. --/h2 --p Most of this section would normally be handled within the lexical analyzer rather than in the grammar proper. Further, the original document does not quote the various single characters, which makes it hard to process automatically. --/p ::= ::= | | ::= | ::= 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 ::= 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 ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::= | | | | | | | | | | | | | | | | | | | | | | | | | ::= !! (See the Syntax Rules) ::= " ::= % ::= & ::= ' ::= ( ::= ) ::= * ::= + ::= , ::= - ::= . ::= / ::= : ::= ; ::= < ::= = ::= > ::= ? ::= [ ::= ] ::= ^ ::= _ ::= | ::= { ::= } --hr --h2 Literal Numbers, Strings, Dates and Times --/h2 --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= [ ] [ ] [ ... ] ... ::= MODULE [ ] [ ] ::= ::= ::= | ::= --p --small --i modified per ISO 9075:1999/Cor.1:2000(E). --/i --/p --p --i also rationalized by removing curly brackets around because they are unnecessary and inconsistent with other places where '...' modifies a single non-terminal. --/i --/small --/small --/p ::= [ ... ] ::= | ::= !! (See the Syntax Rules) ::= !! (See the Syntax Rules) ::= | | | | | | | | ::= !! (See the Syntax Rules) ::= !! (See the Syntax Rules) ::= !! (See the Syntax Rules) ::= !! (See the Syntax Rules) ::= !! (See the Syntax Rules) ::= !! (See the Syntax Rules) ::= !! (See the Syntax Rules) ::= ::= ... ::= | ::= !! (See the Syntax Rules) --p --small --i Note that the two successive double quote characters must have no other character (such as a space) between them. The lexical analyzer would normally deal with this sort of issue. --/i --/small --/p ::= ::= NAMES ARE ::= | | ::= ::= [ ] ::= [ ] ::= ::= ::= [ { | }... ] ::= ::= | ::= ::= ::= LANGUAGE ::= ADA | C | COBOL | FORTRAN | MUMPS | PASCAL | PLI | SQL --@@ This module authorization clause is superceded by a variant from 9075-5 SQL/Bindings. --@@ ::= --@@ SCHEMA --@@ | AUTHORIZATION --@@ | SCHEMA AUTHORIZATION ::= ::= | ::= ::= ::= ::= PATH ::= [ { }... ] ::= ::= TRANSFORM GROUP { | } ::= ::= ::= [ { }... ] ::= FOR TYPE ::= ::= ::= [ ] ::= ::= DECLARE LOCAL TEMPORARY TABLE
[ ON COMMIT
ROWS ]
::= ::= [ ] ::= | MODULE
::=
[ {
}... ]
::= |
| | | ::= { | } [ ] [ ] [ ... ] [ ] ::= --hr --h2 Data Types --/h2 ::= | | | | ::= [ CHARACTER SET ] | | | | | | | ::= CHARACTER [ ] | CHAR [ ] | CHARACTER VARYING | CHAR VARYING | VARCHAR | CHARACTER LARGE OBJECT [ ] | CHAR LARGE OBJECT [ ] | CLOB [ ] ::= ::= ... ::= [ ] | ::= K | M | G ::= ... ::= NATIONAL CHARACTER [ ] | NATIONAL CHAR [ ] | NCHAR [ ] | NATIONAL CHARACTER VARYING | NATIONAL CHAR VARYING | NCHAR VARYING | NATIONAL CHARACTER LARGE OBJECT [ ] | NCHAR LARGE OBJECT [ ] | NCLOB [ ] ::= BINARY LARGE OBJECT [ ] | BLOB [ ] ::= BIT [ ] | BIT VARYING ::= | ::= NUMERIC [ [ ] ] | DECIMAL [ [ ] ] | DEC [ [ ] ] | INTEGER | INT | SMALLINT ::= ::= ::= FLOAT [ ] | REAL | DOUBLE PRECISION ::= BOOLEAN ::= DATE | TIME [
::= ::= ::= ARRAY ::= | --p --small --i The trigraphs are strictly sequences of characters, not sequences of tokens. There may not be any spaces between the characters. Normally, the lexical analyzer would return the trigraphs as a simple symbol. --/i --/small --/p ::= ::= | ::= ::= ::= DEFAULT ::= | | USER | CURRENT_USER | CURRENT_ROLE | SESSION_USER | SYSTEM_USER | CURRENT_PATH | --hr --h2 Literals --/h2 ::= | ::= [ ] ::= | ::= | ::= [ [ ] ] | ::= E ::= ::= ::= [ ] ::= | | | | | | | ::= [ ] [ ... ] [ { [ ... ] }... ] ::= ::= | ::= !! (See the Syntax Rules.) --p --small --i The rule consists of two immediately adjacent marks with no spaces. As usual, this would be best handled in the lexical analyzer, not in the grammar. --/i --/small --/p ::= ::= { | }... ::= | ::= [ ... ] ::= [ ... ] ::= | ::= !! (See the Syntax Rules) --p --small --i The rule included '!! (See the Syntax Rules)'. This probably says something about the and needing to be adjacent characters rather than adjacent tokens. --/i --/small --/p ::= ::= ::= [ { | }... ] ::= ::= !! (See the Syntax Rules) ::= N [ ... ] [ { [ ... ] }... ] ::= B [ ... ] [ { [ ... ] }... ] ::= 0 | 1 ::= X [ ... ] [ { [ ... ] }... ] ::= | A | B | C | D | E | F | a | b | c | d | e | f ::= X [ { }... ] [ { [ { }... ] }... ] ::= |
[ ] ::= ::= [ { }... ] ::= FULL | PARTIAL | SIMPLE ::= [ ] | [ ] ::= ON UPDATE ::= ON DELETE ::= CHECK --hr --h2 Search Condition --/h2 ::= ::= | OR ::= | AND ::= [ NOT ] ::= [ IS [ NOT ] ] ::= | | ::= | | | | | | | | | | | | ::= ::= | ::= | ::= | ::= | | | | | CURRENT_DEFAULT_TRANSFORM_GROUP | CURRENT_PATH | CURRENT_ROLE | CURRENT_TRANSFORM_GROUP_FOR_TYPE | CURRENT_USER | SESSION_USER | SYSTEM_USER | USER | VALUE ::= [ ] ::= ::= [ INDICATOR ] ::= ::= ::= [ { }... ] ::= | | | | | | | | ::= | | ::= | | ::= [ ] ::= | ::= | ::= ::= | | | | | | | | | | | | | | | ::= | ::= | ::= | MODULE ::= COUNT | | ::= [ ] ::= ::= AVG | MAX | MIN | SUM | EVERY | ANY | SOME | COUNT ::= DISTINCT | ALL ::= GROUPING --hr --h2 Queries --/h2 ::= ::= ::= [ ] ::= WITH [ RECURSIVE ] ::= [ { }... ] ::= [ ] AS [ ] ::= ::= ::= | | ::= SEARCH SET ::= DEPTH FIRST BY | BREADTH FIRST BY ::= [ { }... ] --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= [ ] ::= ::= ASC | DESC ::= ::= CYCLE SET TO DEFAULT USING ::= [ { }... ] ::= ::= ::= ::= ::= ::= | ::= | UNION [ ALL | DISTINCT ] [ ] | EXCEPT [ ALL | DISTINCT ] [ ] ::= | INTERSECT [ ALL | DISTINCT ] [ ] ::= | ::= |
| ::= SELECT [ ]
[ { ::= | ::= [ ] ::= [ AS ] ::= | ::= [ { }... ] ::= ::=
::= [ ] [ ] [ ] ::= FROM
::=
[ {
}... ]
::=
|
::=
[ [ AS ] [ ] ] | [ AS ] [ ] | [ AS ] [ ] | [ AS ] [ ] | [ [ AS ] [ ] ] |
::=
| ::= ::= ::=
::= ::= LATERAL ::= UNNEST [ WITH ORDINALITY ] ::= ::= ONLY
::= | | | ::=
CROSS JOIN
::=
[ ] JOIN
::= INNER | [ OUTER ] ::= LEFT | RIGHT | FULL ::= | ::= ON ::= USING ::= ::=
NATURAL [ ] JOIN
::=
UNION JOIN
::= WHERE --p --small --i Rules from to modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= GROUP BY ::= [ { }... ] ::= | | | | ::= [ ] ::= ROLLUP ::= [ { }... ] ::= CUBE ::= GROUPING SETS ::= [ { }... ] ::= | | | | ::= | ::= ::= ::= HAVING
::= VALUES ::= [ { }... ] ::= TABLE
--hr --h2 Query expression components --/h2 ::= | ::= CORRESPONDING [ BY ] ::= ::= | ::= | ::= NULLIF | COALESCE { }... ::= | ::= CASE ... [ ] END ::= ::= WHEN THEN ::= ::= | NULL ::= ::= ELSE ::= CASE ... [ ] END ::= WHEN THEN ::= CAST AS ::= | ::= | --p --small --i to modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= TREAT AS ::= ::= ::= [ ] ::= ::= -> ::= [ [ { }... ] ] ::= | | ::= AS ::= | | | | | ::= DEREF ::= ::= ::= | | ::= ::= ARRAY ::= [ { }... ] ::= ::= ::= ::= || ::= ::= ::= [ ] ::= ::= ::= | ::= [ ] ::= ::= AS [ ] --p --small --i It is not remotely clear why this was needed in this grammar. --/i --i added per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= ::= [ ] --p --small --i Note that must be a pair of characters with no intervening space, not a pair of colon symbols separated by arbitrary white space. Normally, the lexical analyzer would return as a symbol. --/i --/small --/p ::= ::= NEW ::= | | | | | ::= | ::= POSITION IN ::= | | ::= | ::= ::= [ ] ::= | ::= | | ::= | | | | | | | ::= SUBSTRING FROM [ FOR ] ::= ::= --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= SUBSTRING SIMILAR ESCAPE ::= ::= { UPPER | LOWER } ::= CONVERT USING ::= ::= TRANSLATE USING ::= ::= TRIM ::= [ [ ] [ ] FROM ] ::= LEADING | TRAILING | BOTH ::= ::= ::= OVERLAY PLACING FROM [ FOR ] ::= SPECIFICTYPE ::= ::= | | ::= SUBSTRING FROM [ FOR ] ::= | ::= ::= ::= | ::= TRIM ::= [ [ ] [ ] FROM ] ::= ::= ::= OVERLAY PLACING FROM [ FOR ] ::= ::= SUBSTRING FROM [ FOR ] ::= | ::= ::= ::= | ::= POSITION IN ::= EXTRACT FROM ::= |
| --p --small --i Previously, the expression in curly braces was not in square brackets. --/i --i Consequently, every had to have at least two items in it. --/i --/small --/p ::= [ { }... ] ::= | ::= [ NOT ] LIKE [ ESCAPE ] ::= ::= ::= [ NOT ] LIKE [ ESCAPE ] ::= ::= ::= ::= IS [ NOT ] NULL ::=
::= | ::= ALL ::= SOME | ANY ::= EXISTS
::= UNIQUE
::= MATCH [ UNIQUE ] [ SIMPLE | PARTIAL | FULL ]
::= OVERLAPS ::= ::= ::= [ NOT ] SIMILAR TO [ ESCAPE ] ::= --hr --h2 Regular Expressions for SIMILAR TO --/h2 --p These regular expressions are not referenced anywhere else in the document, but define the structure that the used in must have. Structurally, these regular expressions are similar to 'egrep' expressions, except they use underscore in place of dot, and percent is equivalent to dot star in 'egrep'. The other omission is the use of caret (aka circumflex) to mark the start of the matched text and dollar to mark the end of the matched text. --/p ::= | ::= | ::= | | ::= | | | ::= | ::= !! (See the Syntax Rules) ::= !! (See the Syntax Rules) ::= | ... | ... | ::= | ::= --hr ::= IS DISTINCT FROM ::= ::= ::= IS [ NOT ] OF ::= [ { }... ] ::= | ::= ::= ONLY ::= ::= TRUE | FALSE | UNKNOWN --hr --h2 More about constraints --/h2 ::= [ [ NOT ] DEFERRABLE ] | [ NOT ] DEFERRABLE [ ] ::= INITIALLY DEFERRED | INITIALLY IMMEDIATE
::= [ ]
[ ]
::= | | --p --small --i The standard documents UNIQUE ( VALUE ) but there is no explanation of why that is different from the UNIQUE VALUE used here. --/i --/small --/p ::= | UNIQUE VALUE ::= ::= FOREIGN KEY ::= ::= LIKE
::= REF IS ::= ::= SYSTEM GENERATED | USER GENERATED | DERIVED ::= WITH OPTIONS ::= [ ] [ ] [ ... ] [ ]
::= PRESERVE | DELETE --hr --h2 Module contents --/h2 ::= | | ::= DECLARE [ ] [ ] CURSOR [ ] [ ] FOR ::= ::= [ ] ::= MODULE ::= SENSITIVE | INSENSITIVE | ASENSITIVE ::= SCROLL | NO SCROLL ::= WITH HOLD | WITHOUT HOLD ::= WITH RETURN | WITHOUT RETURN ::= [ ] [ ] ::= ORDER BY ::= FOR { READ ONLY | UPDATE [ OF ] } --hr --h2 SQL Procedures --/h2 ::= PROCEDURE ::= --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= ::= [ { }... ] ::= | ::= [ ] ::= AS LOCATOR ::= SQLSTATE ::= ::= | | | | | | | --hr --h2 SQL Schema Definition Statements --/h2 ::= | --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= |
| | | | | | | | | | | | | | | ::= CREATE SCHEMA [ ] [ ... ] ::= | AUTHORIZATION | AUTHORIZATION ::= ::= | | | ::= DEFAULT CHARACTER SET ::= --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::=
| | | | | | | | | | | | | |
::= CREATE [
] TABLE
[ ON COMMIT
ROWS ]
::= TEMPORARY ::= GLOBAL | LOCAL
::=
| OF [ ] [
] ::= UNDER ::= ::=
::= CREATE [ RECURSIVE ] VIEW
AS [ WITH [ ] CHECK OPTION ] ::= | ::= [ ] ::= ::= OF [ ] [ ] ::= UNDER
::= [ ] [ { }... ] ::= ::= WITH OPTIONS ::= CASCADED | LOCAL ::= CREATE DOMAIN [ AS ] [ ] [ ... ] [ ] ::= [ ] [ ] ::= CREATE CHARACTER SET [ AS ] [ ] ::= GET ::= CREATE COLLATION FOR FROM [ ] ::= ::= NO PAD | PAD SPACE ::= CREATE TRANSLATION FOR TO FROM ::= ::= ::= | ::= ::= --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= SPECIFIC | [ FOR ] --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= ROUTINE | FUNCTION | PROCEDURE | [ INSTANCE | STATIC | CONSTRUCTOR ] METHOD ::= ::= [ ] ::= ::= [ [ { }... ] ] ::= CREATE ASSERTION CHECK [ ] ::= CREATE TRIGGER ON
[ REFERENCING ] ::= ::= BEFORE | AFTER ::= INSERT | DELETE | UPDATE [ OF ] ::= ::= ... ::= OLD [ ROW ] [ AS ] | NEW [ ROW ] [ AS ] | OLD TABLE [ AS ] | NEW TABLE [ AS ] ::= ::= ::= ::= ::= [ FOR EACH { ROW | STATEMENT } ] [ WHEN ] --@@ This definition of triggered SQL statement is superceded by the --@@ variant from 9075-4 (SQL/PSM). --@@ Consequently, this one is commented out. --@@ ::= --@@ --@@ | BEGIN ATOMIC { }... END ::= CREATE TYPE --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= [ ] [ AS ] [ ] [ ] [ ] [ ] [ ] ::= UNDER ::= ::= | ::= [ { }... ] ::= ::= [ ] [ ] [ ] ::= ::= ::= INSTANTIABLE | NOT INSTANTIABLE ::= FINAL | NOT FINAL ::= | | ::= REF USING ::= [ ] [ ] ::= CAST SOURCE AS REF WITH ::= ::= CAST REF AS SOURCE WITH ::= ::= REF FROM ::= [ { }...] ::= REF IS SYSTEM GENERATED ::= [ ] [ ] ::= CAST SOURCE AS DISTINCT WITH ::= ::= CAST DISTINCT AS SOURCE WITH ::= ::= [ { }... ] ::= | ::= [ SELF AS RESULT ] [ SELF AS LOCATOR ] [ ] --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= [ INSTANCE | STATIC | CONSTRUCTOR ] METHOD [ SPECIFIC ] ::= [ [ { }... ] ] ::= [ ] [ ] [ RESULT ] ::= IN | OUT | INOUT ::= ::= [ ] ::= RETURNS [ ] ::= [ ] ::= CAST FROM ::= [ ] --p --small --i added per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= [ ] ::= ... --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= | | | | ::= PARAMETER STYLE ::= SQL | GENERAL ::= DETERMINISTIC | NOT DETERMINISTIC ::= NO SQL | CONTAINS SQL | READS SQL DATA | MODIFIES SQL DATA ::= RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ::= OVERRIDING ::= | ::= CREATE ::= PROCEDURE ::= [ ... ] --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= | | SPECIFIC | | | | ::= DYNAMIC RESULT SETS ::= ::= | ::= --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= EXTERNAL [ NAME ] [ ] [ ] [ ] ::= | ::= EXTERNAL SECURITY DEFINER | EXTERNAL SECURITY INVOKER | EXTERNAL SECURITY IMPLEMENTATION DEFINED ::= CREATE ::= { | } ::= FUNCTION [ ] ::= STATIC DISPATCH --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= [ INSTANCE | STATIC | CONSTRUCTOR ] METHOD [ ] FOR ::= | ::= GRANT TO [ { }... ] [ WITH HIERARCHY OPTION ] [ WITH GRANT OPTION ] [ GRANTED BY ] ::= ON ::= ALL PRIVILEGES | [ { }... ] ::= SELECT | SELECT | SELECT | DELETE | INSERT [ ] | UPDATE [ ] | REFERENCES [ ] | USAGE | TRIGGER | UNDER | EXECUTE ::= ::= [ { }... ] ::= [ TABLE ]
| DOMAIN | COLLATION | CHARACTER SET | MODULE | TRANSLATION | TYPE | ::= PUBLIC | ::= CURRENT_USER | CURRENT_ROLE ::= GRANT [ { }... ] TO [ { }... ] [ WITH ADMIN OPTION ] [ GRANTED BY ] ::= ::= CREATE ROLE [ WITH ADMIN ] ::= | ::= CREATE CAST AS WITH [ AS ASSIGNMENT ] ::= ::= --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= CREATE ORDERING FOR ::= | ::= EQUALS ONLY BY ::= | | ::= RELATIVE WITH ::= ::= MAP WITH ::= ::= STATE [ ] ::= ORDER FULL BY --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= CREATE { TRANSFORM | TRANSFORMS } FOR ... ::= ::= [ ] ::= | ::= TO SQL WITH ::= ::= FROM SQL WITH ::= --hr --h2 SQL Schema Manipulation Statements --/h2 ::= | | | | | | | | | | | | | | | | | | | | ::= DROP SCHEMA ::= CASCADE | RESTRICT ::= ALTER TABLE
::= | | | | ::= ADD [ COLUMN ] ::= ALTER [ COLUMN ] ::= | | | ::= SET ::= DROP DEFAULT ::= ADD ::= DROP SCOPE ::= DROP [ COLUMN ] ::= ADD
::= DROP CONSTRAINT ::= DROP TABLE
::= DROP VIEW
::= ALTER ::= ... ::= | | | | | NAME ::= RESTRICT ::= DROP ::= DROP CAST AS ::= | ::= REVOKE [ ] FROM [ { }... ] [ GRANTED BY ] ::= GRANT OPTION FOR | HIERARCHY OPTION FOR ::= REVOKE [ ADMIN OPTION FOR ] [ { }... ] FROM [ { }... ] [ GRANTED BY ] ::= ::= DROP ROLE ::= ALTER DOMAIN ::= | | | ::= SET ::= DROP DEFAULT ::= ADD ::= DROP CONSTRAINT ::= DROP DOMAIN ::= DROP CHARACTER SET ::= DROP COLLATION ::= DROP TRANSLATION ::= DROP ASSERTION ::= DROP TRIGGER ::= ALTER TYPE ::= | | | | ::= ADD ATTRIBUTE ::= DROP ATTRIBUTE RESTRICT ::= ADD ::= ADD --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= DROP RESTRICT --p --small --i added per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= SPECIFIC METHOD | [ INSTANCE | STATIC | CONSTRUCTOR ] METHOD [ ] ::= DROP TYPE --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= DROP ORDERING FOR --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= DROP { TRANSFORM | TRANSFORMS } FOR ::= ALL | ::= --hr --h2 SQL Data Manipulation Statements --/h2 ::= | | | ::= SELECT [ ]
| [ ONLY ]
::= DELETE FROM [ WHERE ] ::= INSERT INTO ::=
::= | | ::= [ ] [ ] ::= ::= [ ] [ ] ::= OVERRIDING USER VALUE | OVERRIDING SYSTEM VALUE ::= VALUES ::= [ { }... ] ::= | ::= | [ ROW ] ::= | ::= | ::= DEFAULT ::= [ { }... ] ::= DEFAULT VALUES ::= UPDATE SET WHERE CURRENT OF ::= [ { }... ] ::= | --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= | ::= ::= | ::= ::= | ::= UPDATE SET [ WHERE ] --hr --h2 SQL Control Statements --/h2 ::= | | | | | | | | | | | ::= CALL ::= RETURN ::= | NULL --hr --h2 Transaction Management --/h2 ::= | | | | | | ::= START TRANSACTION [ { }...] ::= | | ::= ISOLATION LEVEL ::= READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE ::= READ ONLY | READ WRITE ::= DIAGNOSTICS SIZE ::= ::= SET [ LOCAL ] ::= TRANSACTION [ { }... ] ::= SET CONSTRAINTS { DEFERRED | IMMEDIATE } ::= ALL | [ { }... ] ::= SAVEPOINT --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= ::= ::= | | | | ::= RELEASE SAVEPOINT ::= COMMIT [ WORK ] [ AND [ NO ] CHAIN ] ::= ROLLBACK [ WORK ] [ AND [ NO ] CHAIN ] [ ] ::= TO SAVEPOINT --hr --h2 Connection Management --/h2 ::= | | ::= CONNECT TO ::= [ AS ] [ USER ] | DEFAULT ::= ::= ::= ::= SET CONNECTION ::= DEFAULT | ::= DISCONNECT ::= | ALL | CURRENT --hr --h2 Session Attributes --/h2 ::= | | | | | | | | ::= SET SESSION AUTHORIZATION ::= SET ROLE ::= | NONE ::= SET TIME ZONE ::= | LOCAL ::= SET SESSION CHARACTERISTICS AS ::= [ { }... ] ::= ::= | | ::= GET DIAGNOSTICS ::= | ::= [ { }... ] ::= ::= NUMBER | MORE | COMMAND_FUNCTION | COMMAND_FUNCTION_CODE | DYNAMIC_FUNCTION | DYNAMIC_FUNCTION_CODE | ROW_COUNT | TRANSACTIONS_COMMITTED | TRANSACTIONS_ROLLED_BACK | TRANSACTION_ACTIVE ::= EXCEPTION [ { }... ] ::= ::= ::= CATALOG_NAME | CLASS_ORIGIN | COLUMN_NAME | CONDITION_IDENTIFIER | CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME | CONSTRAINT_SCHEMA | CURSOR_NAME | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | PARAMETER_MODE | PARAMETER_NAME | PARAMETER_ORDINAL_POSITION | RETURNED_SQLSTATE | ROUTINE_CATALOG | ROUTINE_NAME | ROUTINE_SCHEMA | SCHEMA_NAME | SERVER_NAME | SPECIFIC_NAME | SUBCLASS_ORIGIN | TABLE_NAME | TRIGGER_CATALOG | TRIGGER_NAME | TRIGGER_SCHEMA ::= ::= ::= --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= | ::= ::= | ::= | | | | | | | ::= | --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= ABSOLUTE | ACTION | ADD | AFTER | ALL | ALLOCATE | ALTER | AND | ANY | ARE | ARRAY | AS | ASC | ASSERTION | AT | AUTHORIZATION | BEFORE | BEGIN | BETWEEN | BINARY | BIT | BLOB | BOOLEAN | BOTH | BREADTH | BY | CALL | CASCADE | CASCADED | CASE | CAST | CATALOG | CHAR | CHARACTER | CHECK | CLOB | CLOSE | COLLATE | COLLATION | COLUMN | COMMIT | CONDITION | CONNECT | CONNECTION | CONSTRAINT | CONSTRAINTS | CONSTRUCTOR | CONTINUE | CORRESPONDING | CREATE | CROSS | CUBE | CURRENT | CURRENT_DATE | CURRENT_DEFAULT_TRANSFORM_GROUP | CURRENT_TRANSFORM_GROUP_FOR_TYPE | CURRENT_PATH | CURRENT_ROLE | CURRENT_TIME | CURRENT_TIMESTAMP | CURRENT_USER | CURSOR | CYCLE | DATA | DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT | DEFERRABLE | DEFERRED | DELETE | DEPTH | DEREF | DESC | DESCRIBE | DESCRIPTOR | DETERMINISTIC | DIAGNOSTICS | DISCONNECT | DISTINCT | DO | DOMAIN | DOUBLE | DROP | DYNAMIC | EACH | ELSE | ELSEIF | END | END-EXEC | EQUALS | ESCAPE | EXCEPT | EXCEPTION | EXEC | EXECUTE | EXISTS | EXIT | EXTERNAL | FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM | FREE | FULL | FUNCTION | GENERAL | GET | GLOBAL | GO | GOTO | GRANT | GROUP | GROUPING | HANDLE | HAVING | HOLD | HOUR | IDENTITY | IF | IMMEDIATE | IN | INDICATOR | INITIALLY | INNER | INOUT | INPUT | INSERT | INT | INTEGER | INTERSECT | INTERVAL | INTO | IS | ISOLATION | JOIN | KEY | LANGUAGE | LARGE | LAST | LATERAL | LEADING | LEAVE | LEFT | LEVEL | LIKE | LOCAL | LOCALTIME | LOCALTIMESTAMP | LOCATOR | LOOP | MAP | MATCH | METHOD | MINUTE | MODIFIES | MODULE | MONTH | NAMES | NATIONAL | NATURAL | NCHAR | NCLOB | NESTING | NEW | NEXT | NO | NONE | NOT | NULL | NUMERIC | OBJECT | OF | OLD | ON | ONLY | OPEN | OPTION | OR | ORDER | ORDINALITY | OUT | OUTER | OUTPUT | OVERLAPS | PAD | PARAMETER | PARTIAL | PATH | PRECISION | PREPARE | PRESERVE | PRIMARY | PRIOR | PRIVILEGES | PROCEDURE | PUBLIC | READ | READS | REAL | RECURSIVE | REDO | REF | REFERENCES | REFERENCING | RELATIVE | RELEASE | REPEAT | RESIGNAL | RESTRICT | RESULT | RETURN | RETURNS | REVOKE | RIGHT | ROLE | ROLLBACK | ROLLUP | ROUTINE | ROW | ROWS | SAVEPOINT | SCHEMA | SCROLL | SEARCH | SECOND | SECTION | SELECT | SESSION | SESSION_USER | SET | SETS | SIGNAL | SIMILAR | SIZE | SMALLINT | SOME | SPACE | SPECIFIC | SPECIFICTYPE | SQL | SQLEXCEPTION | SQLSTATE | SQLWARNING | START | STATE | STATIC | SYSTEM_USER | TABLE | TEMPORARY | THEN | TIME | TIMESTAMP | TIMEZONE_HOUR | TIMEZONE_MINUTE | TO | TRAILING | TRANSACTION | TRANSLATION | TREAT | TRIGGER | TRUE | UNDER | UNDO | UNION | UNIQUE | UNKNOWN | UNNEST | UNTIL | UPDATE | USAGE | USER | USING | VALUE | VALUES | VARCHAR | VARYING | VIEW | WHEN | WHENEVER | WHERE | WHILE | WITH | WITHOUT | WORK | WRITE | YEAR | ZONE --p --small --i modified per ISO 9075:1999/Cor.1:2000(E) --/i --/small --/p ::= ABS | ADA | ADMIN | ASENSITIVE | ASSIGNMENT | ASYMMETRIC | ATOMIC | ATTRIBUTE | AVG | BIT_LENGTH | C | CALLED | CARDINALITY | CATALOG_NAME | CHAIN | CHAR_LENGTH | CHARACTERISTICS | CHARACTER_LENGTH | CHARACTER_SET_CATALOG | CHARACTER_SET_NAME | CHARACTER_SET_SCHEMA | CHECKED | CLASS_ORIGIN | COALESCE | COBOL | COLLATION_CATALOG | COLLATION_NAME | COLLATION_SCHEMA | COLUMN_NAME | COMMAND_FUNCTION | COMMAND_FUNCTION_CODE | COMMITTED | CONDITION_IDENTIFIER | CONDITION_NUMBER | CONNECTION_NAME | CONSTRAINT_CATALOG | CONSTRAINT_NAME | CONSTRAINT_SCHEMA | CONTAINS | CONVERT | COUNT | CURSOR_NAME | DATETIME_INTERVAL_CODE | DATETIME_INTERVAL_PRECISION | DEFINED | DEFINER | DEGREE | DERIVED | DISPATCH | EVERY | EXTRACT | FINAL | FORTRAN | G | GENERATED | GRANTED | HIERARCHY | IMPLEMENTATION | INSENSITIVE | INSTANCE | INSTANTIABLE | INVOKER | K | KEY_MEMBER | KEY_TYPE | LENGTH | LOWER | M | MAX | MIN | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MOD | MORE | MUMPS | NAME | NULLABLE | NUMBER | NULLIF | OCTET_LENGTH | ORDERING | OPTIONS | OVERLAY | OVERRIDING | PASCAL | PARAMETER_MODE | PARAMETER_NAME | PARAMETER_ORDINAL_POSITION | PARAMETER_SPECIFIC_CATALOG | PARAMETER_SPECIFIC_NAME | PARAMETER_SPECIFIC_SCHEMA | PLI | POSITION | REPEATABLE | RETURNED_CARDINALITY | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE | ROUTINE_CATALOG | ROUTINE_NAME | ROUTINE_SCHEMA | ROW_COUNT | SCALE | SCHEMA_NAME | SCOPE | SECURITY | SELF | SENSITIVE | SERIALIZABLE | SERVER_NAME | SIMPLE | SOURCE | SPECIFIC_NAME | STATEMENT | STRUCTURE | STYLE | SUBCLASS_ORIGIN | SUBSTRING | SUM | SYMMETRIC | SYSTEM | TABLE_NAME | TOP_LEVEL_COUNT | TRANSACTIONS_COMMITTED | TRANSACTIONS_ROLLED_BACK | TRANSACTION_ACTIVE | TRANSFORM | TRANSFORMS | TRANSLATE | TRIGGER_CATALOG | TRIGGER_SCHEMA | TRIGGER_NAME | TRIM | TYPE | UNCOMMITTED | UNNAMED | UPPER ::= | |