树叶云带你简单聊聊PostgreSQL里UPDATE语句怎么用,更新数据其实没那么难
- 问答
- 2025-12-30 20:49:02
- 4
(来源:树叶云技术社区《PostgreSQL入门指南》)
好的,咱们就直接开始聊聊在PostgreSQL里怎么用UPDATE语句来更新数据,你别看“更新”这个词听起来好像挺专业的,其实它的意思特别简单,就跟我们平时用电脑修改一个文档里的错别字,或者在手机上编辑一下发错的微信消息是一模一样的,就是把数据库里已经存在的一条或者几条记录,里面的某些内容,给它改一下。
想象一下,你有一个通讯录表格,里面存了你所有朋友的电话和地址,突然有一天,你的一个朋友搬家了,电话号码也换了,那你肯定要在这个通讯录里把旧的地址和电话划掉,写上新的,对吧?在PostgreSQL里,这个“划掉旧的写上新的”的动作,就是由UPDATE语句来完成的。
(来源:树叶云《PostgreSQL UPDATE语句基础语法图解》)
那具体该怎么写这个UPDATE语句呢?它有一个固定的格式,咱们来拆开看看,一点也不复杂。
最核心的格式是这样的:
UPDATE 表的名字 SET 列的名字1 = 新的值1, 列的名字2 = 新的值2, ... WHERE 一些条件;

你看,就三部分,我们一个一个说。
第一部分是 UPDATE 表的名字,这个最好理解,就是你得先告诉PostgreSQL:“喂,我要修改数据了,是在哪个表格里改呢?” 比如你的朋友通讯录表格名字叫 friends_list,那你一开始就要写上 UPDATE friends_list。
第二部分是 SET,这是最关键的部分,就是设置新值的地方,你要明确指出来,要把哪一列改成什么新值,它的写法就是 列名 = 新值,比如朋友换了电话和地址,你就要写 SET phone_number = '13812345678', address = '上海市浦东新区',这里要注意,如果新值是一个文字,比如名字、地址,你需要用单引号把它括起来,如果是数字,比如年龄,就不用引号。
你可以只改一列,也可以同时改好多列,列和列之间用逗号隔开就行了。
第三部分是 WHERE,这个部分超级重要,但也是新手最容易忘记的地方。WHERE的作用是帮你“定位”,告诉你到底要更新哪一条或者哪几条记录,就好比你的通讯录里有好几百个朋友,你只想更新“张三”的信息,你不能说让PostgreSQL把所有人的电话都改成张三的新电话吧?那可就全乱套了。

你必须用 WHERE 来精确地指定目标,你知道张三在这个表格里的唯一标识是他的ID,比如是1,那你就可以写 WHERE id = 1,或者你知道他的名字是“张三”,你也可以写 WHERE name = '张三',PostgreSQL就会很聪明地去找到所有名字叫“张三”的记录(正常情况下名字应该是唯一的),然后把它们的电话和地址更新掉。
(来源:树叶云社区问答《UPDATE忘记加WHERE子句了怎么办?》)
这里我一定要多啰嗦几句关于 WHERE 的事情,如果你在写UPDATE语句的时候,一不小心忘记了写 WHERE 子句,会发生什么事情呢?后果很“严重”!PostgreSQL会认为:“哦,你没有指定条件,那就是要对这个表格里的‘所有’记录进行更新!”
想象一下,你本意只是想修改张三一个人的地址,结果因为忘了写 WHERE id = 1,导致你通讯录里所有朋友的地址全都变成了张三的新地址,这种操作在数据库管理里叫做“误更新”,是非常危险的操作,养成一个好习惯,在写UPDATE之前,先心里默念三遍:“我要不要加WHERE?我要加什么WHERE?” 确认无误后再执行。
(来源:树叶云《PostgreSQL实践:常见的更新场景示例》)

光说理论可能还有点抽象,咱们举几个生活中常见的例子,你一下子就明白了。
例子1:给所有员工涨工资
假设你有一个员工表 employees,里面有一列叫 salary 代表工资,年底了,老板开心,要给所有员工的工资统一增加500块钱,这时候,因为你是要更新“所有”员工,所以可以不用WHERE来过滤(但通常还是建议用WHERE确认一下范围,比如WHERE department='技术部')。
语句可以这么写:
UPDATE employees
SET salary = salary + 500;
你看,在SET后面,我们甚至可以用数学表达式,salary + 500 的意思就是把当前工资拿出来,加上500,再存回去。
例子2:修改特定商品的价格
你有一个商品表 products,其中一款叫“树叶云牌笔记本”的商品(假设它的id是101)要促销,价格从原来的50元降到39.9元。
语句这么写:
UPDATE products
SET price = 39.9
WHERE product_id = 101;
这里我们就用 WHERE product_id = 101 精准地锁定了我们要修改的那一件商品。
例子3:一次性修改多个信息 还是那个朋友张三,他不仅换了电话和地址,连邮箱也一起换了,我们可以一条语句全部搞定。 UPDATE friends_list SET phone_number = '13812345678', address = '上海市浦东新区', email = 'zhangsan_new@email.com' WHERE name = '张三'; 这样,张三的所有联系信息就一次性更新完成了。
(来源:树叶云《数据库操作安全小贴士》)
再给你提个醒,在对特别重要的数据库进行操作,尤其是执行UPDATE这种会修改数据的操作之前,最好先做一个“备份”,或者先做一个查询确认一下,有一个非常稳妥的做法是:在写UPDATE语句之前,先把对应的SELECT语句写出来并执行,看看结果是不是你真正想修改的那些数据。
你想更新张三的信息,可以先写:
SELECT FROM friends_list WHERE name = '张三';
看看查询结果是不是只有张三这一条记录,确认无误后,你再把`SELECT 换成UPDATE,补上SET`部分,来执行真正的更新,这样就能最大程度地避免出错。
好了,关于PostgreSQL的UPDATE语句,咱们今天就简单聊这么多,总结一下就是:记住UPDATE...SET...WHERE这个结构,理解每一部分是干嘛的,尤其是千万别忘了关键的WHERE条件,多练习几次,你就会发现,更新数据真的没那么难。
本文由召安青于2025-12-30发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/71480.html
