sql-stmt-list:

>
>
>
 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 
>
>

alter-table-stmt:

>
 ALTER 
>
 TABLE 
>
>
 database-name 
>
 . 
>
>
>
>
 table-name 
>
<
<
>
>
 RENAME 
>
 TO 
>
 new-table-name 
>
>
 ADD 
>
>
 COLUMN 
>
>
>
>
 column-def 
>
>
>

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 
>
>
>
 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:

>
 column-name 
>
>
 COLLATE 
>
 collation-name 
>
>
>
>
>
 ASC 
>
>
 DESC 
>
>
>
>

create-table-stmt:

>
 CREATE 
>
>
>
>
 TEMP 
>
>
 TEMPORARY 
>
>
 TABLE 
>
>
>
>
 IF 
>
 NOT 
>
 EXISTS 
>
>
<
<
>
>
 database-name 
>
 . 
>
>
>
>
 table-name 
>
>
 ( 
>
>
 column-def 
>
<
 , 
<
>
>
>
<
 table-constraint 
<
 , 
<
>
 ) 
>
>
 AS 
>
 select-stmt 
>
>
>

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 
>
 ) 
>
>
>
 COLLATE 
>
 collation-name 
>
>
 foreign-key-clause 
>
>
>

signed-number:

>
>
>
>
 + 
>
>
 - 
>
>
>
 integer-literal 
>
>
 floating-point-literal 
>
>

table-constraint:

>
>
 CONSTRAINT 
>
 name 
>
>
>
>
<
<
>
>
>
 PRIMARY 
>
 KEY 
>
>
 UNIQUE 
>
>
 ( 
>
>
 indexed-column 
>
<
 , 
<
>
 ) 
>
 conflict-clause 
>
>
 CHECK 
>
 ( 
>
 expr 
>
 ) 
>
>
 FOREIGN 
>
 KEY 
>
 ( 
>
>
 column-name 
>
<
 , 
<
>
 ) 
>
 foreign-key-clause 
>
>
>

foreign-key-clause:

>
 REFERENCES 
>
 foreign-table 
>
>
 ( 
>
>
 column-name 
>
<
 , 
<
>
 ) 
>
>
>
>
<
<
>
>
>
>
 ON 
>
>
 DELETE 
>
>
 UPDATE 
>
>
>
 SET 
>
 NULL 
>
>
 SET 
>
 DEFAULT 
>
>
 CASCADE 
>
>
 RESTRICT 
>
>
 NO 
>
 ACTION 
>
>
>
 MATCH 
>
 name 
>
>
<
<
>
>
>
>
<
<
>
>
>
 NOT 
>
>
>
>
 DEFERRABLE 
>
>
 INITIALLY 
>
 DEFERRED 
>
>
 INITIALLY 
>
 IMMEDIATE 
>
>
>
>
>
>
>
>
>

conflict-clause:

>
>
>
>
 ON 
>
 CONFLICT 
>
>
 ROLLBACK 
>
>
 ABORT 
>
>
 FAIL 
>
>
 IGNORE 
>
>
 REPLACE 
>
>
>

create-trigger-stmt:

>
 CREATE 
>
>
>
>
 TEMP 
>
>
 TEMPORARY 
>
>
 TRIGGER 
>
>
>
>
 IF 
>
 NOT 
>
 EXISTS 
>
>
<
<
>
>
 database-name 
>
 . 
>
>
>
>
 trigger-name 
>
>
 BEFORE 
>
>
 AFTER 
>
>
 INSTEAD 
>
 OF 
>
>
>
>
<
<
>
>
 DELETE 
>
>
 INSERT 
>
>
 UPDATE 
>
>
>
>
 OF 
>
>
 column-name 
>
<
 , 
<
>
>
>
 ON 
>
 table-name 
>
<
<
>
>
 FOR 
>
 EACH 
>
 ROW 
>
>
>
>
>
 WHEN 
>
 expr 
>
>
>
>
<
<
>
 BEGIN 
>
>
>
 update-stmt 
>
>
 insert-stmt 
>
>
 delete-stmt 
>
>
 select-stmt 
>
>
 ; 
>
<
<
>
 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 
>
<
 , 
<
>
 ) 
>
>
>
>
>

delete-stmt:

>
 DELETE 
>
 FROM 
>
 qualified-table-name 
>
>
 WHERE 
>
 expr 
>
>
>
>

delete-stmt-limited:

>
 DELETE 
>
 FROM 
>
 qualified-table-name 
>
>
 WHERE 
>
 expr 
>
>
>
>
<
<
>
>
>
 ORDER 
>
 BY 
>
>
 ordering-term 
>
<
 , 
<
>
>
>
>
<
<
>
 LIMIT 
>
 integer 
>
>
>
 OFFSET 
>
>
 , 
>
>
 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 
>
>
 bind-parameter 
>
>
>
>
 database-name 
>
 . 
>
>
>
>
 table-name 
>
 . 
>
>
>
>
 column-name 
>
>
 unary-operator 
>
 expr 
>
>
 expr 
>
 binary-operator 
>
 expr 
>
>
 function-name 
>
 ( 
>
>
>
 DISTINCT 
>
>
>
>
>
 expr 
>
<
 , 
<
>
>
>
>
 * 
>
>
 ) 
>
>
 ( 
>
 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 
>
<
 , 
<
>
>
 ) 
>
>
>
 database-name 
>
 . 
>
>
>
>
 table-name 
>
>
>
>
>
 NOT 
>
>
>
>
 EXISTS 
>
>
>
>
 ( 
>
 select-stmt 
>
 ) 
>
>
 CASE 
>
>
 expr 
>
>
>
>
>
 WHEN 
>
 expr 
>
 THEN 
>
 expr 
>
<
<
>
>
 ELSE 
>
 expr 
>
>
>
>
 END 
>
>
 raise-function 
>
>

raise-function:

>
 RAISE 
>
 ( 
>
>
 IGNORE 
>
>
>
 ROLLBACK 
>
>
 ABORT 
>
>
 FAIL 
>
>
 , 
>
 error-message 
>
>
 ) 
>

literal-value:

>
>
 integer-literal 
>
>
 floating-point-literal 
>
>
 string-literal 
>
>
 blob-literal 
>
>
 NULL 
>
>
 CURRENT_TIME 
>
>
 CURRENT_DATE 
>
>
 CURRENT_TIMESTAMP 
>
>

insert-stmt:

>
>
 INSERT 
>
>
>
>
 OR 
>
>
 ROLLBACK 
>
>
 ABORT 
>
>
 REPLACE 
>
>
 FAIL 
>
>
 IGNORE 
>
>
>
>
 REPLACE 
>
>
 INTO 
>
>
 database-name 
>
 . 
>
>
>
>
 table-name 
>
<
<
>
>
>
 ( 
>
>
 column-name 
>
<
 , 
<
>
 ) 
>
>
>
>
>
 VALUES 
>
 ( 
>
>
 expr 
>
<
 , 
<
>
 ) 
>
>
 select-stmt 
>
>
>
 DEFAULT 
>
 VALUES 
>
>
>

pragma-stmt:

>
 PRAGMA 
>
>
 database-name 
>
 . 
>
>
>
>
 pragma-name 
>
>
>
>
 = 
>
 pragma-value 
>
>
 ( 
>
 pragma-value 
>
 ) 
>
>

pragma-value:

>
>
 signed-number 
>
>
 name 
>
>
 string-literal 
>
>

reindex-stmt:

>
 REINDEX 
>
>
 collation-name 
>
>
>
 database-name 
>
 . 
>
>
>
>
>
 table-name 
>
>
 index-name 
>
>
>

select-stmt:

>
>
 select-core 
>
>
<
<
 compound-operator 
<
<
>
<
<
>
>
 ORDER 
>
 BY 
>
>
 ordering-term 
>
<
 , 
<
>
>
>
>
<
<
>
>
 LIMIT 
>
 integer 
>
>
>
 OFFSET 
>
>
 , 
>
>
 integer 
>
>
>
>
>
>
>
>

select-core:

>
 SELECT 
>
>
>
>
 DISTINCT 
>
>
 ALL 
>
>
>
 result-column 
>
<
 , 
<
>
<
<
>
>
 FROM 
>
 join-source 
>
>
>
>
<
<
>
>
 WHERE 
>
 expr 
>
>
>
>
<
<
>
>
 GROUP 
>
 BY 
>
>
 ordering-term 
>
<
 , 
<
>
>
 HAVING 
>
 expr 
>
>
>
>
>
>
>
>

result-column:

>
>
 * 
>
>
 table-name 
>
 . 
>
 * 
>
>
 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 
>
>
>
 ( 
>
 select-stmt 
>
 ) 
>
>
>
 AS 
>
>
>
>
 table-alias 
>
>
>
>
>
 ( 
>
 join-source 
>
 ) 
>
>

join-op:

>
>
 , 
>
>
>
>
>
 NATURAL 
>
>
>
>
>
>
 LEFT 
>
>
>
>
>
 OUTER 
>
>
>
 INNER 
>
>
 CROSS 
>
>
 JOIN 
>
>

join-constraint:

>
>
 ON 
>
 expr 
>
>
 USING 
>
 ( 
>
>
 column-name 
>
<
 , 
<
>
 ) 
>
>
>
>

ordering-term:

>
 expr 
>
>
>
>
 COLLATE 
>
 collation-name 
>
>
>
>
>
 ASC 
>
>
 DESC 
>
>

compound-operator:

>
>
 UNION 
>
>
 ALL 
>
>
>
>
>
 INTERSECT 
>
>
 EXCEPT 
>
>

update-stmt:

>
 UPDATE 
>
>
>
>
 OR 
>
>
 ROLLBACK 
>
>
 ABORT 
>
>
 REPLACE 
>
>
 FAIL 
>
>
 IGNORE 
>
>
>
 qualified-table-name 
>
<
<
>
 SET 
>
>
 column-name 
>
 = 
>
 expr 
>
<
 , 
<
>
>
 WHERE 
>
 expr 
>
>
>
>
>

update-stmt-limited:

>
 UPDATE 
>
>
>
>
 OR 
>
>
 ROLLBACK 
>
>
 ABORT 
>
>
 REPLACE 
>
>
 FAIL 
>
>
 IGNORE 
>
>
>
 qualified-table-name 
>
<
<
>
 SET 
>
>
 column-name 
>
 = 
>
 expr 
>
<
 , 
<
>
>
 WHERE 
>
 expr 
>
>
>
>
<
<
>
>
>
 ORDER 
>
 BY 
>
>
 ordering-term 
>
<
 , 
<
>
>
>
>
<
<
>
 LIMIT 
>
 integer 
>
>
>
 OFFSET 
>
>
 , 
>
>
 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 
>
>
>
 /* 
>
>
>
<
 anything-except-*/ 
<
>
>
 */ 
>
>
 end-of-input 
>
>
>