在 Access 数据库中,更新数据的标准 SQL 语句是 UPDATE,由于 Access 使用的是 Jet/ACE 引擎,其语法与标准的 SQL 略有不同(它不支持 LIMIT 或 TOP 直接跟在 UPDATE 后,而是使用 TOP 关键字在 UPDATE 之前,且字符串连接使用 & 而非 )。
以下是 Access 数据库 UPDATE 语句的完整语法和常见用法示例:
基本语法
UPDATE 表名 SET 字段1 = 新值1, 字段2 = 新值2, ... WHERE 条件;
⚠️ 重要提示:
如果不加WHERE子句,所有记录都将被更新!务必在执行前确认条件正确。
常见示例
✅ 示例 1:更新单条记录
将员工 ID 为 101 的姓名更新为“张三”:
UPDATE Employees SET Name = '张三' WHERE EmployeeID = 101;
✅ 示例 2:更新多条记录(基于条件)

将所有部门为“销售部”的员工薪资增加 10%:
UPDATE Employees SET Salary = Salary 1.1 WHERE Department = '销售部';
✅ 示例 3:使用表达式更新字段
将“订单表”中所有“总金额”字段设置为“单价”乘以“数量”:
UPDATE Orders SET TotalAmount = UnitPrice Quantity;
✅ 示例 4:使用 TOP 限制更新行数(Access 特有)
更新前 5 条符合条件的记录(注意:Access 中 TOP 必须放在 UPDATE 之后、表名 之前):
UPDATE TOP 5 Employees SET Status = '已审核' WHERE Department = '市场部';
💡 注意:
TOP在 Access 中用于限制更新行数,但不保证按特定顺序更新哪几条,如需确定性结果,建议结合ORDER BY和子查询(见下文高级用法)。
高级用法:基于子查询更新

✅ 示例 5:根据另一张表的数据更新当前表
将“订单表”中的“客户名称”更新为“客户表”中对应的名称:
UPDATE Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID SET Orders.CustomerName = Customers.CustomerName;
⚠️ Access 中
UPDATE与JOIN结合时,语法要求INNER JOIN必须紧跟在表名之后,且SET子句直接写在JOIN之后。
✅ 示例 6:使用 IIF 函数进行条件更新
年龄”大于 60,则“状态”设为“退休”,否则设为“在职”:
UPDATE Employees SET Status = IIF(Age > 60, '退休', '在职');
注意事项
| 项目 | 说明 |
|---|---|
| 字符串值 | 必须用单引号 包裹,如 '张三' |
| 日期值
| 必须用 包裹,如 #2026-01-01# |
| 空值 | 使用 NULL(不加引号) |
| 通配符 | 在 WHERE 中使用 LIKE 时,Access 使用 表示任意字符,如 LIKE '张' |
| 事务安全 | Access 不直接支持 BEGIN TRANSACTION,建议在更新前备份数据或使用 VBA 控制事务 |
在 VBA 中执行 UPDATE 语句
如果你通过 VBA 代码执行更新,可以使用 DoCmd.RunSQL 或 CurrentDb.Execute:
' 方法 1:使用 DoCmd.RunSQL(会显示警告提示) DoCmd.RunSQL "UPDATE Employees SET Salary = Salary 1.1 WHERE Department = '销售部'" ' 方法 2:使用 CurrentDb.Execute(静默执行,推荐) CurrentDb.Execute "UPDATE Employees SET Salary = Salary 1.1 WHERE Department = '销售部'", dbFailOnError
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

发表回复