sql-stmt-list | ::= | [ <sql-stmt> ] [ ; [ <sql-stmt> ] ]* |
sql-stmt | ::= | [ EXPLAIN [ QUERY PLAN ] ] [ <alter-table-stmt> | <analyze-stmt> | <attach-stmt> | <begin-stmt> | <commit-stmt> | <create-index-stmt> | <create-table-stmt> | <create-trigger-stmt> | <create-view-stmt> | <create-virtual-table-stmt> | <delete-stmt> | <delete-stmt-limited> | <detach-stmt> | <drop-index-stmt> | <drop-table-stmt> | <drop-trigger-stmt> | <drop-view-stmt> | <insert-stmt> | <pragma-stmt> | <reindex-stmt> | <release-stmt> | <rollback-stmt> | <savepoint-stmt> | <select-stmt> | <update-stmt> | <update-stmt-limited> | <vacuum-stmt> ]1 |
alter-table-stmt | ::= | ALTER TABLE [ database-name . ] table-name [ RENAME TO new-table-name | ADD [ COLUMN ] <column-def> ]1 |
analyze-stmt | ::= | ANALYZE [ database-name | table-name | database-name . table-name ] |
attach-stmt | ::= | ATTACH [ DATABASE ] filename AS database-name |
begin-stmt | ::= | BEGIN [ DEFERRED | IMMEDIATE | EXCLUSIVE ] [ TRANSACTION ] |
commit-stmt | ::= | [ COMMIT | END ]1 [ TRANSACTION ] |
rollback-stmt | ::= | ROLLBACK [ TRANSACTION ] [ TO [ SAVEPOINT ] savepoint-name ] |
savepoint-stmt | ::= | SAVEPOINT savepoint-name |
release-stmt | ::= | RELEASE [ SAVEPOINT ] savepoint-name |
create-index-stmt | ::= | CREATE [ UNIQUE ] INDEX [ IF NOT EXISTS ] [ database-name . ] index-name ON table-name ( <indexed-column> [ , <indexed-column> ]* ) |
indexed-column | ::= | column-name [ COLLATE collation-name ] [ ASC | DESC ] |
create-table-stmt | ::= | CREATE [ TEMP | TEMPORARY ] TABLE [ IF NOT EXISTS ] [ database-name . ] table-name [ ( <column-def> [ , <column-def> ]* [ , <table-constraint> ]* ) | AS <select-stmt> ]1 |
column-def | ::= | column-name [ <type-name> ] [ <column-constraint> ]* |
type-name | ::= | name [ ( <signed-number> ) | ( <signed-number> , <signed-number> ) ] |
column-constraint | ::= | [ CONSTRAINT name ] [ PRIMARY KEY [ ASC | DESC ] <conflict-clause> [ AUTOINCREMENT ] | NOT NULL <conflict-clause> | UNIQUE <conflict-clause> | CHECK ( <expr> ) | DEFAULT [ <signed-number> | <literal-value> | ( <expr> ) ]1 | COLLATE collation-name | <foreign-key-clause> ]1 |
signed-number | ::= | [ + | - ] [ integer-literal | floating-point-literal ]1 |
table-constraint | ::= | [ CONSTRAINT name ] [ [ PRIMARY KEY | UNIQUE ]1 ( <indexed-column> [ , <indexed-column> ]* ) <conflict-clause> | CHECK ( <expr> ) | FOREIGN KEY ( column-name [ , column-name ]* ) <foreign-key-clause> ]1 |
foreign-key-clause | ::= | REFERENCES foreign-table [ ( column-name [ , column-name ]* ) ] [ [ ON [ DELETE | UPDATE ]1 [ SET NULL | SET DEFAULT | CASCADE | RESTRICT | NO ACTION ]1 | MATCH name ]1 ] [ [ NOT ] DEFERRABLE [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] ] |
conflict-clause | ::= | [ ON CONFLICT [ ROLLBACK | ABORT | FAIL | IGNORE | REPLACE ]1 ] |
create-trigger-stmt | ::= | CREATE [ TEMP | TEMPORARY ] TRIGGER [ IF NOT EXISTS ] [ database-name . ] trigger-name [ BEFORE | AFTER | INSTEAD OF ] [ DELETE | INSERT | UPDATE [ OF column-name [ , column-name ]* ] ]1 ON table-name [ FOR EACH ROW ] [ WHEN <expr> ] BEGIN [ <update-stmt> | <insert-stmt> | <delete-stmt> | <select-stmt> ]1 ; END |
create-view-stmt | ::= | CREATE [ TEMP | TEMPORARY ] VIEW [ IF NOT EXISTS ] [ database-name . ] view-name AS <select-stmt> |
create-virtual-table-stmt | ::= | CREATE VIRTUAL TABLE [ database-name . ] table-name USING module-name [ ( module-argument [ , module-argument ]* ) ] |
delete-stmt | ::= | DELETE FROM <qualified-table-name> [ WHERE <expr> ] |
delete-stmt-limited | ::= | DELETE FROM <qualified-table-name> [ WHERE <expr> ] [ [ ORDER BY <ordering-term> [ , <ordering-term> ]* ] LIMIT integer [ [ OFFSET | , ]1 integer ] ] |
detach-stmt | ::= | DETACH [ DATABASE ] database-name |
drop-index-stmt | ::= | DROP INDEX [ IF EXISTS ] [ database-name . ] index-name |
drop-table-stmt | ::= | DROP TABLE [ IF EXISTS ] [ database-name . ] table-name |
drop-trigger-stmt | ::= | DROP TRIGGER [ IF EXISTS ] [ database-name . ] trigger-name |
drop-view-stmt | ::= | DROP VIEW [ IF EXISTS ] [ database-name . ] view-name |
expr | ::= | <literal-value> |
expr | ::= | <bind-parameter> |
expr | ::= | [ [ database-name . ] table-name . ] column-name |
expr | ::= | unary-operator <expr> |
expr | ::= | <expr> binary-operator <expr> |
expr | ::= | function-name ( [ [ DISTINCT ] <expr> [ , <expr> ]* | * ] ) |
expr | ::= | ( <expr> ) |
expr | ::= | CAST ( <expr> AS <type-name> ) |
expr | ::= | <expr> COLLATE collation-name |
expr | ::= | <expr> [ NOT ] [ LIKE | GLOB | REGEXP | MATCH ]1 <expr> [ ESCAPE <expr> ] |
expr | ::= | <expr> [ ISNULL | NOTNULL | NOT NULL ]1 |
expr | ::= | <expr> IS [ NOT ] <expr> |
expr | ::= | <expr> [ NOT ] BETWEEN <expr> AND <expr> |
expr | ::= | <expr> [ NOT ] IN [ ( [ <select-stmt> | <expr> [ , <expr> ]* ] ) | [ database-name . ] table-name ]1 |
expr | ::= | [ [ NOT ] EXISTS ] ( <select-stmt> ) |
expr | ::= | CASE [ <expr> ] WHEN <expr> THEN <expr> [ ELSE <expr> ] END |
expr | ::= | <raise-function> |
raise-function | ::= | RAISE ( [ IGNORE | [ ROLLBACK | ABORT | FAIL ]1 , error-message ]1 ) |
literal-value | ::= | integer-literal |
literal-value | ::= | floating-point-literal |
literal-value | ::= | string-literal |
literal-value | ::= | blob-literal |
literal-value | ::= | NULL |
literal-value | ::= | CURRENT_TIME |
literal-value | ::= | CURRENT_DATE |
literal-value | ::= | CURRENT_TIMESTAMP |
insert-stmt | ::= | [ INSERT [ OR [ ROLLBACK | ABORT | REPLACE | FAIL | IGNORE ]1 ] | REPLACE ]1 INTO [ database-name . ] table-name [ [ ( column-name [ , column-name ]* ) ] [ VALUES ( <expr> [ , <expr> ]* ) | <select-stmt> ]1 | DEFAULT VALUES ]1 |
pragma-stmt | ::= | PRAGMA [ database-name . ] pragma-name [ = <pragma-value> | ( <pragma-value> ) ] |
pragma-value | ::= | <signed-number> |
pragma-value | ::= | name |
pragma-value | ::= | string-literal |
reindex-stmt | ::= | REINDEX [ collation-name | [ database-name . ] [ table-name | index-name ]1 ]1 |
select-stmt | ::= | <select-core> [ <compound-operator> <select-core> ]* [ ORDER BY <ordering-term> [ , <ordering-term> ]* ] [ LIMIT integer [ [ OFFSET | , ]1 integer ] ] |
select-core | ::= | SELECT [ DISTINCT | ALL ] <result-column> [ , <result-column> ]* [ FROM <join-source> ] [ WHERE <expr> ] [ GROUP BY <ordering-term> [ , <ordering-term> ]* [ HAVING <expr> ] ] |
result-column | ::= | * |
result-column | ::= | table-name . * |
result-column | ::= | <expr> [ [ AS ] column-alias ] |
join-source | ::= | <single-source> [ <join-op> <single-source> <join-constraint> ] |
single-source | ::= | [ database-name . ] table-name [ [ AS ] table-alias ] [ INDEXED BY index-name | NOT INDEXED ] |
single-source | ::= | ( <select-stmt> ) [ [ AS ] table-alias ] |
single-source | ::= | ( <join-source> ) |
join-op | ::= | , |
join-op | ::= | [ NATURAL ] [ [ LEFT ] [ OUTER ] | INNER | CROSS ]1 JOIN |
join-constraint | ::= | [ ON <expr> | USING ( column-name [ , column-name ]* ) ] |
ordering-term | ::= | <expr> [ COLLATE collation-name ] [ ASC | DESC ] |
compound-operator | ::= | UNION [ ALL ] |
compound-operator | ::= | INTERSECT |
compound-operator | ::= | EXCEPT |
update-stmt | ::= | UPDATE [ OR [ ROLLBACK | ABORT | REPLACE | FAIL | IGNORE ]1 ] <qualified-table-name> SET column-name = <expr> [ , column-name = <expr> ]* [ WHERE <expr> ] |
update-stmt-limited | ::= | UPDATE [ OR [ ROLLBACK | ABORT | REPLACE | FAIL | IGNORE ]1 ] <qualified-table-name> SET column-name = <expr> [ , column-name = <expr> ]* [ WHERE <expr> ] [ [ ORDER BY <ordering-term> [ , <ordering-term> ]* ] LIMIT integer [ [ OFFSET | , ]1 integer ] ] |
qualified-table-name | ::= | [ database-name . ] table-name [ INDEXED BY index-name | NOT INDEXED ] |
vacuum-stmt | ::= | VACUUM |
comment-syntax | ::= | -- [ anything-except-newline ]* [ newline | end-of-input ]1 |
comment-syntax | ::= | /* [ anything-except-*/ ]* [ */ | end-of-input ]1 |