Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » UltraLite - 数据库管理和参考 » UltraLite SQL 参考 » UltraLite SQL 语句

 

UltraLite SELECT 语句

此语句用于从数据库中检索信息。

语法
SELECT [ DISTINCT ] [ row-limitation  ] 
select-list
[ FROM table-expression, ... ]
[ WHERE search-condition ]
[ GROUP BY group-by-expression, ... ]
[ ORDER BY order-by-expression, ... ]
[ FOR  { UPDATE | READ ONLY } ]
[ OPTION ( FORCE ORDER ) ]
row-limitation : 
FIRST 
| TOP n [ START AT m ]
select-list :
expression [ [ AS ] alias-name ], ...
order-by-expression :
{ integer | expression } [ ASC | DESC ]
参数

DISTINCT 子句   指定 DISTINCT 以删除结果中重复的行。如果没有指定 DISTINCT,则返回满足 SELECT 语句子句的所有行(包括重复的行)。当指定 DISTINCT 时,很多语句的执行时间显著延长,因此只有在必要时才应使用 DISTINCT。

row-limitation 子句   使用行限制返回结果的子集。例如,指定 FIRST 来检索结果集的第一行。使用 TOPn 返回结果的第一 n 行。检索 TOPn 行时,指定 START ATm 来控制起始行的位置。为 SELECT 语句指定 ORDER BY 子句来对行进行排序,这样这些子句就可返回有意义的结果。

select-list   表达式列表用于指定从数据库中检索的内容。通常,选择列表中的表达式为列名。但是,它们可以是其它类型的表达式(如函数)。使用星号 (*) 选择 FROM 子句中列出的所有表的所有列。或者,可以为每个在 select-list 中的表达式定义别名。使用别名可允许您从查询的其它位置(例如,从 WHERE 和 ORDER BY 子句中)引用 select-list 表达式。

FROM 子句   行是从 table-expression 指定的表和视图中检索的。请参见UltraLite FROM 子句

WHERE 子句   如果指定了 WHERE 子句,则只选择满足 search-condition 的行。请参见UltraLite 中的搜索条件

GROUP BY 子句   具有 GROUP BY 子句查询的结果对于 GROUP BY 表达式的每个不同的值集均包含一行。结果行通常称为组,因为对于表列表中的每组行,结果中均有一行。集合函数可应用于这些组中的行。如果 NULL 出现,则会被视为唯一值。

ORDER BY 子句   此子句根据子句中指定的表达式,对查询的结果进行排序。ORDER BY 子句中的每一个表达式均可以按升序排序 (ASC) 或降序排序 (DESC)(缺省值)存储。如果表达式是整数 n,则查询结果按选择列表中的第 n 个表达式排序。

确保以特定的顺序返回行的唯一方法是使用 ORDER BY。当缺少 ORDER BY 子句时,UltraLite 以最有效的顺序返回行。

FOR 子句   此子句具有两个控制查询行为的变量:

  • FOR READ ONLY   此子句表示该查询并不用于更新。应尽量指定此子句,因为当已知查询不会用于更新时,UltraLite 有时能获得更好的性能。例如,当 UltraLite 懂得了只读权限是必需的,它就可以执行直接表扫描。FOR READ ONLY 是缺省行为。请参见使用直接页扫描

  • FOR UPDATE   此子句允许将查询用于更新。必须显式指定该子句,否则不允许更新(FOR READ ONLY 是缺省行为)。

OPTION (FORCE ORDER) 子句   不建议将此子句用于通用用途。它会替换 UltraLite 的表的访问顺序的选择,并要求 UltraLite 以表在查询中的显示顺序来访问表。仅在确定查询顺序比 UltraLite 顺序更有效时,才会使用此子句。

UltraLite 也可使用执行计划来优化查询。请参见UltraLite 中的执行计划

注释

请始终记得关闭查询。否则,将无法释放内存,且保留的临时表的数量会发生不必要的增加。

另请参见
示例

以下语句从 Employees 表中选择雇员数。

SELECT COUNT(*)
FROM Employees;

以下语句从 Employees 表中选择 10 行(从第 40 行开始到第 49 行结束)。

SELECT TOP 10 START AT 40 * FROM Employees;