SET 集合类型

SET 是元素的无序集合,在这个集合中,每个元素都是唯一的。当要存储元素具有下列特征的集合时,请将列定义为 SET 集合类型:
为了说明可以如何使用 SET,请设想一下:人力资源部门需要有关公司每个员工的家属的信息。可使用集合类型来定义 employee 表中的列,它用于存储雇员家属的姓名。以下语句创建一个表,在该表中,dependents 列定义为 SET:
CREATE TABLE employee
(
      name         CHAR(30),
      address   CHAR (40),
      salary   INTEGER,
      dependents  SET(VARCHAR(30) NOT NULL)
);

对任何给定行的 dependents 列执行的查询都将返回雇员的所有家属的姓名。在本例中,由于每个员工的家属集合不应包含任何重复值,所以 SET 是正确的集合类型。定义为 SET 的列确保集合中的每个元素都是唯一的。

为了说明如何定义具有行类型元素的集合类型,假定要让 dependents 列包括雇员家属的姓名和生日。在以下示例中,将 dependents 列定义为 SET,其元素类型是行类型:
CREATE TABLE employee
(
      name         CHAR(30),
      address   CHAR (40),
      salary   INTEGER,
      dependents  SET(ROW(name VARCHAR(30), bdate DATE) NOT NULL)
);

dependents 列中的集合的每个元素都包含 name 值和 bdate 值。employee 表的每一行都包含有关员工的信息以及该员工家属的姓名和生日的集合。例如:如果某个雇员没有家属,那么 dependents 列的集合是空的。如果某个雇员有 10 个家属,那么集合应包含 10 个元素。