statement
::= CREATE create | DROP drop | SELECT select orderby | INSERT
insert | DELETE delete | UPDATE update | passthroughSQL
passthroughSQL
::= any statement supported by the backend
create ::=
TABLE tablename ( createcols ) | INDEX
createcols
::= createcol , createcols | createcol
createcol ::=
columnname datatype | columnname datatype ( integer ) |
columnname datatype ( integer , integer )
drop ::=
TABLE tablename
select ::=
selectcols FROM tablelist where groupby having
delete ::=
FROM tablename where
insert ::=
INTO tablename insertvals
update ::=
tablename SET setlist where
setlist ::=
set | setlist , set
set ::=
columnname = NULL | columnname = expression
insertvals
::= ( columnlist ) VALUES ( valuelist ) | VALUES ( valuelist
)
columnlist
::= columnname , columnlist | columnname
valuelist ::=
NULL , valuelist | expression , valuelist | expression | NULL
selectcols
::= selectallcols * | selectallcols selectlist
selectallcols
::= | ALL | DISTINCT
selectlist
::= selectlistitem , selectlist |
selectlistitem
selectlistitem
::= expression | expression aliasname |
expression AS
aliasname
where ::= |
WHERE boolean
having ::= |
HAVING boolean
boolean ::=
and | and OR boolean
and ::= not |
not AND and
not ::=
comparison | NOT comparison
comparison
::= ( boolean ) | colref IS NULL | colref IS NOT NULL |
expression LIKE pattern | expression NOT LIKE pattern |
expression IN ( valuelist ) | expression NOT IN ( valuelist ) |
expression op expression
op ::= > |
>= | < | <= | = | <>
pattern ::=
string | ? | USER
expression
::= expression + times | expression - times |
times
times ::=
times * neg | times / neg | neg
neg ::= term
| + term | - term
term ::= (
expression ) | colref | simpleterm | aggterm |
aggterm ::=
COUNT ( * ) | AVG ( expression ) | MAX ( expression ) | MIN
( expression ) | SUM ( expression )
simpleterm
::= string | realnumber | ? | USER | date | time | timestamp
groupby ::= |
GROUP BY groupbyterms
groupbyterms
::= colref | colref , groupbyterms
orderby ::= |
ORDER BY orderbyterms
orderbyterms
::= orderbyterm | orderbyterm , orderbyterms
orderbyterm
::= colref asc | integer asc
asc ::= | ASC
| DESC
colref ::=
aliasname . columnname | columnname
tablelist ::=
tablelistitem , tablelist | tablelistitem
tablelistitem
::= tableref
tableref ::=
tablename | tablename aliasname
tablename ::=
identifier
datatype ::=
identifier
columnname
::= identifier
aliasname ::=
identifier
identifier
::= an identifier (identifiers containing spaces must be
enclosed in double quotes)
string ::= a
string (enclosed in single quotes)
realnumber
::= a non-negative real number
integer ::= a
non-negative integer