使用 SELECT 语句来从数据库或从 SPL 或 GBase 8s ESQL/C 集合变量检索值。SELECT 操作称为查询。
满足该查询的特定的查询条件的行或值称为符合条件的行或值。在应用任何附加的逻辑条件之后,该查询检索到的其调用上下文称为该查询的结果集。此结果集可为空。
SELECT 语句可从当前数据库中,或当前数据库服务器的另一数据库中,或另一数据库服务器的数据库中的表返回数据。 仅 SELECT 关键字、Projection 子句和 FROM 子句是必需的规范。
对于包括 CONNECT BY 子句的层级查询,FROM 子句仅可指定单个表,该表必须驻留在连接到当前会话的 GBase 8s 数据库服务器实例的本地数据库中。
对于包括 GRID 子句的查询,在 GRID 子句指定的每个节点上,FROM 子句指定的每一表的实例必须有相同的模式、相同的数据库语言环境和相同的代码集。
SELECT 语句只能引用 CREATE EXTERNAL TABLE 语句已指定的一个外部表。在复合查询中,仅可在最外部的查询中指定此外部表。您不可在子查询中引用外部表。
您需要对该数据库的 Connect 访问权限来执行查询,以及对该查询要从其检索行的表对象的 Select 权限。
| 子句 | 作用 | |
|---|---|---|
| 优化程序伪指令 | 指定该查询应如何实现 | |
| Projection 子句 | 指定要从数据库读的项的列表 | |
| INTO 子句 | 指定接收结果集的变量 | |
| FROM 子句 | 指定 Projection 子句项的数据源 | |
| 表或视图的别名 | 查询中表或列的临时名称 | |
| 表表达式 | 定义派生的表作为查询数据源 | |
| 横向的派生的表 | 定义查询中相关联的表引用 | |
| ONLY 关键字 | 排除孩子表作为类型表的查询中的数据源 | |
| 迭代器函数 | 反复地返回值作为数据源的函数 | |
| 符合 ANSI 的连接 | 符合 ISO/ANSI 语法标准的连接查询 | |
| GBase 8s 扩展外连接 | 基于隐式的 LEFT OUTER 连接的查询语法 | |
| GRID 子句 | 指定存储网格查询的表的节点 | |
| 使用 ON 子句 | 指定连接条件作为连接前过滤器 | |
| SELECT 的 WHERE 子句 | 对符合条件的行和连接后过滤器设置条件 | |
| 层级查询子句 | 为层级数据的查询设置条件 | |
| GROUP BY 子句 | 将行的组组合到汇总结果内 | |
| HAVING 子句 | 对汇总结果设置条件 | |
| ORDER BY 子句 | 根据列值对符合条件的行排序 | |
| ORDER SIBLINGS BY 子句 | 在每个级别为兄弟层级数据排序 | |
| FOR UPDATE 子句 | 在 FETCH 之后启用结果集的更新 | |
| FOR READ ONLY 子句 | 在 FETCH 之后禁用结果集的更新 | |
| INTO TEMP 子句 | 将结果集放到临时表内 | |
| INTO EXTERNAL 子句 | 在外部表中存储查询结果集 | |
| INTO STANDARD 和 INTO RAW 子句 | 在永久数据库表中存储查询结果集 | |
| UNION ALL 运算符 | 组合两个 SELECT 语句的结果集 | |
| UNION 运算符 | 与 UNION ALL 相同,但废弃重复的行 | |
| INTERSECT 运算符 | 从两个查询结果集返回不同的公共行 | |
| MINUS 运算符 | 仅返回两个查询返回的第一个不同的行。 |
接下来的部分描述这些和 SELECT 语句的其他子句。