SqlServer:修改和删除数据
更新数据#
UPDATE 语句#
修改记录的 SQL 语句是 UPDATE,用于更新记录中某一个字段的值。UPDATE 语句的语法格式是如下,使用 WHERE 子句指出哪些行要更新,用 SET 关键字指定新值,输入值的类型必须与所定义的数据类型一致。
UPDATE 表名
SET 列名 = 表达式[,…n]
[WHERE 条件]
在一条 UPDATE 命令可以同时对几个字段的值进行修改,如果没有 WHERE 条件子句,所有记录的这一列的值全部改为同一个值。如果加了 WHERE 条件,则只对符合条件的记录修改。
更新样例#
假设 Student 和 Score 2 张表中有如下一些数据:
样例一#
把所有人的出生日期中的月份减 1,直接使用 SET 指定修改的值。
UPDATE Student
SET Sbirthday = DATEADD(MONTH, -1, Sbirthday)
样例二#
把课程号 3-105 的所有成绩减 10,在上一个样例的基础上加上 WHERE 进行过滤。
UPDATE Score
SET Degree -= 10
WHERE Cno = '3-105'
样例三#
把学号 101 所有成绩加 10,最大不超过 100,使用 CASE WHEN THEN 语句令 UPDATE 能多分支地更新数据。
UPDATE Score SET Degree =
CASE WHEN Degree < 90 THEN Degree + 10
WHEN Degree >= 90 THEN 100
END
WHERE Sno = 101
样例四#
把男生所有成绩加 10%,女生所有成绩加 10(最大不超过 100),需要连接 Score 表和 Student 表获得性别信息。
UPDATE Score SET Degree =
CASE WHEN S.ssex = '男' AND Degree < 90.9 THEN Degree * 1.1
WHEN S.ssex = '女' AND Degree < 90 THEN Degree + 10
ELSE 100 END
FROM Score SC JOIN Student S ON SC.Sno = S.Sno
WHERE Degree != NULL
样例五#
假设 Course 表中有如下一些数据:
把课程计算机导论的所有成绩加 10,使用子查询查出“计算机导论”的课程号作为过滤条件。
UPDATE Score
SET Degree += 10
WHERE Cno = (SELECT Cno FROM Course WHERE Cname = '计算机导论')
删除数据#
DELETE 语句#
删除记录的 SQL 语句是 DELETE,其格式如下所示。
DELETE [FROM] 表名
[WHERE 条件]
FROM 可以省略,如果不带条件,则删除所有记录。如果带条件,则删除符合条件的记录,删除后的记录无法恢复。
删除样例#
样例一#
删除成为 null 的成绩。
DELETE FROM Score WHERE Degree is NULL
样例二#
删除王芳芳的操作系统成绩,需要连接 Student 表和 Course 表再进行过滤。
DELETE Score
FROM Score SC
JOIN Student S ON S.Sno = SC.Sno
JOIN Course C ON SC.Cno = C.Cno
WHERE S.Sname = '王芳芳' AND C.Cname = '系统成绩'
参考资料#
《SqlServer 2014 数据库技术实用教程》,胡伏湘、肖玉朝 主编,清华大学出版社
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-05-27 数据结构:线性表查找
2020-05-27 数据结构:树表查找