Syntax Diagrams For SQLite

aggregate-function-invocation:

aggregate-func ( DISTINCT expr ) filter-clause , *

References: expr filter-clause
See also: lang_aggfunc.html lang_expr.html#booleanexpr

alter-table-stmt:

ALTER TABLE schema-name . table-name RENAME TO new-table-name RENAME COLUMN column-name TO new-column-name ADD COLUMN column-def DROP COLUMN column-name
Used by: sql-stmt
References: column-def
See also: lang_altertable.html

analyze-stmt:

ANALYZE schema-name . table-or-index-name schema-name index-or-table-name
Used by: sql-stmt
See also: lang_analyze.html

attach-stmt:

ATTACH DATABASE expr AS schema-name
Used by: sql-stmt
References: expr
See also: lang_attach.html

begin-stmt:

BEGIN EXCLUSIVE TRANSACTION DEFERRED IMMEDIATE
Used by: sql-stmt
See also: lang_transaction.html

column-constraint:

CONSTRAINT name PRIMARY KEY DESC conflict-clause AUTOINCREMENT ASC NOT NULL conflict-clause UNIQUE conflict-clause CHECK ( expr ) DEFAULT ( expr ) literal-value signed-number COLLATE collation-name foreign-key-clause GENERATED ALWAYS AS ( expr ) VIRTUAL STORED
Used by: column-def
References: conflict-clause expr foreign-key-clause literal-value signed-number
See also: gencol.html lang_altertable.html lang_createtable.html lang_createtable.html#tablecoldef

column-def:

column-name-list:

comment-syntax:

-- anything-except-newline newline end-of-input /* anything-except-*/ */

See also: lang_comment.html

commit-stmt:

COMMIT TRANSACTION END
Used by: sql-stmt
See also: lang_transaction.html

common-table-expression:

compound-operator:

compound-select-stmt:

WITH RECURSIVE common-table-expression , select-core ORDER BY LIMIT expr UNION UNION ALL select-core INTERSECT EXCEPT ordering-term , OFFSET expr , expr

References: common-table-expression expr ordering-term select-core
See also: lang_select.html#compound

conflict-clause:

create-index-stmt:

CREATE UNIQUE INDEX IF NOT EXISTS schema-name . index-name ON table-name ( indexed-column ) , WHERE expr
Used by: sql-stmt
References: expr indexed-column
See also: lang_createindex.html partialindex.html

create-table-stmt:

CREATE TEMP TEMPORARY TABLE IF NOT EXISTS schema-name . table-name ( column-def table-constraint , ) WITHOUT ROWID , AS select-stmt
Used by: sql-stmt
References: column-def select-stmt table-constraint
See also: lang_createtable.html

create-trigger-stmt:

CREATE TEMP TEMPORARY TRIGGER IF NOT EXISTS schema-name . trigger-name BEFORE AFTER INSTEAD OF DELETE INSERT UPDATE OF column-name , ON table-name FOR EACH ROW WHEN expr BEGIN update-stmt ; END insert-stmt delete-stmt select-stmt
Used by: sql-stmt
References: delete-stmt expr insert-stmt select-stmt update-stmt
See also: lang_createtrigger.html

create-view-stmt:

CREATE TEMP TEMPORARY VIEW IF NOT EXISTS schema-name . view-name ( column-name ) AS select-stmt ,
Used by: sql-stmt
References: select-stmt
See also: lang_createview.html

create-virtual-table-stmt:

CREATE VIRTUAL TABLE IF NOT EXISTS schema-name . table-name USING module-name ( module-argument ) ,
Used by: sql-stmt
See also: lang_createvtab.html

cte-table-name:

table-name ( column-name ) ,
Used by: recursive-cte with-clause
See also: lang_with.html lang_with.html#recursivecte

delete-stmt:

WITH RECURSIVE common-table-expression , DELETE FROM qualified-table-name returning-clause expr WHERE
Used by: create-trigger-stmt sql-stmt
References: common-table-expression expr qualified-table-name returning-clause
See also: lang_createtrigger.html lang_delete.html

delete-stmt-limited:

WITH RECURSIVE common-table-expression , DELETE FROM qualified-table-name WHERE expr returning-clause ORDER BY ordering-term , LIMIT expr OFFSET expr , expr
Used by: sql-stmt
References: common-table-expression expr ordering-term qualified-table-name returning-clause
See also: lang_delete.html

detach-stmt:

DETACH DATABASE schema-name
Used by: sql-stmt
See also: lang_detach.html

drop-index-stmt:

DROP INDEX IF EXISTS schema-name . index-name
Used by: sql-stmt
See also: lang_dropindex.html

drop-table-stmt:

DROP TABLE IF EXISTS schema-name . table-name
Used by: sql-stmt
See also: lang_droptable.html

drop-trigger-stmt:

DROP TRIGGER IF EXISTS schema-name . trigger-name
Used by: sql-stmt
See also: lang_droptrigger.html

drop-view-stmt:

DROP VIEW IF EXISTS schema-name . view-name
Used by: sql-stmt
See also: lang_dropview.html

expr:

literal-value bind-parameter schema-name . table-name . column-name unary-operator expr expr binary-operator expr function-name ( DISTINCT expr ) filter-clause over-clause , * ( expr ) , CAST ( expr AS type-name ) expr COLLATE collation-name expr NOT LIKE GLOB REGEXP MATCH expr ESCAPE expr expr ISNULL NOTNULL NOT NULL expr IS NOT expr expr NOT BETWEEN expr AND expr expr NOT IN ( select-stmt ) expr , schema-name . table-function ( expr ) table-name , NOT EXISTS ( select-stmt ) CASE expr WHEN expr THEN expr ELSE expr END raise-function
Used by: aggregate-function-invocation attach-stmt column-constraint compound-select-stmt create-index-stmt create-trigger-stmt delete-stmt delete-stmt-limited factored-select-stmt filter-clause frame-spec indexed-column insert-stmt join-constraint ordering-term over-clause result-column returning-clause select-core select-stmt simple-function-invocation simple-select-stmt table-constraint table-or-subquery update-stmt update-stmt-limited upsert-clause window-defn window-function-invocation
References: filter-clause literal-value over-clause raise-function select-stmt type-name
See also: lang_aggfunc.html lang_altertable.html lang_attach.html lang_createindex.html lang_createtable.html lang_createtrigger.html lang_createview.html lang_delete.html lang_expr.html lang_insert.html lang_returning.html lang_select.html lang_select.html#compound lang_select.html#simpleselect lang_update.html lang_upsert.html lang_with.html partialindex.html

factored-select-stmt:

WITH RECURSIVE common-table-expression , select-core ORDER BY LIMIT expr compound-operator ordering-term , OFFSET expr , expr

References: common-table-expression compound-operator expr ordering-term select-core
See also: lang_select.html

filter-clause:

foreign-key-clause:

REFERENCES foreign-table ( column-name ) , ON DELETE SET NULL UPDATE SET DEFAULT CASCADE RESTRICT NO ACTION MATCH name NOT DEFERRABLE INITIALLY DEFERRED INITIALLY IMMEDIATE
Used by: column-constraint table-constraint
See also: lang_altertable.html lang_altertable.html#altertabaddcol lang_createtable.html

frame-spec:

GROUPS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING RANGE ROWS UNBOUNDED PRECEDING expr PRECEDING CURRENT ROW expr PRECEDING CURRENT ROW expr FOLLOWING expr PRECEDING CURRENT ROW expr FOLLOWING EXCLUDE CURRENT ROW EXCLUDE GROUP EXCLUDE TIES EXCLUDE NOT OTHERS
Used by: over-clause window-defn
References: expr
See also: lang_aggfunc.html lang_altertable.html lang_attach.html lang_createindex.html lang_createtable.html lang_createtrigger.html lang_createview.html lang_delete.html lang_expr.html lang_insert.html lang_returning.html lang_select.html lang_select.html#compound lang_select.html#simpleselect lang_update.html lang_upsert.html lang_with.html partialindex.html

indexed-column:

insert-stmt:

WITH RECURSIVE common-table-expression , REPLACE INSERT OR ROLLBACK INTO ABORT FAIL IGNORE REPLACE schema-name . table-name AS alias ( column-name ) , VALUES ( expr ) , , upsert-clause select-stmt upsert-clause DEFAULT VALUES returning-clause
Used by: create-trigger-stmt sql-stmt
References: common-table-expression expr returning-clause select-stmt upsert-clause
See also: lang_createtrigger.html lang_insert.html

join-clause:

join-constraint:

join-operator:

literal-value:

numeric-literal:

digit . E e digit . digit - digit + 0x hexdigit

See also: lang_expr.html#litvalue

ordering-term:

over-clause:

pragma-stmt:

PRAGMA schema-name . pragma-name ( pragma-value ) = pragma-value
Used by: sql-stmt
References: pragma-value
See also: pragma.html#syntax

pragma-value:

signed-number name signed-literal
Used by: pragma-stmt
References: signed-number
See also: pragma.html#syntax

qualified-table-name:

schema-name . table-name AS alias INDEXED BY index-name NOT INDEXED
Used by: delete-stmt delete-stmt-limited update-stmt update-stmt-limited
See also: lang_createtrigger.html lang_delete.html lang_indexedby.html lang_update.html

raise-function:

recursive-cte:

cte-table-name AS ( initial-select UNION ALL recursive-select ) UNION

References: cte-table-name
See also: lang_with.html#recursivecte

reindex-stmt:

REINDEX schema-name . index-name table-name collation-name
Used by: sql-stmt
See also: lang_reindex.html

release-stmt:

RELEASE SAVEPOINT savepoint-name
Used by: sql-stmt
See also: lang_savepoint.html

result-column:

returning-clause:

rollback-stmt:

ROLLBACK TRANSACTION TO SAVEPOINT savepoint-name
Used by: sql-stmt
See also: lang_savepoint.html lang_transaction.html

savepoint-stmt:

SAVEPOINT savepoint-name
Used by: sql-stmt
See also: lang_savepoint.html

select-core:

SELECT DISTINCT result-column , ALL FROM table-or-subquery , WHERE expr GROUP BY expr HAVING expr , WINDOW window-name AS window-defn , VALUES ( expr ) , ,
Used by: compound-select-stmt factored-select-stmt simple-select-stmt
References: expr result-column table-or-subquery
See also: lang_select.html lang_select.html#compound lang_select.html#simpleselect

select-stmt:

WITH RECURSIVE common-table-expression , SELECT DISTINCT result-column , ALL FROM table-or-subquery , WHERE expr GROUP BY expr HAVING expr , WINDOW window-name AS window-defn , VALUES ( expr ) , , compound-operator select-core ORDER BY LIMIT expr ordering-term , OFFSET expr , expr
Used by: common-table-expression create-table-stmt create-trigger-stmt create-view-stmt expr insert-stmt sql-stmt table-or-subquery with-clause
References: common-table-expression compound-operator expr ordering-term result-column table-or-subquery
See also: lang_aggfunc.html lang_altertable.html lang_attach.html lang_createindex.html lang_createtable.html lang_createtrigger.html lang_createview.html lang_delete.html lang_expr.html lang_insert.html lang_returning.html lang_select.html lang_select.html#compound lang_select.html#simpleselect lang_update.html lang_upsert.html lang_with.html lang_with.html#recursivecte partialindex.html

signed-number:

simple-function-invocation:

simple-func ( expr ) , *

References: expr
See also: lang_expr.html#booleanexpr

simple-select-stmt:

WITH RECURSIVE common-table-expression , select-core ORDER BY LIMIT expr ordering-term , OFFSET expr , expr

References: common-table-expression expr ordering-term select-core
See also: lang_select.html#simpleselect

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
Used by: sql-stmt-list
References: 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
See also: lang.html lang_explain.html

sql-stmt-list:

sql-stmt ;

References: sql-stmt
See also: lang.html

table-constraint:

CONSTRAINT name PRIMARY KEY ( indexed-column ) conflict-clause , UNIQUE CHECK ( expr ) FOREIGN KEY ( column-name ) foreign-key-clause ,
Used by: create-table-stmt
References: conflict-clause expr foreign-key-clause indexed-column
See also: lang_createtable.html lang_createtable.html#primkeyconst lang_createtable.html#tablecoldef lang_createtable.html#uniqueconst

table-or-subquery:

type-name:

update-stmt:

WITH RECURSIVE common-table-expression , UPDATE OR ROLLBACK qualified-table-name OR REPLACE OR IGNORE OR FAIL OR ABORT SET column-name-list = expr column-name , FROM table-or-subquery , join-clause WHERE expr returning-clause
Used by: create-trigger-stmt sql-stmt
References: column-name-list common-table-expression expr join-clause qualified-table-name returning-clause table-or-subquery
See also: lang_createtrigger.html lang_update.html

update-stmt-limited:

WITH RECURSIVE common-table-expression , UPDATE OR ROLLBACK qualified-table-name OR REPLACE OR IGNORE OR FAIL OR ABORT SET column-name-list = expr column-name , FROM table-or-subquery , join-clause WHERE expr returning-clause ORDER BY ordering-term , LIMIT expr OFFSET expr , expr
Used by: sql-stmt
References: column-name-list common-table-expression expr join-clause ordering-term qualified-table-name returning-clause table-or-subquery
See also: lang_update.html#upfrom

upsert-clause:

ON CONFLICT ( indexed-column ) WHERE expr DO , conflict target UPDATE SET column-name-list = expr WHERE expr NOTHING , column-name
Used by: insert-stmt
References: column-name-list expr indexed-column
See also: lang_createtrigger.html lang_insert.html lang_upsert.html

vacuum-stmt:

VACUUM schema-name INTO filename
Used by: sql-stmt
See also: lang_vacuum.html

window-defn:

( base-window-name PARTITION BY expr , ORDER BY ordering-term , frame-spec )
Used by: window-function-invocation
References: expr frame-spec ordering-term

window-function-invocation:

window-func ( expr ) filter-clause OVER window-name window-defn , *

References: expr filter-clause window-defn
See also: lang_expr.html#booleanexpr

with-clause:

WITH RECURSIVE cte-table-name AS NOT MATERIALIZED ( select-stmt ) MATERIALIZED ,

References: cte-table-name select-stmt
See also: lang_with.html

SQLite is in the Public Domain.
https://sqlite.org/syntaxdiagrams.html