zoukankan      html  css  js  c++  java
  • 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 数据库技术实用教程》,胡伏湘、肖玉朝 主编,清华大学出版社

  • 相关阅读:
    2.12 使用@DataProvider
    2.11 webdriver中使用 FileUtils ()
    Xcode8 添加PCH文件
    The app icon set "AppIcon" has an unassigned child告警
    Launch Image
    iOS App图标和启动画面尺寸
    iPhone屏幕尺寸、分辨率及适配
    Xcode下载失败 使用已购项目页面再试一次
    could not find developer disk image
    NSDate与 NSString 、long long类型的相互转化
  • 原文地址:https://www.cnblogs.com/linfangnan/p/14789930.html
Copyright © 2011-2022 走看看