`UPDATE` 语句在数据库中用于修改已存在的记录,以下是 `UPDATE` 语句的基本用法和一些常见示例。
### 基本语法:
UPDATE 表名称 SET 列名称1 = 值1, 列名称2 = 值2, ... WHERE 条件;
### 示例:
1. **更新特定记录**
假设我们有一个名为 `students` 的表,我们想要更新 `id` 为 5 的学生的 `name`:
UPDATE students SET name = '张三' WHERE id = 5;
2. **更新多列**
同时更新多个列:
UPDATE students SET name = '张三', age = 20 WHERE id = 5;
3. **使用算术操作符**
增加或减少列的值:
UPDATE products SET stock = stock - 100 WHERE product_id = 1; -- 这将减少库存100个单位,假设stock列是整数类型。
4. **使用其他表进行更新**
使用 `JOIN` 进行更新:
UPDATE orders o JOIN (SELECT order_id, SUM(quantity) as total_quantity FROM order_details GROUP BY order_id) od ON o.order_id = od.order_id SET o.total_quantity = od.total_quantity; -- 假设我们想要更新orders表中的total_quantity列,该列的值来自order_details表。
5. **使用子查询进行更新**
使用子查询来更新数据:
UPDATE employees e1 SET salary = (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id) * 1.10; -- 为每个部门的员工增加10%的薪水。
6. **使用 `LIMIT` 进行更新**(某些数据库系统支持)
限制更新的行数:
UPDATE employees e1 SET salary = (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id) * 1.10 LIMIT 5; -- 只更新前5个部门的员工薪水。
7. **使用 `CASE` 进行条件更新**(某些数据库系统支持)
根据条件更新值:
UPDATE products p1 SET stock = CASE WHEN p1.product_id = 1 THEN p1.stock - 100 -- 如果产品ID为1,则减少库存100个单位。 WHEN p1.product_id = 2 THEN p1.stock + 50 -- 如果产品ID为2,则增加库存50个单位。 ELSE p1.stock -- 其他情况保持不变。 END;
### 注意:
* 在执行 `UPDATE` 语句之前,建议先执行相应的 `SELECT` 语句来确认要更新的记录,以防止意外地更新了错误的记录,在某些数据库系统中,可以使用 `WHERE` 子句来限制更新的行数,在执行 `UPDATE` 语句之前,确保已经备份了重要的数据。