GBase8s数据库SELECT 语句19

连接表的查询

如果 FROM 子句指定多个表引用,则该查询可从几个表或视图连接行。

连接条件指定来自要被连接的每一表的至少一列之间的关系。由于要对连接条件中的列进行比较,

因此它们必须有可兼容的数据类型。

注: 在缺省情况下,数据库服务器连接表和视图所依的顺序不依赖于它们在 FROM 子句中被引用

的顺序。要强制被连接的表的顺序与 FROM 子句顺序相匹配,则您可在 SELECT 关键字之后指定

ORDERED 优化器伪指令。要获取更多信息.

在关系模型的文献中最后四个类别统称为“连接类型”;CROSS JOIN 忽略在被连接的表中特定的数

据值,返回笛卡尔积作为它的结果集:每个可能的行的对,其中,每一对中的一行来自每一表。

在内(或简单的)连接中,结果仅包含满足连接条件的行的组合。外连接保留可能会被内连接废弃

的那些行。在外连接中,结果包含满足连接条件的行的组合以及来自主表的可能会被废弃的那些

行。在来自从表选择的列中,来自主表但在从表中没有相匹配的行的那些行包含 NULL 值。

GBase 8s 对于左外连接支持两种不同的语法:

GBase 8s 扩展 OUTER 连接语法

符合 ANSI 的语法

对于外连接,数据库服务器的较早版本仅支持 GBase 8s 扩展语法。 GBase 8s 继续支持这种传统

语法,但在 SQL 语言中对于连接查询使用符合 ISO/ANSI 标准的语法,提供更大的灵活性。然

而,在视图定义中, GBase 8s 扩展语法不要求具体化的视图,因此它可能导致性能劣势。

如果您使用符合 ANSI 的语法来指定 FROM 子句中的连接,则对于同一查询块中的所有外连接,还

必须使用符合 ANSI 的语法。因此,您不可仅以 OUTER 关键字开启另一外连接。例如,下列查询

不是有效的:

SELECT * FROM customer, OUTER orders RIGHT JOIN cust_calls

ON (customer.customer_num = orders.customer_num)

WHERE customer.customer_num = 104);

这会返回错误,因为它尝试对外连接将 GBase 8s 扩展 OUTER 语法与符合 ANSI 的 RIGHT

JOIN 语法组合在一起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值