不要混淆列和字段。列只与表相关联,并且列投影将格式为
name_1.name2 的常规点符号表示法分别用于表和列。字段是 ROW
类型中的组件数据类型。使用 ROW 类型(和将 ROW 类型指定给单个列的能力),您可以使用形式为
name_a.name_b.name_c.name_d 的单点符号表示法来投影列的各个字段。
GBase 8s 数据库服务器使用以下优先顺序规则来解释点符号表示法:
- table_name_a . column_name_b . field_name_c . field_name_d
- column_name_a . field_name_b . field_name_c . field_name_d
当特定标识的意义有歧义时。数据库服务器使用优先顺序规则来确定标识指定哪个数据库对象。考虑以下两个语句:
CREATE TABLE b (c ROW(d INTEGER, e CHAR(2)))
CREATE TABLE c (d INTEGER)
在下列 SELECT 语句中,表达式
c.d 引用表
c 的列
d(而不是
b 中列
c
的字段
d),原因是表标识具有比列标识更高的优先顺序:
SELECT * FROM b,c WHERE c.d = 10
为了避免引用错误的数据库对象,可为字段投影指定完全符号表示法。例如:假定您想要引用
b 中列
c 的字段
d(而不是表
c
的列
d)。以下语句指定想要引用的对象的表、列和字段标识:
SELECT * FROM b,c WHERE b.c.d = 10
重要: 虽然优先顺序规则减少了数据库服务器误解字段投影的几率,但是建议对所有表、列和字段标识使用唯一名称。