可以创建类型表或无类型表。
类型表是对其指定了命名行类型的表。
无类型表是没有对其指定命名行类型的表。CREATE ROW TYPE 语句创建命名行类型,但不为该行类型的实例分配存储器。要为命名行类型的实例分配存储器,必须对某个表指定该行类型。以下示例显示如何创建类型表:
CREATE ROW TYPE person_t
(
name VARCHAR(30),
address VARCHAR(20),
city VARCHAR(20),
state CHAR(2),
zip INTEGER,
bdate DATE
);
CREATE TABLE person OF TYPE person_t;
第一个语句创建
person_t 类型。第二个语句创建
person 表,它包含
person_t
类型的实例。更明确地说,类型表中的每一行都包含对该表指定的命名行类型的一个实例。在上述示例中,
person_t 类型的字段定义
person 表的列。
重要: 由于在可以使用命名行类型来定义类型表之前该命名行类型必须存在,所以创建命名行类型的次序十分重要。
将数据插入类型表与将数据插入无类型表没有什么不同。在将数据插入类型表时,操作将创建行类型的实例并将其插入到表中。以下示例显示如何将行插入到
person 表中:
INSERT INTO person
VALUES ('Brown, James', '13 First St.', 'San Carlos', 'CA', 94070,
'01/04/1940')
INSERT 语句创建 person_t 类型的实例并将其插入表中。有关如何插入、更新和删除对命名行类型定义的列的更多信息,请参阅 GBase 8s SQL 指南:教程。
可使用单个命名行类型来创建多个类型表。在此情况下,每个表都具有唯一的名称,但所有表共享同一类型。
限制: 不能创建作为临时表的类型表。
有关在实现数据模型时使用类型表的优点的信息,请参阅类型继承。