SqlServer:修改和删除数据

更新数据#

UPDATE 语句#

修改记录的 SQL 语句是 UPDATE,用于更新记录中某一个字段的值。UPDATE 语句的语法格式是如下,使用 WHERE 子句指出哪些行要更新,用 SET 关键字指定新值,输入值的类型必须与所定义的数据类型一致。

Copy Highlighter-hljs
UPDATE 表名 SET 列名 = 表达式[,…n] [WHERE 条件]

在一条 UPDATE 命令可以同时对几个字段的值进行修改,如果没有 WHERE 条件子句,所有记录的这一列的值全部改为同一个值。如果加了 WHERE 条件,则只对符合条件的记录修改。

更新样例#

假设 Student 和 Score 2 张表中有如下一些数据:

样例一#

把所有人的出生日期中的月份减 1,直接使用 SET 指定修改的值。

Copy Highlighter-hljs
UPDATE Student SET Sbirthday = DATEADD(MONTH, -1, Sbirthday)

样例二#

把课程号 3-105 的所有成绩减 10,在上一个样例的基础上加上 WHERE 进行过滤。

Copy Highlighter-hljs
UPDATE Score SET Degree -= 10 WHERE Cno = '3-105'

样例三#

把学号 101 所有成绩加 10,最大不超过 100,使用 CASE WHEN THEN 语句令 UPDATE 能多分支地更新数据。

Copy Highlighter-hljs
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 表获得性别信息。

Copy Highlighter-hljs
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,使用子查询查出“计算机导论”的课程号作为过滤条件。

Copy Highlighter-hljs
UPDATE Score SET Degree += 10 WHERE Cno = (SELECT Cno FROM Course WHERE Cname = '计算机导论')

删除数据#

DELETE 语句#

删除记录的 SQL 语句是 DELETE,其格式如下所示。

Copy Highlighter-hljs
DELETE [FROM] 表名 [WHERE 条件]

FROM 可以省略,如果不带条件,则删除所有记录。如果带条件,则删除符合条件的记录,删除后的记录无法恢复。

删除样例#

样例一#

删除成为 null 的成绩。

Copy Highlighter-hljs
DELETE FROM Score WHERE Degree is NULL

样例二#

删除王芳芳的操作系统成绩,需要连接 Student 表和 Course 表再进行过滤。

Copy Highlighter-hljs
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 数据库技术实用教程》,胡伏湘、肖玉朝 主编,清华大学出版社

posted @   乌漆WhiteMoon  阅读(3726)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-05-27 数据结构:线性表查找
2020-05-27 数据结构:树表查找
点击右上角即可分享
微信分享提示
CONTENTS