此语句用于从数据库中检索信息。
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; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |