数据库update语句用法

admin 37 0

`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` 语句之前,确保已经备份了重要的数据。