GBase8s数据库SELECT 语句14

表表达式

表表达式(有时称为派生的表)是表或视图的名称,或对一系列行求值的规范。这些行通常是嵌入

到嵌套的 SELECT 语句中,或一些其他 SQL 语句中的查询的结果;

用法

表表达式可为简单的或复合的:

简单的表表达式

简单的表表达式是在保持查询结果的正确性时,其基础查询可包含进主查询内的表达式。

复合的表表达式

复合的表表达式是在保持查询结果的正确性时,其基础查询不可包含进主查询内的表达

式。数据库服务器将这样的表表达式具体化成在主查询中使用的临时表。在 FROM 子句中

指定聚集、集合操作符或 ORDER BY 子句的子查询作为复合的表表达式实现,通常需要

比简单的表表达式更多的数据库服务器资源。

在两种情况下,该表表达式作为常规的 SQL 查询求值,且它的结果可被认为是逻辑表。此逻辑表

及其列可就如普通的基础表那样使用,但它不是持久的。它仅在引用它的查询的执行期间存在。

对表表达式的限制

表表达式与常规的 SELECT 语句有相同的语法,但有在其他上下文中适用于子查询的大部分限

制。表表达式不可包括显式地创建结果表的 SELECT INTO 子句。

GBase 8s 不支持“通用化的键”索引。它支持在 CREATE TRIGGER 语句的触发器活动中的表表达

式,并作为 Select 触发器的触发事件。 GBase 8s 还支持表表达式中的 ORDER BY 子句。

GBase 8s 支持迭代器函数作为 FROM 子句表标识符。然而,SPL 的 CALL 语句不可在 FROM

子句中的子查询内调用迭代器 TABLE 函数。

除了这些限制之外,任何有效的 SQL 查询都可为表表达式。表表达式可嵌套在另一表表达式之

内,且可在它的定义中包括表和视图。您可在 CREATE VIEW 语句中使用表表达式来定义视图。

相关的子查询和派生的表

相关的子查询是引用未罗列在其 FROM 子句中的表的列的子查询。相反,仅引用罗列在其 FROM

子句中的表中的列的子查询是不相关的子查询。

在下列示例中,在其 FROM 子句中定义派生的表的不相关的子查询,在其 WHERE 子句中包含相关

的子查询:

SELECT * FROM (SELECT * FROM t1

WHERE a IN (SELECT b FROM t2 WHERE t1.a = t2.b));

此处,在第一个 WHERE 子句中的子查询是相关的子查询,因为它引用表 t1 的列 a,但它的

FROM 子句仅指定表 t2。

在 FROM 子句表表达式中,GBase 8s 还支持 ORDER BY 子句,这在 FROM 子句之外的子查询

中不是有效的。在表表达式中通过 ORDER BY 子句指定的列或表达式不需要包括在 Projection 子

句中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值