-- SQL-92 BNF Grammar Reference (Simplified) -- This is a reference for implementing the PizzaSQL parser. -- Statements ::= | | | | | -- SELECT Statement ::= SELECT [ ALL | DISTINCT ] [ ] [ ] [ ] [ ] [ ] [ ] ::= | [ { }... ] ::= [ [ AS ] ] | ::= FROM [ { }... ] ::= [ [ AS ] ] | ::= [ INNER ] JOIN | LEFT [ OUTER ] JOIN | RIGHT [ OUTER ] JOIN | FULL [ OUTER ] JOIN | CROSS JOIN | NATURAL JOIN ::= ON | USING ::= WHERE ::= GROUP BY ::= HAVING ::= ORDER BY [ { }... ] ::= [ ASC | DESC ] ::= LIMIT [ OFFSET ] -- INSERT Statement ::= INSERT INTO [ ] ::= VALUES | ::= [ { }... ] -- UPDATE Statement ::= UPDATE SET [ ] ::= [ { }... ] ::= -- DELETE Statement ::= DELETE FROM [ ] -- CREATE TABLE Statement ::= CREATE TABLE [ IF NOT EXISTS ] [ { }... ] ::= | ::= [ ... ] ::= INTEGER | INT | SMALLINT | BIGINT | REAL | FLOAT | DOUBLE | NUMERIC [ [ ] ] | DECIMAL [ [ ] ] | TEXT | VARCHAR [ ] | CHAR [ ] | CHARACTER [ ] | BLOB | BOOLEAN | DATE | TIME | TIMESTAMP | DATETIME ::= PRIMARY KEY | NOT NULL | UNIQUE | DEFAULT | REFERENCES [ ] | AUTOINCREMENT ::= [ CONSTRAINT ] ( PRIMARY KEY | UNIQUE | FOREIGN KEY REFERENCES | CHECK ) -- DROP TABLE Statement ::= DROP TABLE [ IF EXISTS ] [ { }... ] -- Expressions ::= ::= | OR ::= | AND ::= NOT | ::= | | IS [ NOT ] NULL | [ NOT ] IN | [ NOT ] BETWEEN AND | [ NOT ] LIKE [ ESCAPE ] ::= | | | | | ::= | ::= | | | ::= | | | ::= | | ::= | | | | | | | ::= | | NULL | TRUE | FALSE ::= [ ] ::= [ [ DISTINCT ] | ] ::= CASE [ ] ... [ ELSE ] END ::= WHEN THEN ::= CAST AS ::= EXISTS -- Lists ::= [ { }... ] ::= [ { }... ] -- Tokens ::= ::= ::= ::= ::= ::= ::= | ::= [ { | | }... ] ::= ... | ... | ... ::= | ::= ... -- Symbols ::= ( ::= ) ::= , ::= . ::= ; ::= * ::= + ::= - ::= / ::= % ::= || ::= = ::= <> | != ::= < ::= > ::= <= ::= >=