一、数组类型
PostgreSQL 允许将表的列定义为可变长度的多维数组。可以创建任何内置或用户定义的基本类型、枚举类型、复合类型、范围类型或域的数组。
为了说明数组类型的使用,我们创建了这个表:
CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][] );
如图所示,通过将方括号 ([]) 附加到数组元素的数据类型名称来命名数组数据类型。上面的命令将创建一个名为 sal_emp 的表,其中有一列 text 类型(name),一个整数类型的一维数组(pay_by_quarter),它表示员工按季度的工资,以及一个 text 二维数组(schedule),它代表员工的每周计划。
CREATE TABLE 的语法允许指定数组的确切大小,例如:
CREATE TABLE tictactoe ( squares integer[3][3] );
但是,当前实现忽略了任何提供的数组大小限制,即行为与未指定长度的数组相同。
当前的实现也不强制声明的维数。无论大小或维数如何,特定元素类型的数组都被认为是同一类型。因此,在 CREATE TABLE 中声明数组大小或维数只是文档;它不会影响运行时行为。
通过使用关键字 ARRAY 符合 SQL 标准的替代语法可用于一维数组。pay_by_quarter 可以定义为:
pay_by_quarter integer ARRAY[4],
或者,如果没有指定数组大小:
pay_by_quarter integer ARRAY,
然而,和以前一样,PostgreSQL 在任何情况下都不会强制执行大小限制。
要将数组值写为文字常量,请将元素值括在花括号内并用逗号分隔。您可以在任何元素值周围加上双引号,如果它包含逗号或花括号,则必须这样做。因此,数组常量的一般格式如下:
'{ val1 delim val2 delim ... }'
其中 delim 是类型的分隔符,记录在其 pg_type 条目中。在 PostgreSQL 发行版中提供的标准数据类型中,除了使用分号 (