postgresql数组
时间: 2025-01-16 14:55:32 浏览: 24
PostgreSQL 数组类型概述
PostgreSQL 支持一维或多维数组作为数据存储的一种方式。这种特性允许在一个单独的表列中保存多个相同类型的值,从而简化某些复杂结构的数据管理[^1]。
创建带有数组类型的表格
定义包含数组字段的表时,在类型后面加上方括号 []
来表示该列为数组形式:
CREATE TABLE students (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
courses TEXT[], -- 存储课程列表
grades INTEGER[] -- 成绩记录可以是一个整数数组
);
插入含有数组的数据
向具有数组属性的表内添加新纪录可以通过直接指定具体的数值来完成:
INSERT INTO students (name, courses, grades)
VALUES ('Alice', ARRAY['Math','Physics'], '{90,85}');
这里使用了两种不同的语法风格:一种是通过 ARRAY
构造器;另一种则是简单的花括号 {}
表达式[^2]。
查询与过滤基于数组的内容
当需要检索特定条件下的记录时,可运用标准 SQL 的比较运算符以及专门针对数组设计的操作符来进行筛选:
SELECT * FROM students WHERE 'Chemistry' = ANY(courses); -- 查找选修化学课的学生
上述命令会返回所有其 courses
列中含有 'Chemistry'
这门科目的学生信息。
处理单个元素或子集
对于更复杂的场景,比如获取某个位置上的具体项或是截取部分序列,则需要用到索引和切片功能:
SELECT courses[1], grades[2:3] FROM students; -- 获取第一个课程名及成绩中的第二到第三个分数
此语句展示了如何访问单一成员(即第一个人所学的第一门科目),同时也示范了怎样提取连续区间的片段(例如第二个至第三个人的成绩区间)。
展开数组成多行显示
有时希望把每一个数组组件都独立呈现出来而不是作为一个整体展示给用户,这时就可以借助内置函数 unnest()
实现这一目标:
SELECT unnest(grades) AS single_grade FROM students;
这段代码将会把每条学生的各科成绩拆分成单独的一行输出[^3]。
相关推荐


















