Expand description
The SpacetimeDB SQL grammar
statement
= select
| insert
| delete
| update
| set
| show
;
insert
= INSERT INTO table [ '(' column { ',' column } ')' ] VALUES '(' literal { ',' literal } ')'
;
delete
= DELETE FROM table [ WHERE predicate ]
;
update
= UPDATE table SET [ '(' assignment { ',' assignment } ')' ] [ WHERE predicate ]
;
assignment
= column '=' expr
;
set
= SET var ( TO | '=' ) literal
;
show
= SHOW var
;
var
= ident
;
select
= SELECT [ DISTINCT ] projection FROM relation [ [ WHERE predicate ] [ ORDER BY order ] [ LIMIT limit ] ]
;
projection
= listExpr
| projExpr { ',' projExpr }
| aggrExpr { ',' aggrExpr }
;
listExpr
= STAR
| ident '.' STAR
;
projExpr
= columnExpr [ [ AS ] ident ]
;
columnExpr
= column
| field
;
aggrExpr
= COUNT '(' STAR ')' AS ident
| COUNT '(' DISTINCT columnExpr ')' AS ident
| SUM '(' columnExpr ')' AS ident
;
relation
= table
| '(' query ')'
| relation [ [AS] ident ] { [INNER] JOIN relation [ [AS] ident ] ON predicate }
;
predicate
= expr
| predicate AND predicate
| predicate OR predicate
;
expr
= literal
| ident
| field
| expr op expr
;
field
= ident '.' ident
;
op
= '='
| '<'
| '>'
| '<' '='
| '>' '='
| '!' '='
| '<' '>'
;
order
= columnExpr [ ASC | DESC ] { ',' columnExpr [ ASC | DESC ] }
;
limit
= INTEGER
;
table
= ident
;
column
= ident
;
literal
= INTEGER
| FLOAT
| STRING
| HEX
| TRUE
| FALSE
;Functionsยง
- parse_
sql - Parse a SQL string