From: Jeff Fried Subject: Re: Where is SQL syntax spec To: Tim Bunce Date: Tue, 24 May 94 15:57:39 PDT In-Reply-To: <9405241922.aa19411@post.demon.co.uk>; from "Tim Bunce" at May 24, 94 6:59 pm Tim, I thought i'd add to life's complexity by appending a copy of the SQL3 bnf. SQL3 is a superset of SQL-92 [which is a superset of SQL-89 level 2]. SQL3 is not yet a standard, but SQL-92 is a standard. In fact ENTRY LEVEL SQL-92 is the "current" implementation state of most vendors. There are only a few differences between SQL-92 ENTRY LEVEL and SQL-89 Level II, but two of them are very important: - Delimited identifiers - The handling of the WITH CHECK option on views defaults to CASCADE. In SQL-89 the default was [effectively] LOCAL. ... jeff > for the language done at about 1-SEP-1993 15:13:55.88. The specific version of the BNF included here is: ANSI-only, SQL3-only. ::= ::= | | ::= | ::= 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 ::= | | | | | | | | | | | | | | | | | | | | | | | ::= !! (space character in character set in use) ::= " ::= % ::= & ::= ' ::= ( ::= ) ::= * ::= + ::= , ::= - ::= . ::= / ::= : ::= ; ::= < ::= = ::= > ::= ? ::= [ ::= ] ::= ^ ::= _ ::= | ::= { | | }... ::= | ::= [ ... ] ::= [...] ::= | ::= !! (See the Syntax Rules.) ::= !! (implementation-defined end-of-line indicator) ::= !! ((See the Syntax Rules)) ::= ::= [ { | }... ] ::= ::= | ::= | | | | | | ::= ::= [ { | }... ] ::= !! (See the Syntax Rules) ::= | ::= | ::= ABSOLUTE | ACTION | ACTOR | ADD | AFTER | ALIAS | ALL | ALLOCATE | ALTER | AND | ANY | ARE | AS | ASC | ASSERTION | ASYNC | AT | ATTRIBUTES | AUTHORIZATION | AVG | BEFORE | BEGIN | BETWEEN | BIT | BIT_LENGTH | BOOLEAN | BOTH | BREADTH | BY | CASCADE | CASCADED | CASE | CAST | CATALOG | CHAR | CHARACTER | CHAR_LENGTH | CHARACTER_LENGTH | CHECK | CLASS | CLOSE | COALESCE | COLLATE | COLLATION | COLUMN | COMMIT | COMPLETION | CONNECT | CONNECTION | CONSTRAINT | CONSTRAINTS | CONSTRUCTOR | CONTINUE | CONVERT | CORRESPONDING | COUNT | CREATE | CROSS | CURRENT | CURRENT_DATE | CURRENT_PATH | CURRENT_TIME | CURRENT_TIMESTAMP | CURRENT_USER | CURSOR | CYCLE | DATA | DATE | DAY | DEALLOCATE | DEC | DECIMAL | DECLARE | DEFAULT | DEFERRABLE | DEFERRED | DELETE | DEPTH | DESC | DESCRIBE | DESCRIPTOR | DESIGNATOR | DESTROY | DESTRUCTOR | DICTIONARY | DIAGNOSTICS | DISCONNECT | DISTINCT | DOMAIN | DOUBLE | DROP | EACH | ELEMENT | ELSE | END | END-EXEC | EQUALS | ESCAPE | EXCEPT | EXEC | EXECUTE | EXISTS | EXTERNAL | EXTRACT | FACTOR | FALSE | FETCH | FIRST | FLOAT | FOR | FOREIGN | FOUND | FROM | FULL | FUNCTION | GENERAL | GET | GLOBAL | GO | GOTO | GRANT | GROUP | HAVING | HOUR | IDENTITY | IGNORE | IMMEDIATE | IN | INDICATOR | INITIALLY | INNER | INOUT | INPUT | INSENSITIVE | INSERT | INSTEAD | INT | INTEGER | INTERSECT | INTERVAL | INTO | IS | ISOLATION | JOIN | KEY | LANGUAGE | LAST | LEADING | LEFT | LESS | LEVEL | LIKE | LIMIT | LIST | LOCAL | LOWER | MATCH | MAX | MIN | MINUTE | MODIFY | MODULE | MONTH | MOVE | MULTISET | NAMES | NATIONAL | NATURAL | NCHAR | NEW | NEW_TABLE | NEXT | NO | NONE | NOT| NULL | NULLIF | NUMERIC | OCTET_LENGTH | OF | OFF | OID | OLD | OLD_TABLE | ON | ONLY | OPEN | OPERATION | OPERATOR | OPERATORS | OPTION | OR | ORDER | OUT | OUTER | OUTPUT | OVERLAPS | PAD | PARAMETERS | PARTIAL | PATH | PENDANT | POSITION | POSTFIX | PRECISION | PREFIX | PREORDER | PREPARE | PRESERVE | PRIMARY | PRIOR | PRIVATE | PRIVILEGES | PROCEDURE | PROTECTED | PUBLIC | READ | REAL | RECURSIVE | REFERENCES | REFERENCING | RELATIVE | REPRESENTATION | RESTRICT | REVOKE | RIGHT | ROLE | ROLLBACK | ROUTINE | ROW | ROWS | SAVEPOINT | SCHEMA | SCROLL | SEARCH | SECOND | SECTION | SELECT | SENSITIVE | SEQUENCE | SESSION | SESSION_USER | SET | SIMILAR | SIZE | SMALLINT | SOME | SPACE | SPECIFIC | SQL | SQLCODE | SQLERROR | SQLEXCEPTION | SQLSTATE | SQLWARNING | START | STATE | STRUCTURE | SUBSTRING | SUM | SYMBOL | SYSTEM_USER | TABLE | TEMPLATE | TEMPORARY | TERM | TEST | THAN | THEN | THERE | TIME | TIMESTAMP | TIMEZONE_HOUR | TIMEZONE_MINUTE | TO | TRAILING | TRANSACTION | TRANSLATE | TRANSLATION | TRIGGER | TRIM | TRUE | TYPE | UNDER | UNION | UNIQUE | UNKNOWN | UPDATE | UPPER | USAGE | USER | USING | VALUE | VALUES | VARCHAR | VARIABLE | VARIANT | VARYING | VIEW | VIRTUAL | VISIBLE | WAIT | WHEN | WHENEVER | WHERE | WITH | WITHOUT | WORK | WRITE | YEAR | ZONE ::= ADA | C | CATALOG_NAME | CHAIN | 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 | HOLD | KEY_MEMBER | KEY_TYPE | LENGTH | MESSAGE_LENGTH | MESSAGE_OCTET_LENGTH | MESSAGE_TEXT | MORE | MUMPS | NAME | NULLABLE | NUMBER | PASCAL | PLI | REPEATABLE | RETURNED_LENGTH | RETURNED_OCTET_LENGTH | RETURNED_SQLSTATE | ROUTINE_CATALOG | ROUTINE_NAME | ROUTINE_SCHEMA | ROW_COUNT | SCALE | SCHEMA_NAME | SERIALIZABLE | SERVER_NAME | SPECIFIC_NAME | SUBCLASS_ORIGIN | TABLE_NAME | TYPE | UNCOMMITTED | UNNAMED ::= | ::= [ [ ] ] | ::= ... ::= E ::= ::= ::= [ ] ::= | ::= N [ ... ] [ { [ ... ] }... ] ::= | ::= ::= B [ ... ] [ { [ ... ] }... ] ::= 0 | 1 ::= X [ ... ] [ { [ ... ] }... ] ::= | A | B | C | D | E | F | a | b | c | d | e | f ::= !! (See the Syntax Rules) ::= | |