Application Note for QuNect ODBC for QuickBase
SQL Syntax Supported by QuNect ODBC for QuickBase
statement ::= ALTER alter | CREATE create | DROP drop | SELECT select orderby | INSERT insert | DELETE delete | UPDATE update
alter ::= TABLE tablename ADD createcol
create ::= TABLE tablename ( createcols )
createcols ::= createcol , createcols | createcol
createcol ::= columnname datatype | columnname datatype ( integer ) | columnname datatype ( integer , integer ) | CONSTRAINT constraintname PRIMARY KEY (columnname) | CONSTRAINT constraintname FOREIGN KEY (columnname) REFERENCES tablename(columnname)
drop ::= TABLE tablename
select ::= top selectcols FROM tablelist where groupby having limit
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 ) SELECT select | SELECT select
columnlist ::= columnname , columnlist | columnname
valuelist ::= NULL , valuelist | expression , valuelist | expression | NULL
top ::= | TOP integer
selectcols ::= selectallcols * | selectallcols selectlist
selectallcols ::= | ALL | DISTINCT
selectlist ::= selectlistitem , selectlist | selectlistitem
selectlistitem ::= expression | expression aliasname | expression AS aliasname | aliasname.*
where ::= | WHERE boolean
having ::= | HAVING boolean
limit ::= | LIMIT integer
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 |
EXISTS ( SELECT select ) | expression op selectop ( SELECT select ) |
expression IN ( SELECT select ) | expression NOT IN ( SELECT select ) |
expression BETWEEN expression AND expression) |
expression NOT BETWEEN expression AND expression)
selectop ::= | ALL | ANY
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 |
scalar
scalar ::= scalarescape | scalarshorthand
scalarescape ::= --*(VENDOR(MICROSOFT),PRODUCT(ODBC) FN fn )*--
scalarshorthand ::= { FN fn }
fn ::= functionname ( valuelist ) | functionname ( )
aggterm ::= COUNT ( * ) | AVG ( expression ) | MAX ( expression ) | MIN ( expression ) | SUM ( expression ) | COUNT ( 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 | outerjoin
outerjoin ::= ojescape | ojshorthand
ojescape ::= --*(VENDOR(MICROSOFT),PRODUCT(ODBC) OJ oj )*--
ojshorthand ::= { OJ oj }
oj := leftoj | inneroj
leftoj ::= tableref | ( leftoj ) | leftoj LEFT OUTER JOIN leftoj ON boolean
inneroj ::= tableref | ( inneroj ) | inneroj INNER JOIN inneroj ON boolean
tableref ::= tablename | tablename aliasname
constraintname ::= identifier
functionname ::= identifier
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, when used in a LIKE clause the percent sign (%) character is a wildcard and matches any number of characters,
the underscore character matches any single character, use a backslash to escape the percent sign and underscore characters)
realnumber ::= a non-negative real number (including E notation)
integer ::= a non-negative integer
date ::= dateescape | dateshorthand
dateescape ::= --*(VENDOR(MICROSOFT),PRODUCT(ODBC) d dateval )*--
dateshorthand ::= { d dateval }
dateval ::= a date in yyyy-mm-dd format in single quotes (for example, '1996-02-05')
time ::= timeescape | timeshorthand
timeescape ::= --*(VENDOR(MICROSOFT),PRODUCT(ODBC) t timeval )*--
timeshorthand ::= { t timeval }
timeval ::= a time in hh:mm:ss format in single quotes (for example, '10:19:48')
timestamp ::= timestampescape | timestampshorthand
timestampescape ::= --*(VENDOR(MICROSOFT),PRODUCT(ODBC) ts timestampval )*--
timestampshorthand ::= { ts timestampval }
timestampval ::= a timestamp in yyyy-mm-dd hh:mm:ss[.ffffff] format in single quotes (for example, '1996-02-05 10:19:48.529')