Difference between revisions of "ODBC: Supported SQL Grammar"
Yvonnemilne (Talk | contribs) |
Yvonnemilne (Talk | contribs) |
||
Line 19: | Line 19: | ||
− | statement::= ALTER [alter | + | 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]] |
====drop==== | ====drop==== | ||
− | + | ====aggterm==== | |
− | + | COUNT (*) | AVG ([expression]]) | MAX ([expression]]) | MIN ([expression]]) | MIN ([expression]]) | SUM ([expression]]) | |
− | + | ||
− | + | ====alias==== | |
− | + | AS [aliasname]] | |
− | + | ||
− | + | ====aliasname==== | |
− | + | [identifier]] | |
− | + | ====alter==== | |
− | + | TABLE [tablename]] ADD ([createcols]]) | |
− | + | ====and==== | |
− | + | [not]] | [not]] AND [and]] | |
− | + | ====asc==== | |
− | + | <blank> | ASC | DESC | |
− | + | ====boolean==== | |
− | + | <blank> [and]] | [and]] OR [boolean]] | |
− | + | ====coldesc==== | |
− | + | <blank> | DESCRIPTION [string]] | |
− | + | ====colref==== | |
− | + | [aliasname]].[columnname]] | [columnname]] | |
− | + | ====column==== | |
− | + | [columnname-] | |
− | + | ====columnlist==== | |
− | + | [identifier]], [identifier]] | [identifier]] | |
− | + | ====columnname==== | |
− | + | [identifier]] | |
− | + | ====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==== | |
− | + | [identifier-] | |
− | + | ====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==== | |
− | + | FROM [tablename]] [where]] | |
− | + | ====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==== | |
− | + | [colref]] | [colref]], [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==== | |
− | + | [identifier] | |
− | + | ====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==== | ||
+ | [term] | + [term] | - [term] | ||
|- | |- | ||
− | |not||[comparison | + | |not||[comparison] | NOT [comparison] |
|- | |- | ||
|op||> | >= | < | <= | = | <> | |op||> | >= | < | <= | = | <> | ||
|- | |- | ||
− | |orderby||<blank> | ORDER BY [orderbyterms | + | |orderby||<blank> | ORDER BY [orderbyterms]] |
|- | |- | ||
− | |orderbyterm||[colref | + | |orderbyterm||[colref]] [asc]] | [integer]] [asc]] |
|- | |- | ||
− | |orderbyterms||[orderbyterm | + | |orderbyterms||[orderbyterm]] | [orderbyterm]], [orderbyterms]] |
|- | |- | ||
− | |pattern||[string | + | |pattern||[string]] | ? | USER |
|- | |- | ||
− | |privilege||ALL | ALTER | DELETE | INSERT | READ ONLY [columnlist | + | |privilege||ALL | ALTER | DELETE | INSERT | READ ONLY [columnlist]] | SELECT [columnlist]] | UPDATE [columnlist]] |
|- | |- | ||
|realnumber||a non-negative real number | |realnumber||a non-negative real number | ||
Line 115: | Line 117: | ||
|recital||any recital command excluding user interface commands | |recital||any recital command excluding user interface commands | ||
|- | |- | ||
− | |revoke||[privilege | + | |revoke||[privilege]] ON [tablename]] FROM [usergroups]] |
|- | |- | ||
− | |select||[selectcols | + | |select||[selectcols]] FROM [tablelist]] [where]] [groupby]] [having]] [orderby]] [forupdate]] |
|- | |- | ||
|selectallcols||<blank>| ALL | DISTINCT | |selectallcols||<blank>| ALL | DISTINCT | ||
|- | |- | ||
− | |selectcols||[selectallcols | + | |selectcols||[selectallcols]] * | [selectallcols]] [selectlist]] |
|- | |- | ||
− | |selectlist||[expression-], [selectlist | + | |selectlist||[expression-]], [selectlist]] | [expression]] |
|- | |- | ||
− | |set||[column | + | |set||[column]] = NULL | [column]] = [simpleterm]] |
|- | |- | ||
− | |setlist||[set | + | |setlist||[set]] | [setlist]], [set]] |
|- | |- | ||
− | |simpleterm||[string | + | |simpleterm||[string]] | [realnumber]] | ? | USER | [date]] | [time]] | [timestamp] |
|- | |- | ||
|string||a string (enclosed in single quotes) | |string||a string (enclosed in single quotes) | ||
|- | |- | ||
− | |table||[tablename | + | |table||[tablename]] | [aliasname]] |
|- | |- | ||
|tablelist||[tableref-], [tablelist-] | [tableref-] | [tableref-] [join-] | [viewname-] | |tablelist||[tableref-], [tablelist-] | [tableref-] | [tableref-] [join-] | [viewname-] |
Revision as of 11:09, 26 March 2009
Contents
- 1 Supported SQL Grammar
- 1.1 drop
- 1.2 aggterm
- 1.3 alias
- 1.4 aliasname
- 1.5 alter
- 1.6 and
- 1.7 asc
- 1.8 boolean
- 1.9 coldesc
- 1.10 colref
- 1.11 column
- 1.12 columnlist
- 1.13 columnname
- 1.14 comparison
- 1.15 create
- 1.16 createcol
- 1.17 createcols
- 1.18 cursorname
- 1.19 datatype
- 1.20 date
- 1.21 delete
- 1.22 drop
- 1.23 expression
- 1.24 forupdate
- 1.25 grant
- 1.26 groupby
- 1.27 groupbyterms
- 1.28 groups
- 1.29 having
- 1.30 identifier
- 1.31 indexcols
- 1.32 indexname
- 1.33 insert
- 1.34 insertvals
- 1.35 integer
- 1.36 join
- 1.37 neg
Supported SQL Grammar
The grammar declarations are described with these notations:
Notation | Description |
---|---|
<blank> | No qualifier is required |
<command> | Use one of the specified commands |
[qualifier] | Optional qualifier, may be omitted |
(paramval) | Required parameter value |
expression | Numeric or string calculation |
statement::= ALTER alter | CREATE create | DELETE delete | DROP drop | INSERT insert | GRANT grant | RECITAL recital | REVOKE revoke | SELECT select | UPDATE update
drop
aggterm
COUNT (*) | AVG ([expression]]) | MAX ([expression]]) | MIN ([expression]]) | MIN ([expression]]) | SUM ([expression]])
alias
AS [aliasname]]
aliasname
[identifier]]
alter
TABLE [tablename]] ADD ([createcols]])
and
[not]] | [not]] AND [and]]
asc
<blank> | ASC | DESC
boolean
<blank> [and]] | [and]] OR [boolean]]
coldesc
<blank> | DESCRIPTION [string]]
colref
[aliasname]].[columnname]] | [columnname]]
column
[columnname-]
columnlist
[identifier]], [identifier]] | [identifier]]
columnname
[identifier]]
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
[identifier-]
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
FROM [tablename]] [where]]
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
[colref]] | [colref]], [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
[identifier]
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
[term] | + [term] | - [term] |- |not||[comparison] | NOT [comparison] |- |op||> | >= | < | <= | = | <> |- |orderby||<blank> | ORDER BY [orderbyterms]] |- |orderbyterm||[colref]] [asc]] | [integer]] [asc]] |- |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||[set]] | [setlist]], [set]] |- |simpleterm||[string]] | [realnumber]] | ? | USER | [date]] | [time]] | [timestamp] |- |string||a string (enclosed in single quotes) |- |table||[tablename]] | [aliasname]] |- |tablelist||[tableref-], [tablelist-] | [tableref-] | [tableref-] [join-] | [viewname-] |- |tablename||[identifier-] |- |tableref||[tablename-] | [tablename-] [alias-] |- |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||[tablename-] SET [setlist-] [where-] |- |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||[identifier-] |- |where||<blank> | WHERE [boolean-] | WHERE CURRENT OF [cursorname-] |- |}