PostgreSQL插入数据怎么操作

来源:编程网作者:IT柏拉图头衔:草根站长
导读:本期聚焦于小伙伴创作的《PostgreSQL插入数据怎么操作》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《PostgreSQL插入数据怎么操作》有用,将其分享出去将是对创作者最好的鼓励。

PostgreSQL插入数据的核心是使用INSERT语句,通过不同的语法格式可以满足多种写入场景的需求,适合不同复杂度的数据录入操作。

PostgreSQL插入数据怎么操作

基础单条数据插入

最基础的插入方式是向表中所有列插入对应的值,语法格式为INSERT INTO 表名 VALUES (值1, 值2, ...),值的顺序需要和表定义的列顺序完全一致。

首先我们先创建一个测试表,用于后续的插入操作演示:

-- 创建用户测试表
CREATE TABLE user_info (
    id INT PRIMARY KEY,
    user_name VARCHAR(50),
    age INT,
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

向该表插入单条完整数据的示例如下:

-- 插入单条完整数据
INSERT INTO user_info VALUES (1, '张三', 25, '2024-05-20 10:30:00');

指定列插入数据

如果不需要向所有列插入值,可以指定要插入的列名,未指定的列如果有默认值会使用默认值,没有默认值且不允许为NULL则会报错。语法格式为INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...)

比如只插入id、user_name和age列,create_time使用默认值:

-- 指定列插入,create_time使用默认值
INSERT INTO user_info (id, user_name, age) VALUES (2, '李四', 28);

批量插入多条数据

如果需要一次性插入多条数据,不需要执行多次INSERT语句,可以在VALUES后跟上多组值,每组值用逗号分隔,这样能减少数据库交互次数,提升插入效率。

批量插入的示例如下:

-- 批量插入多条数据
INSERT INTO user_info (id, user_name, age) VALUES 
(3, '王五', 22),
(4, '赵六', 30),
(5, '孙七', 26);

插入数据时的常见注意事项

主键冲突处理

如果插入的数据主键已经存在,会直接报错中断操作。如果希望主键存在时更新其他列的值,可以使用INSERT ON CONFLICT语法,示例如下:

-- 主键冲突时更新user_name和age列
INSERT INTO user_info (id, user_name, age) VALUES (1, '张三更新', 26)
ON CONFLICT (id) DO UPDATE SET user_name = EXCLUDED.user_name, age = EXCLUDED.age;

默认值的使用

如果表的列设置了默认值,插入时可以不指定该列,或者指定值为DEFAULT来显式使用默认值,示例如下:

-- 显式指定create_time使用默认值
INSERT INTO user_info (id, user_name, age, create_time) VALUES (6, '周八', 24, DEFAULT);

插入数据的返回值

如果需要获取插入后生成的自增主键或者其他列的值,可以在INSERT语句后加上RETURNING子句,示例如下:

-- 插入后返回插入的id和create_time
INSERT INTO user_info (id, user_name, age) VALUES (7, '吴九', 29) RETURNING id, create_time;

插入结果验证

插入完成后可以通过SELECT语句验证数据是否插入成功,示例如下:

-- 查询所有插入的用户数据
SELECT * FROM user_info;

PostgreSQLinsert数据插入SQL语句修改时间:2026-06-23 18:15:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。