Difference between revisions of "ODBC: Supported SQL Grammar"
Yvonnemilne (Talk | contribs) |
Yvonnemilne (Talk | contribs) (→statement) |
||
(8 intermediate revisions by one user not shown) | |||
Line 6: | Line 6: | ||
|<blank>||No qualifier is required | |<blank>||No qualifier is required | ||
|- | |- | ||
− | |<command> | + | |<command> | <command>||Use one of the specified commands |
|- | |- | ||
|[qualifier]||Optional qualifier, may be omitted | |[qualifier]||Optional qualifier, may be omitted | ||
Line 17: | Line 17: | ||
− | statement::= ALTER [[#alter|alter]] | CREATE [[#create|create]] | DELETE [[#delete|delete]] | DROP [[#drop|drop]] | INSERT [[#insert|insert]] | GRANT [[#grant|grant]] | RECITAL [[#recital|recital]] | REVOKE [[#revoke|revoke]] | SELECT [[#select|select]] | UPDATE [[#update|update]] | + | ==statement== |
+ | [[#statement|statement]]::= ALTER [[#alter|alter]] | CREATE [[#create|create]] | DELETE [[#delete|delete]] | DROP [[#drop|drop]] | INSERT [[#insert|insert]] | GRANT [[#grant|grant]] | RECITAL [[#recital|recital]] | REVOKE [[#revoke|revoke]] | SELECT [[#select|select]] | UPDATE [[#update|update]] | ||
====aggterm==== | ====aggterm==== | ||
COUNT (*) | AVG ([[#expression|expression]]) | MAX ([[#expression|expression]]) | MIN ([[#expression|expression]]) | MIN ([[#expression|expression]]) | SUM ([[#expression|expression]]) | COUNT (*) | AVG ([[#expression|expression]]) | MAX ([[#expression|expression]]) | MIN ([[#expression|expression]]) | MIN ([[#expression|expression]]) | SUM ([[#expression|expression]]) | ||
− | |||
====alias==== | ====alias==== | ||
AS [[#aliasname|aliasname]] | AS [[#aliasname|aliasname]] | ||
− | |||
====aliasname==== | ====aliasname==== | ||
[[#identifier|identifier]] | [[#identifier|identifier]] | ||
− | |||
====alter==== | ====alter==== | ||
TABLE [[#tablename|tablename]] ADD ([[#createcols|createcols]]) | TABLE [[#tablename|tablename]] ADD ([[#createcols|createcols]]) | ||
− | |||
====and==== | ====and==== | ||
− | [not]] | [not]] AND [and]] | + | [[#not|not]] | [[#not|not]] AND [[#and|and]] |
====asc==== | ====asc==== | ||
<blank> | ASC | DESC | <blank> | ASC | DESC | ||
====boolean==== | ====boolean==== | ||
− | <blank> [and]] | [and]] OR [[#boolean|boolean]] | + | <blank> [[#and|and]] | [[#and|and]] OR [[#boolean|boolean]] |
====coldesc==== | ====coldesc==== | ||
− | <blank> | DESCRIPTION [string]] | + | <blank> | DESCRIPTION [[#string|string]] |
====colref==== | ====colref==== | ||
− | [[#aliasname|aliasname]].[columnname]] | [columnname]] | + | [[#aliasname|aliasname]].[[#columnname|columnname]] | [[#columnname|columnname]] |
====column==== | ====column==== | ||
− | [columnname | + | [[#columnname|columnname]] |
====columnlist==== | ====columnlist==== | ||
[[#identifier|identifier]], [[#identifier|identifier]] | [[#identifier|identifier]] | [[#identifier|identifier]], [[#identifier|identifier]] | [[#identifier|identifier]] | ||
Line 49: | Line 46: | ||
[[#identifier|identifier]] | [[#identifier|identifier]] | ||
====comparison==== | ====comparison==== | ||
− | ([[#boolean|boolean]]) | [colref]] IS NULL | [colref]] IS NOT NULL | [[#expression|expression]] LIKE [pattern]] | [[#expression|expression]] NOT LIKE [pattern]] | [[#expression|expression]] IN {[valuelist]]} | [[#expression|expression]] NOT IN {[valuelist]]} | [[#expression|expression]] [op]] [[#expression|expression]] | + | ([[#boolean|boolean]]) | [[#colref|colref]] IS NULL | [[#colref|colref]] IS NOT NULL | [[#expression|expression]] LIKE [[#pattern|pattern]] | [[#expression|expression]] NOT LIKE [[#pattern|pattern]] | [[#expression|expression]] IN {[[#valuelist|valuelist]]} | [[#expression|expression]] NOT IN {[[#valuelist|valuelist]]} | [[#expression|expression]] [[#op|op]] [[#expression|expression]] |
====create==== | ====create==== | ||
− | TABLE [[#tablename|tablename]] ([[#createcols|createcols]]) | 0 [UNIQUE] INDEX [indexname]] ON [[#tablename|tablename]] ([indexcols]]) | + | TABLE [[#tablename|tablename]] ([[#createcols|createcols]]) | 0 [UNIQUE] INDEX [[#indexname|indexname]] ON [[#tablename|tablename]] ([[#indexcols|indexcols]]) |
====createcol==== | ====createcol==== | ||
− | [columnname]] [datatype]] [coldesc]] | [columnname]] [datatype]] ([[#integer|integer]]) [coldesc]] | [columnname]] [datatype]] ([[#integer|integer]], [[#integer|integer]]) [coldesc]] | + | [[#columnname|columnname]] [[#datatype|datatype]] [[#coldesc|coldesc]] | [[#columnname|columnname]] [[#datatype|datatype]] ([[#integer|integer]]) [[#coldesc|coldesc]] | [[#columnname|columnname]] [[#datatype|datatype]] ([[#integer|integer]], [[#integer|integer]]) [[#coldesc|coldesc]] |
====createcols==== | ====createcols==== | ||
[[#createcol|createcol]], [[#createcols|createcols]] | [[#createcol|createcol]] | [[#createcol|createcol]], [[#createcols|createcols]] | [[#createcol|createcol]] | ||
Line 63: | Line 60: | ||
a date in ODBC escape clause format (for example, {d'1996-04-04'} or --(*vendor(Microsoft), product(ODBC)d'1996-04-04'*)-- | a date in ODBC escape clause format (for example, {d'1996-04-04'} or --(*vendor(Microsoft), product(ODBC)d'1996-04-04'*)-- | ||
====delete==== | ====delete==== | ||
− | FROM [[#tablename|tablename]] [where]] | + | FROM [[#tablename|tablename]] [[#where|where]] |
====drop==== | ====drop==== | ||
− | TABLE [[#tablename|tablename]] | INDEX [indexname]] | + | TABLE [[#tablename|tablename]] | INDEX [[#indexname|indexname]] |
====expression==== | ====expression==== | ||
− | [[#expression|expression]] + [times]] | [[#expression|expression]] - [times]] | [times]] | + | [[#expression|expression]] + [[#times|times]] | [[#expression|expression]] - [[#times|times]] | [[#times|times]] |
====forupdate==== | ====forupdate==== | ||
− | <blank> | FOR UPDATE | FOR UPDATE OF [columnlist]] | + | <blank> | FOR UPDATE | FOR UPDATE OF [[#columnlist|columnlist]] |
====grant==== | ====grant==== | ||
− | [privilege]] ON [[#tablename|tablename]] TO [usergroups]] | + | [[#privilege|privilege]] ON [[#tablename|tablename]] TO [[#usergroups|usergroups]] |
====groupby==== | ====groupby==== | ||
− | GROUP BY [groupbyterms]] | + | GROUP BY [[#groupbyterms|groupbyterms]] |
====groupbyterms==== | ====groupbyterms==== | ||
− | [colref]] | [colref]], [groupbyterms]] | + | [[#colref|colref]] | [[#colref|colref]], [[#groupbyterms|groupbyterms]] |
====groups==== | ====groups==== | ||
− | [[#integer|integer]], [groups]] | [[#integer|integer]] | [[#integer|integer]] – [[#integer|integer]], [groups] | [[#integer|integer]] – [[#integer|integer]] | * | + | [[#integer|integer]], [[#groups|groups]] | [[#integer|integer]] | [[#integer|integer]] – [[#integer|integer]], [[#groups|groups]] | [[#integer|integer]] – [[#integer|integer]] | * |
====having==== | ====having==== | ||
<blank> | HAVING [[#boolean|boolean]] | <blank> | HAVING [[#boolean|boolean]] | ||
Line 83: | Line 80: | ||
an identifier (identifiers containing spaces must be enclosed in double quotes) | an identifier (identifiers containing spaces must be enclosed in double quotes) | ||
====indexcols==== | ====indexcols==== | ||
− | [columnname] [ASC | DESC] | [indexcols], [indexcols] | + | [[#columnname|columnname]] [ASC | DESC] | [[#indexcols|indexcols]], [[#indexcols|indexcols]] |
====indexname==== | ====indexname==== | ||
[[#identifier|identifier]] | [[#identifier|identifier]] | ||
====insert==== | ====insert==== | ||
− | INTO [[#tablename|tablename]] [insertvals | + | INTO [[#tablename|tablename]] [[#insertvals|insertvals]] |
====insertvals==== | ====insertvals==== | ||
− | ([[columnlist]]) VALUES ([[#valuelist|valuelist]]) | VALUES ([[#valuelist|valuelist]]) | + | ([[#columnlist|columnlist]]) VALUES ([[#valuelist|valuelist]]) | VALUES ([[#valuelist|valuelist]]) |
====integer==== | ====integer==== | ||
a non-negative integer | a non-negative integer | ||
====join==== | ====join==== | ||
− | INNER JOIN | OUTER JOIN | LEFT [OUTER] JOIN | RIGHT [OUTER] JOIN | CROSS JOIN [[tableref]] ON [[table]].[[column]] = [[table]].[[column]] | + | INNER JOIN | OUTER JOIN | LEFT [OUTER] JOIN | RIGHT [OUTER] JOIN | CROSS JOIN [[#tableref|tableref]] ON [[#table|table]].[[#column|column]] = [[#table|table]].[[#column|column]] |
====neg==== | ====neg==== | ||
− | [term] | + [term] | - [term] | + | [[#term|term]] | + [[#term|term]] | - [[#term|term]] |
+ | |||
====not==== | ====not==== | ||
− | [comparison] | NOT [comparison] | + | [[#comparison|comparison]] | NOT [[#comparison|comparison]] |
+ | |||
====op==== | ====op==== | ||
> | >= | < | <= | = | <> | > | >= | < | <= | = | <> | ||
====orderby==== | ====orderby==== | ||
− | <blank> | ORDER BY [orderbyterms]] | + | <blank> | ORDER BY [[#orderbyterms|orderbyterms]] |
====orderbyterm==== | ====orderbyterm==== | ||
− | [colref]] [asc]] | [[#integer|integer]] [asc]] | + | [[#colref|colref]] [[#asc|asc]] | [[#integer|integer]] [[#asc|asc]] |
+ | |||
====orderbyterms==== | ====orderbyterms==== | ||
− | [orderbyterm]] | [orderbyterm]], [orderbyterms]] | + | [[#orderbyterm|orderbyterm]] | [[#orderbyterm|orderbyterm]], [[#orderbyterms|orderbyterms]] |
====pattern==== | ====pattern==== | ||
− | [string]] | ? | USER | + | [[#string|string]] | ? | USER |
+ | |||
====privilege==== | ====privilege==== | ||
− | ALL | ALTER | DELETE | INSERT | READ ONLY [columnlist]] | SELECT [columnlist]] | UPDATE [columnlist]] | + | ALL | ALTER | DELETE | INSERT | READ ONLY [[#columnlist|columnlist]] | SELECT [[#columnlist|columnlist]] | UPDATE [[#columnlist|columnlist]] |
====realnumber==== | ====realnumber==== | ||
a non-negative real number | a non-negative real number | ||
Line 115: | Line 116: | ||
any recital command excluding user interface commands | any recital command excluding user interface commands | ||
====revoke==== | ====revoke==== | ||
− | [privilege]] ON [[#tablename|tablename]] FROM [usergroups]] | + | [[#privilege|privilege]] ON [[#tablename|tablename]] FROM [[#usergroups|usergroups]] |
====select==== | ====select==== | ||
− | [selectcols]] FROM [tablelist]] [where]] [groupby]] [having]] [orderby]] [forupdate]] | + | [[#selectcols|selectcols]] FROM [[#tablelist|tablelist]] [[#where|where]] [[#groupby|groupby]] [[#having|having]] [[#orderby|orderby]] [[#forupdate|forupdate]] |
====selectallcols==== | ====selectallcols==== | ||
<blank>| ALL | DISTINCT | <blank>| ALL | DISTINCT | ||
====selectcols==== | ====selectcols==== | ||
− | [selectallcols]] * | [selectallcols]] [selectlist]] | + | [[#selectallcols|selectallcols]] * | [[#selectallcols|selectallcols]] [[#selectlist|selectlist]] |
====selectlist==== | ====selectlist==== | ||
− | [[#expression|expression]], [selectlist]] | [[#expression|expression]] | + | [[#expression|expression]], [[#selectlist|selectlist]] | [[#expression|expression]] |
====set==== | ====set==== | ||
− | [column]] = NULL | [column]] = [simpleterm]] | + | [[#column|column]] = NULL | [[#column|column]] = [[#simpleterm|simpleterm]] |
====setlist==== | ====setlist==== | ||
− | [set]] | [setlist]], [set]] | + | [[#set|set]] | [[#setlist|setlist]], [[#set|set]] |
====simpleterm==== | ====simpleterm==== | ||
− | [string]] | [realnumber]] | ? | USER | [date]] | [time]] | [timestamp] | + | [[#string|string]] | [[#realnumber|realnumber]] | ? | USER | [[#date|date]] | [[#time|time]] | [[#timestamp|timestamp]] |
====string==== | ====string==== | ||
a string (enclosed in single quotes) | a string (enclosed in single quotes) | ||
====table==== | ====table==== | ||
− | [[#tablename|tablename]] | [aliasname]] | + | [[#tablename|tablename]] | [[#aliasname|aliasname]] |
====tablelist==== | ====tablelist==== | ||
− | [tableref | + | [[#tableref|tableref]], [[#tablelist|tablelist]] | [[#tableref|tableref]] | [[#tableref|tableref]] [[#join|join]] | [[#viewname|viewname]] |
+ | |||
====tablename==== | ====tablename==== | ||
[[#identifier|identifier]] | [[#identifier|identifier]] | ||
====tableref==== | ====tableref==== | ||
− | [[#tablename|tablename]] | [[#tablename|tablename]] [alias | + | [[#tablename|tablename]] | [[#tablename|tablename]] [[#alias|alias]] |
====term==== | ====term==== | ||
− | ([[#expression|expression]]) | [colref | + | ([[#expression|expression]]) | [[#colref|colref]] | [[#simpleterm|simpleterm]] | [[#aggterm|aggterm]] |
====time==== | ====time==== | ||
a time in ODBC escape clause format (for example,{t'10:19:48'} or --(*vendor(Microsoft), product(ODBC)t'10:19:48'*)-- | a time in ODBC escape clause format (for example,{t'10:19:48'} or --(*vendor(Microsoft), product(ODBC)t'10:19:48'*)-- | ||
====times==== | ====times==== | ||
− | [times | + | [[#times|times]] * [[#neg|neg]] | [[#times|times]] / [[#neg|neg]] | [[#neg|neg]] |
====timestamp==== | ====timestamp==== | ||
a timestamp in ODBC escape clause format (for example, {ts'1996-04-04 10:19:48.529'} or --(*vendor(Microsoft), product(ODBC)ts'1996-04-04 10:19:54.529'*) | a timestamp in ODBC escape clause format (for example, {ts'1996-04-04 10:19:48.529'} or --(*vendor(Microsoft), product(ODBC)ts'1996-04-04 10:19:54.529'*) | ||
====update==== | ====update==== | ||
− | [[#tablename|tablename]] SET [setlist | + | [[#tablename|tablename]] SET [[#setlist|setlist]] [[#where|where]] |
====usergroup==== | ====usergroup==== | ||
user and group access control string in the format '[users,groups]' | user and group access control string in the format '[users,groups]' | ||
====usergroups==== | ====usergroups==== | ||
− | [usergroup | + | [[#usergroup|usergroup]], [[#usergroups|usergroups]] | PUBLIC |
====users==== | ====users==== | ||
− | [[#integer|integer]], [users | + | [[#integer|integer]], [[#users|users]] | [[#integer|integer]] | [[#integer|integer]] – [[#integer|integer]] , [[#users|users]] | [[#integer|integer]] – [[#integer|integer]] | * |
====valuelist==== | ====valuelist==== | ||
NULL, [[#valuelist|valuelist]] | [[#expression|expression]], [[#valuelist|valuelist]] | [[#expression|expression]] | NULL | NULL, [[#valuelist|valuelist]] | [[#expression|expression]], [[#valuelist|valuelist]] | [[#expression|expression]] | NULL |
Latest revision as of 12:41, 26 March 2009
The grammar declarations are described with these notations:
Notation | Description |
---|---|
<blank> | No qualifier is required |
<command> | <command> | Use one of the specified commands |
[qualifier] | Optional qualifier, may be omitted |
(paramval) | Required parameter value |
expression | Numeric or string calculation |
Contents
- 1 statement
- 1.1 aggterm
- 1.2 alias
- 1.3 aliasname
- 1.4 alter
- 1.5 and
- 1.6 asc
- 1.7 boolean
- 1.8 coldesc
- 1.9 colref
- 1.10 column
- 1.11 columnlist
- 1.12 columnname
- 1.13 comparison
- 1.14 create
- 1.15 createcol
- 1.16 createcols
- 1.17 cursorname
- 1.18 datatype
- 1.19 date
- 1.20 delete
- 1.21 drop
- 1.22 expression
- 1.23 forupdate
- 1.24 grant
- 1.25 groupby
- 1.26 groupbyterms
- 1.27 groups
- 1.28 having
- 1.29 identifier
- 1.30 indexcols
- 1.31 indexname
- 1.32 insert
- 1.33 insertvals
- 1.34 integer
- 1.35 join
- 1.36 neg
- 1.37 not
- 1.38 op
- 1.39 orderby
- 1.40 orderbyterm
- 1.41 orderbyterms
- 1.42 pattern
- 1.43 privilege
- 1.44 realnumber
- 1.45 recital
- 1.46 revoke
- 1.47 select
- 1.48 selectallcols
- 1.49 selectcols
- 1.50 selectlist
- 1.51 set
- 1.52 setlist
- 1.53 simpleterm
- 1.54 string
- 1.55 table
- 1.56 tablelist
- 1.57 tablename
- 1.58 tableref
- 1.59 term
- 1.60 time
- 1.61 times
- 1.62 timestamp
- 1.63 update
- 1.64 usergroup
- 1.65 usergroups
- 1.66 users
- 1.67 valuelist
- 1.68 viewname
- 1.69 where
statement
statement::= ALTER alter | CREATE create | DELETE delete | DROP drop | INSERT insert | GRANT grant | RECITAL recital | REVOKE revoke | SELECT select | UPDATE update
aggterm
COUNT (*) | AVG (expression) | MAX (expression) | MIN (expression) | MIN (expression) | SUM (expression)
alias
AS aliasname
aliasname
alter
TABLE tablename ADD (createcols)
and
asc
<blank> | ASC | DESC
boolean
coldesc
<blank> | DESCRIPTION string
colref
aliasname.columnname | columnname
column
columnlist
identifier, identifier | identifier
columnname
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
create
TABLE tablename (createcols) | 0 [UNIQUE] INDEX indexname ON tablename (indexcols)
createcol
columnname datatype coldesc | columnname datatype (integer) coldesc | columnname datatype (integer, integer) coldesc
createcols
createcol, createcols | createcol
cursorname
datatype
CHAR | VARCHAR | LONG VARCHAR | DECIMAL | NUMERIC | SMALLINT | INTEGER | REAL | FLOAT | DOUBLE PRECISION | BIT | TINYINT | SHORT | DATE | LOGICAL | MEMO | BYTE | CURRENCY | DATETIME | LONG VARBINARY | ZONED
date
a date in ODBC escape clause format (for example, {d'1996-04-04'} or --(*vendor(Microsoft), product(ODBC)d'1996-04-04'*)--
delete
drop
TABLE tablename | INDEX indexname
expression
expression + times | expression - times | times
forupdate
<blank> | FOR UPDATE | FOR UPDATE OF columnlist
grant
privilege ON tablename TO usergroups
groupby
GROUP BY groupbyterms
groupbyterms
groups
integer, groups | integer | integer – integer, groups | integer – integer | *
having
<blank> | HAVING boolean
identifier
an identifier (identifiers containing spaces must be enclosed in double quotes)
indexcols
columnname [ASC | DESC] | indexcols, indexcols
indexname
insert
INTO tablename insertvals
insertvals
(columnlist) VALUES (valuelist) | VALUES (valuelist)
integer
a non-negative integer
join
INNER JOIN | OUTER JOIN | LEFT [OUTER] JOIN | RIGHT [OUTER] JOIN | CROSS JOIN tableref ON table.column = table.column
neg
not
comparison | NOT comparison
op
> | >= | < | <= | = | <>
orderby
<blank> | ORDER BY orderbyterms
orderbyterm
orderbyterms
orderbyterm | orderbyterm, orderbyterms
pattern
string | ? | USER
privilege
ALL | ALTER | DELETE | INSERT | READ ONLY columnlist | SELECT columnlist | UPDATE columnlist
realnumber
a non-negative real number
recital
any recital command excluding user interface commands
revoke
privilege ON tablename FROM usergroups
select
selectcols FROM tablelist where groupby having orderby forupdate
selectallcols
<blank>| ALL | DISTINCT
selectcols
selectallcols * | selectallcols selectlist
selectlist
expression, selectlist | expression
set
column = NULL | column = simpleterm
setlist
simpleterm
string | realnumber | ? | USER | date | time | timestamp
string
a string (enclosed in single quotes)
table
tablelist
tableref, tablelist | tableref | tableref join | viewname
tablename
tableref
term
(expression) | colref | simpleterm | aggterm
time
a time in ODBC escape clause format (for example,{t'10:19:48'} or --(*vendor(Microsoft), product(ODBC)t'10:19:48'*)--
times
times * neg | times / neg | neg
timestamp
a timestamp in ODBC escape clause format (for example, {ts'1996-04-04 10:19:48.529'} or --(*vendor(Microsoft), product(ODBC)ts'1996-04-04 10:19:54.529'*)
update
usergroup
user and group access control string in the format '[users,groups]'
usergroups
usergroup, usergroups | PUBLIC
users
integer, users | integer | integer – integer , users | integer – integer | *
valuelist
NULL, valuelist | expression, valuelist | expression | NULL
viewname
where
<blank> | WHERE boolean | WHERE CURRENT OF cursorname