📜  PostgreSQL – 记录类型变量(1)

📅  最后修改于: 2023-12-03 15:33:45.125000             🧑  作者: Mango

PostgreSQL – 记录类型变量

在 PostgreSQL 中,记录类型变量代表了一个由多个属性组成的单个实体或对象。记录类型变量通常用于存储和操作复杂的数据结构,如结构体或对象。

定义记录类型变量

在 PostgreSQL 中,可以使用 CREATE TYPE 命令定义新的记录类型变量。语法如下:

CREATE TYPE type_name AS (
    column1 data_type,
    column2 data_type,
    ...
);

其中,type_name 为新记录类型变量的名称,括号内的内容为该变量包含的属性以及属性的数据类型。

例如:

CREATE TYPE person AS (
    name varchar(50),
    age integer,
    address varchar(100)
);

以上代码定义了一个名为 person 的新记录类型变量,该变量包含三个属性:nameageaddress,分别对应 varcharintegervarchar 类型的数据。

创建记录类型变量变量

定义新的记录类型变量后,可以使用 CREATE TABLE 命令创建一个表来存储该记录类型的变量。语法如下:

CREATE TABLE table_name (
    column_name type_name
);

其中,table_name 为新表的名称,column_name 为该表包含的列的名称,type_name 为该列的数据类型,即记录类型变量的名称。

例如:

CREATE TABLE people (
    person_info person
);

以上代码定义了一个名为 people 的新表,其中包含一个名为 person_info 的列,该列的数据类型为记录类型变量 person

插入记录类型变量数值

可以使用 INSERT INTO 命令插入记录类型变量的数值。例如:

INSERT INTO people (person_info) VALUES ('{"John Doe", 30, "123 Main St."}'::person);

以上代码向表 people 中插入了一个名为 John Doe、年龄为 30 岁,住在 123 Main St. 的人。

访问记录类型变量的属性

可以使用点号(.)操作符访问记录类型变量的属性。例如:

SELECT person_info.name, person_info.address FROM people WHERE person_info.age > 25;

以上代码从表 people 中选择所有年龄大于 25 岁的人,并返回他们的姓名和地址。

注意:要使用点号(.)操作符访问记录类型变量的属性,需要将记录类型变量先转换为 JSON 格式,如上述 INSERT INTO 代码中的 ::person

总结

记录类型变量是 PostgreSQL 中一种用于存储和操作复杂数据结构的类型。通过 CREATE TYPECREATE TABLE 命令,可以定义新的记录类型变量和存储该类型变量的表。可以使用 INSERT INTO 命令插入记录类型变量的数值,并使用点号(.)操作符访问记录类型变量的属性。