6.2.9 Procedural query layer
The query language described in the previous sections is a syntax wrapper for a set of constructors for specially designed SQL AST nodes.
Code that uses the constructors is generally more verbose than code that uses the syntax query language. However, in some cases it is useful to have access to standard Scheme procedures such as apply and map when building queries.
The elements of the procedural language are listed below for completeness. See the documentation for the syntax wrappers for more information.
6.2.9.1 Select statements
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from : (U source? query?) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
where : (U expression? #f) = #f | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
order : (listof order?) = null | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
limit : (U integer? #f) = #f | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
offset : (U integer? #f) = #f | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
group : (listof (U column? source-alias?)) = null | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
distinct : (U expression? #t #f) = #f |
6.2.9.2 From clauses
left : source? |
right : source? |
on : expr? |
left : source? |
right : source? |
on : expr? |
left : source? |
right : source? |
on : expr? |
left : source? |
right : source? |
6.2.9.3 Expressions (where/on/having clauses)
arg : expr+quotable? |
arg : expr+quotable? |
arg : expr+quotable? |
arg1 : expr+quotable? |
arg2 : expr+quotable? |
arg1 : expr+quotable? |
arg2 : expr+quotable? |
arg1 : expr+quotable? |
arg2 : expr+quotable? |
arg1 : expr+quotable? |
arg2 : expr+quotable? |
arg1 : expr+quotable? |
arg2 : expr+quotable? |
arg1 : expr+quotable? |
arg2 : expr+quotable? |
arg1 : expr+quotable? |
arg1 : expr+quotable? |
arg1 : expr+quotable? |
arg1 : expr+quotable? |
arg2 : expr+quotable? |
arg : expr+quotable? |
arg : expr+quotable? |
arg : expr+quotable? |
arg : expr+quotable? |
str : expression? |
pattern : expression? |
str : expression? |
pattern : expression? |
str : expression? |
pattern : expression? |
arg1 : expression? |
| |||||||||||||||||||||
haystack : expression? | |||||||||||||||||||||
needle : expression? | |||||||||||||||||||||
replacement : expression? |
| |||||||||||||||||||||
haystack : expression? | |||||||||||||||||||||
pattern : expression? | |||||||||||||||||||||
replacement : expression? |
| |||||||||||||||||||||
haystack : expression? | |||||||||||||||||||||
pattern : expression? | |||||||||||||||||||||
replacement : expression? |
| |||||||||||||||||||||
haystack : expression? | |||||||||||||||||||||
pattern : expression? | |||||||||||||||||||||
replacement : expression? |
| |||||||||||||||||||||
haystack : expression? | |||||||||||||||||||||
pattern : expression? | |||||||||||||||||||||
replacement : expression? |
datum : expr+quotable? |
format-string : expr+quotable? |
datum : expr+quotable? |
format-string : expr+quotable? |
test : expr+quotable? |
then : expr+quotable? |
else : (U expr+quotable? #f) = #f |
| ||||||||||
|
arg : expr+quotable? |
arg : expr+quotable? |
needle : expr+quotable? |
haystack : (U (listof quotable?) query?) |
column : column? |
column : column? |
column : column? |
column : column? |
arg : (U source? #f) = #f |
6.2.9.4 Order clauses
column : column? |
dir : (U 'asc 'desc) |
column : column? |
column : column? |
6.2.9.5 Aliases
id : symbol? |
entity : entity? |
(sql:alias id query) → query-alias? |
id : symbol? |
query : query? |
(sql:alias id expr) → expression-alias? |
id : symbol? |
expr : expression? |
(sql:alias entity attr) → attribute-alias? |
entity : entity-alias? |
attr : (U attribute? symbol?) |
6.2.9.6 Underlying data structures
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
what : (listof column?) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
distinct : (U expression? #t #f) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
from : source? | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
where : (U expression? #f) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
group : (listof expression?) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
order : (listof order?) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
having : (U expression? #f) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
limit : (U integer? #f) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
offset : (U integer? #f) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local-columns : (listof column?) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
imported-columns : (listof column?) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
extract-info : (U entity? type? (listof (U entity? type?))) |
|
| |||||
name : symbol? | |||||
value : (U entity? query?) |
|
|
| |||||
op : (U 'inner 'outer 'left 'right) | |||||
left : source? | |||||
right : source? | |||||
on : (U expression? #f) |
| |||||
type : type? |
| |||||
name : symbol? |
| |||||
entity : entity-alias? | |||||
attribute : attribute? |
| |||||
value : expression? |
| |||||
op : symbol? | |||||
args : (listof (U expression? special-argument)) |
|
| |||||
value : any |
| |||||
expression : expression? | |||||
direction : (U 'asc 'desc) |