## SQL As Understood By SQLite

SQLite understands most of the standard SQL language. But it does omit some features while at the same time adding a few features of its own. This document attempts to describe precisely what parts of the SQL language SQLite does and does not support. A list of keywords is also provided. The SQL language syntax is described by syntax diagrams.

In all of the syntax diagrams that follow, literal text is shown in bold blue. Non-terminal symbols are shown in italic red. Operators that are part of the syntactic markup itself are shown in black roman.

This document is just an overview of the SQL syntax implemented by SQLite. Many low-level productions are omitted. For detailed information on the language that SQLite understands, refer to the source code and the grammar file "parse.y".

The following syntax documentation topics are available:

aggregate functions ALTER TABLE ANALYZE ATTACH DATABASE BEGIN TRANSACTION comment COMMIT TRANSACTION core functions CREATE INDEX CREATE TABLE CREATE TRIGGER CREATE VIEW | CREATE VIRTUAL TABLE date and time functions DELETE DETACH DATABASE DROP INDEX DROP TABLE DROP TRIGGER DROP VIEW END TRANSACTION EXPLAIN expression INDEXED BY | INSERT keywords ON CONFLICT clause PRAGMA REINDEX RELEASE SAVEPOINT REPLACE ROLLBACK TRANSACTION SAVEPOINT SELECT UPDATE VACUUM

The methods Prepare(), and Execute() accept an SQL statement list (sql-stmt-list) which is a semicolon-separated list of statements.

#### sql-stmt-list:

Each SQL statement in the statement list is an instance of the following:

#### sql-stmt: