字段投影

不要混淆列和字段。列只与表相关联,并且列投影将格式为 name_1.name2 的常规点符号表示法分别用于表和列。字段是 ROW 类型中的组件数据类型。使用 ROW 类型(和将 ROW 类型指定给单个列的能力),您可以使用形式为 name_a.name_b.name_c.name_d 的单点符号表示法来投影列的各个字段。GBase 8s 数据库服务器使用以下优先顺序规则来解释点符号表示法:
  1. table_name_a . column_name_b . field_name_c . field_name_d
  2. 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
重要: 虽然优先顺序规则减少了数据库服务器误解字段投影的几率,但是建议对所有表、列和字段标识使用唯一名称。