首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 数据更新
4-1 数据的插入(INSERT语句的使用方法)
什么是INSERT
INSERT语句的基本语法
列清单的省略
插入NULL
插入默认值
从其他表中复制数据
4-2 数据的删除(DELETE语句的使用方法)
DROP TABLE语句和DELETE语句
DELETE语句的基本语法
指定删除对象的DELETE语句(搜索型DELETE)
4-3 数据的更新(UPDATE语句的使用方法)
UPDATE语句的基本语法
指定条件的UPDATE语句(搜索型UPDATE)
使用NULL进行更新
多列更新
4-4 事务
什么是事务
创建事务
ACID特性
第5章 复杂查询
5-1 视图
视图和表
创建视图的方法
视图的限制① ——定义视图时不能使用ORDER BY子句
视图的限制② ——对视图进行更新
删除视图
5-2 子查询
子查询和视图
子查询的名称
标量子查询
标量子查询的书写位置
使用标量子查询时的注意事项
5-3 关联子查询
普通的子查询和关联子查询的区别
关联子查询也是用来对集合进行切分的
结合条件一定要写在子查询中
第6章 函数、谓词、CASE表达式
6-1 各种各样的函数
函数的种类
算术函数
字符串函数
日期函数
转换函数
6-2 谓词
什么是谓词
LIKE谓词——字符串的部分一致查询
BETWEEN谓词——范围查询
IS NULL、IS NOT NULL——判断是否为NULL
IN谓词——OR的简便用法
使用子查询作为IN谓词的参数
EXIST谓词
6-3 CASE表达式
什么是CASE表达式
CASE表达式的语法
CASE表达式的使用方法
第7章 集合运算
7-1 表的加减法
什么是集合运算
表的加法——UNION
集合运算的注意事项
包含重复行的集合运算——ALL选项
选取表中公共部分——INTERSECT
记录的减法——EXCEPT
7-2 联结(以列为单位对表进行联结)
什么是联结
内联结——INNER JOIN
外联结——OUTER JOIN
3张以上的表的联结
交叉联结——CROSS JOIN
联结的特定语法和过时语法
当前位置:
首页>>
技术小册>>
SQL基础教程(中)
小册名称:SQL基础教程(中)
### UPDATE语句的基本语法 在数据库管理系统中,`UPDATE`语句是用于修改已存在表中的数据的重要工具。无论你是进行日常的数据维护,还是响应业务需求调整数据状态,`UPDATE`语句都是不可或缺的一部分。本章将深入介绍`UPDATE`语句的基本语法、使用场景、注意事项以及通过实例演示其实际应用。 #### 一、`UPDATE`语句的基本结构 `UPDATE`语句的基本结构相对简单,但功能强大。其基本语法如下: ```sql UPDATE 表名 SET 列1 = 值1, 列2 = 值2, ... WHERE 条件; ``` - **表名**:指定要更新数据的表。 - **SET**:后跟一个或多个列赋值操作,用于指定哪些列需要更新以及它们应该被更新为什么值。多个列之间用逗号分隔。 - **WHERE**:指定更新操作的条件。只有满足条件的记录才会被更新。如果省略`WHERE`子句,则表中的所有记录都将被更新,这通常是不推荐的,因为它可能导致数据的不一致或丢失。 #### 二、使用`UPDATE`语句的注意事项 1. **备份数据**:在执行任何`UPDATE`操作之前,特别是在生产环境中,建议先备份相关数据。这样,如果更新操作有误,可以迅速恢复数据。 2. **精确的条件**:确保`WHERE`子句的条件足够精确,以避免错误地更新其他不应该被修改的记录。 3. **事务控制**:在支持事务的数据库系统中,使用事务来包裹`UPDATE`操作,可以确保数据的一致性和完整性。如果更新过程中出现错误,可以回滚事务,撤销所有更改。 4. **性能考虑**:在更新大量数据时,考虑性能影响。有时,可能需要分批处理数据更新,或者优化查询条件以减少锁竞争和降低对系统性能的影响。 5. **数据类型匹配**:确保为列分配的值与列的数据类型兼容。 #### 三、`UPDATE`语句的实际应用示例 ##### 示例1:更新单列数据 假设有一个名为`employees`的表,包含员工的`id`、`name`和`salary`等信息。现在,需要将员工ID为123的员工的薪水提高到8000元。 ```sql UPDATE employees SET salary = 8000 WHERE id = 123; ``` ##### 示例2:更新多列数据 同样以`employees`表为例,现在需要同时更新员工ID为123的员工的薪水和职位名称。 ```sql UPDATE employees SET salary = 8500, position = 'Senior Developer' WHERE id = 123; ``` ##### 示例3:使用子查询更新数据 有时,你可能需要根据另一张表或同一张表的其他行的数据来更新某些记录。假设我们想要根据员工的部门平均薪水来调整每位员工的薪水。首先,需要计算每个部门的平均薪水,然后根据这个平均值来更新员工薪水。 ```sql -- 假设有一个department_avg_salary表或子查询结果,包含了部门ID和平均薪水 UPDATE employees e SET e.salary = e.salary * ( SELECT AVG(salary) FROM employees WHERE department_id = e.department_id ) WHERE EXISTS ( SELECT 1 FROM employees WHERE department_id = e.department_id GROUP BY department_id HAVING AVG(salary) > 5000 -- 假设我们只想调整平均薪水超过5000的部门的员工薪水 ); -- 注意:上述SQL可能需要根据实际数据库系统和版本进行调整,因为直接在UPDATE中使用子查询进行聚合操作可能受限。 ``` ##### 示例4:条件更新(CASE语句) `CASE`语句可以在`UPDATE`操作中用于基于复杂条件来更新不同的值。例如,根据员工的绩效等级来调整薪水。 ```sql UPDATE employees SET salary = CASE WHEN performance_rating = 'A' THEN salary * 1.1 WHEN performance_rating = 'B' THEN salary * 1.05 WHEN performance_rating = 'C' THEN salary ELSE salary * 0.95 -- 假设D级或更低评级的员工薪水减少 END WHERE performance_rating IN ('A', 'B', 'C', 'D'); ``` #### 四、总结 `UPDATE`语句是SQL中用于修改表中数据的强大工具。通过掌握其基本语法和注意事项,你可以有效地对数据进行维护和管理。在实际应用中,根据具体需求灵活运用`WHERE`子句、子查询以及`CASE`语句,可以实现复杂的数据更新逻辑。同时,务必注意数据备份和事务控制,确保数据的安全和一致性。 通过本章的学习,你应该能够编写基本的`UPDATE`语句,处理常见的数据更新需求,并能够在更复杂的场景中灵活运用这些技能。随着你对SQL的深入理解,你将能够解锁更多高级特性,进一步提升你的数据库管理能力。
上一篇:
4-3 数据的更新(UPDATE语句的使用方法)
下一篇:
指定条件的UPDATE语句(搜索型UPDATE)
该分类下的相关小册推荐:
SQL基础教程(上)
PostgreSQL入门教程
SQL基础教程(下)
高性能的Postgres SQL