当前位置: 首页 > news >正文

数据库day-08

一、实验名称和性质

删除修改数据

验证 设计

二、实验目的

1.掌握数据操作-- 删除、修改;

三、实验的软硬件环境要求

硬件环境要求:

       PC机(单机)

使用的软件名称、版本号以及模块:

       Windows  10,SQL Server 2019

四、知识准备

1.数据删除的语句格式:

DELETE  [FROM]  表名   [WHERE  字句]

3.据修改格式:

UPDATE 表名  SET  字段名=表达式 [,…]  [WHERE 字句]

五、实验内容

1.数据的修改操作;

2.数据的删除操作;

六、验证性实验

(1)生成实验数据  (表名自己加学号后三位)

SELECT  *  INTO STUDENTAXXX FROM STUDENTXXX

   SELECT  *  INTO SCOREAXXX FROM SCOREXXX WHERE  DEGREE <0

  INSERT  SCOREAXXX    SELECT  *  FROM SCOREXXX

  --注:下面修改和删除数据,在STUDENTAXXXSCOREAXXX中操作

(2)数据的修改删除

1. 把所有人的出生日期中的月份减1

 UPDATE STUDENTAXXX set Sbirthday=DATEADD(MONTH, -1,Sbirthday)

 2. 把陈文文 的出生日期中年加1,班级改为95033

  UPDATE STUDENTAXXX set Sbirthday=DATEADD(year,1,Sbirthday),Class='95033' where Sname='陈文文'

3. 把95033班所有男生的出生日期中的日减1,女生的出生日期中的日加1

 UPDATE STUDENTAXXX set Sbirthday=case ssex when  '男' THEN DATEADD(DAY,-1,Sbirthday)

                                  WHEN '女' THEN  DATEADD(DAY,1,Sbirthday) END 

                                where Class='95033'

4. 把课程号3-105的所有成绩减10

  UPDATE SCOREAXXX SET Degree-=10 WHERE CNO='3-105'

5. 把课程计算机导论的所有成绩加10

      UPDATE SCOREAXXX SET Degree+=10 WHERE CNO=(select cno from Course where Cname='计算机导论')   --子查询

6.  把李君帅的所有成绩减10

    UPDATE SCOREAXXX   SET Degree=Degree- 10 FROM STUDENTAXXX S JOIN SCOREAXXX SC ON SC.Sno=S.Sno WHERE Sname='李君帅'   --连接

7.  把李君帅的计算机导论成绩加10 

  UPDATE SCOREAXXX   SET Degree=Degree+ 10 FROM STUDENTAXXX S JOIN SCOREAXXX SC ON SC.Sno=S.Sno

      join Course C ON SC.CNO=C.CNO WHERE  Sname='李君帅' AND  Cname='计算机导论'

8. 删除学号109课程 3-245的成绩

   delete from  SCOREAXXX WHERE SNO='109' AND CNO='3-245'

9. 删除曾华庆的 数字电路 成绩 

    delete   SCOREAXXX WHERE SNO=(select sno from STUDENTAXXX where sname='曾华庆' ) AND  CNO=(select cno from Course where Cname='数字电路')

10.删除STUDENTAXXX的所有数据

TRUNCATE TABLE  STUDENTAXXX

11.删除SCOREAXXX的所有数据

  delete   SCOREAXXX

12.其他,运行以下语句,观察结果,分别得到什么结论?

--1. SET ANSI_NULLS {ON | OFF}

SET ANSI_NULLS ON  --默认

select  * FROM SCOREXXX WHERE DEGREE <>NULL

select  * FROM SCOREXXX WHERE DEGREE  =NULL

select  * FROM SCOREXXX WHERE DEGREE  is not null

select  * FROM SCOREXXX WHERE DEGREE  is  null

SET ANSI_NULLS OFF

select  * FROM SCOREXXX WHERE DEGREE <>NULL

select  * FROM SCOREXXX WHERE DEGREE  =NULL

select  * FROM SCOREXXX WHERE DEGREE  is not null

select  * FROM SCOREXXX WHERE DEGREE  is  null

SET ANSI_NULLS ON

--2.SET QUOTED_IDENTIFIER { ON | OFF }

SET QUOTED_IDENTIFIER   ON  --默认

SELECT  SNO,'CNO',DEGREE FROM SCOREXXX

SELECT  SNO,"CNO",DEGREE FROM SCOREXXX

SELECT  SNO,[CNO],DEGREE FROM SCOREXXX

SET QUOTED_IDENTIFIER   Off

SELECT  SNO,'CNO',DEGREE FROM SCOREXXX

SELECT  SNO,"CNO",DEGREE FROM SCOREXXX

SELECT  SNO,[CNO],DEGREE FROM SCOREXXX

SET QUOTED_IDENTIFIER   On

--3. top ...   WITH TIES

select top 3  * from SCOREXXX

select top 3  WITH TIES * from SCOREXXX

select top 3  WITH TIES * from SCOREXXX  order by sno

select top 30  percent     * from SCOREXXX  order by sno

select top 30 percent WITH TIES   * from SCOREXXX  order by sno

 

select top 20 percent WITH TIES   * from SCOREXXX  order by sno

--4. ANY, SOME, ALL

SEELCT * FROM SCOREXXX  where Degree  >= all(select degree from SCOREXXX )

SEELCT * FROM SCOREXXX  where Degree  >= all(select degree from SCOREXXX where Degree is not null )

SEELCT * FROM SCOREXXX where Degree  < any(select degree from SCOREXXX where sno =’101’) and sno =’101’

SEELCT * FROM SCOREXXX where Degree  < some(select degree from SCOREXXX where sno =’103’) and sno =’103’

七、设计性实验

1.实验要求

(1)重新生成实验数据STUDENTAXXXSCOREAXXX

(2)删除修改数据(STUDENTAXXXSCOREAXXX中操作,每题一个语句完成)

1. 把陈文文改名为陈文且出生日期中年月日都加1

UPDATE STUDENT023

SET Sname = '陈文',

    Sbirthday = DATEADD(DAY, 1, DATEADD(MONTH, 1, DATEADD(YEAR, 1, Sbirthday)))

WHERE Sname = '陈文文'

2.把学号101所有成绩加10最大不超过100

  UPDATE SCORE023

SET Degree = CASE WHEN Degree + 10 > 100 THEN 100 ELSE Degree + 10 END

WHERE SNO = '101'

3. 把男生所有成绩加10%女生所有成绩加10最大不超过100

   UPDATE SCORE023

SET Degree = CASE

    WHEN Ssex = '男' THEN

        CASE WHEN Degree * 1.1 > 100 THEN 100 ELSE ROUND(Degree * 1.1, 0) END

    ELSE

        CASE WHEN Degree + 10 > 100 THEN 100 ELSE Degree + 10 END

    END

FROM SCORE023 SC

JOIN STUDENT023 ST ON SC.SNO = ST.SNO

 4.把张旭 老师任课所有及格成绩减10最低不小于60

  

UPDATE SCORE023

SET Degree = CASE WHEN Degree - 10 < 60 THEN 60 ELSE Degree - 10 END

WHERE CNO IN (SELECT CNO FROM teacher023 WHERE Tname = '张旭')

AND Degree >= 60

5. 把曾华庆同学 的张旭 老师任课所有及格成绩加10%最大不超过100

   

UPDATE SCORE023

SET Degree = CASE WHEN Degree * 1.1 > 100 THEN 100 ELSE ROUND(Degree * 1.1, 0) END

WHERE SNO = (SELECT SNO FROM STUDENT023 WHERE Sname = '曾华庆')

AND CNO IN (SELECT CNO FROM  teacher023 WHERE Tname =  '张旭')

AND Degree >= 60

6. 删除成为null的成绩

DELETE FROM SCORE023 WHERE Degree IS NULL

7. 删除王芳芳 的操作系统成绩

DELETE FROM SCORE023

WHERE SNO = (SELECT SNO FROM STUDENT023 WHERE Sname = '王芳芳')

AND CNO = (SELECT CNO FROM COURSE023 WHERE Cname = '操作系统')

8.删除曾华庆同学 的张旭 老师任课所有成绩

   

DELETE FROM SCORE023

WHERE SNO = (SELECT SNO FROM STUDENT023 WHERE Sname = '曾华庆')

AND CNO IN (SELECT CNO FROM teacher023 WHERE Tname = '张旭')

9. 删除女生的计算机导论成绩

DELETE SCORE023

FROM SCORE023 SC

JOIN STUDENT023 ST ON SC.SNO = ST.SNO

JOIN COURSE023 C ON SC.CNO = C.CNO

WHERE ST.Ssex = '女' AND C.Cname = '计算机导论'

10.删除本月过生日的男同学信息

DELETE FROM STUDENT023

WHERE Ssex = '男'

AND MONTH(Sbirthday) = MONTH(GETDATE())

2.实验报告要求

通过本实验,我掌握了:

  1. 使用UPDATE语句修改表中的数据
  2. 使用DELETE语句删除表中的数据
  3. 复杂条件更新和删除的实现方法
  4. 多表连接在更新和删除中的应用
  5. 子查询在更新和删除中的应用

遇到的问题:

  1. 日期计算时需要注意边界情况
  2. 百分比计算时需要考虑四舍五入
  3. 多表连接更新时需要注意表之间的关系
http://www.xdnf.cn/news/211915.html

相关文章:

  • C#中winform窗体如何捕获键盘按键事件
  • 深度学习篇---模型权重变化与维度分析
  • 阿里云 OpenManus 实战:高效AI协作体系
  • “情况说明“以后,Unity XR 开发者如何选择?
  • HTTP(超文本传输协议)全面总结
  • 蓝桥杯 10. 凯撒加密
  • [C]基础14.字符函数和字符串函数
  • 网络原理—应用层和数据链路层
  • 指针(5)
  • Spring Boot 集成 ActiveMQ 实现异步消息通信(一)
  • 跨平台项目部署全攻略:Windows后端+Mac前端在服务器的协同实战
  • Arduion 第一天,变量的详细解析
  • 三格电子——四路CAN转4G网关使用中的常见问题
  • 【深度学习新浪潮】ISP芯片算法技术简介及关键技术分析
  • 深度解析 MyBatis`@TableField(typeHandler = JacksonTypeHandler.class)`:优雅处理复杂数据存储
  • 深入理解二分查找
  • AI防摔倒检测系统
  • 实验七:基于89C51和DS18B20的温度采集与显示
  • 【从滚动条缺失到布局体系:前端布局问题的系统性思考】
  • pytorch 一些常用语法
  • 图漾官网Sample_V1版本C++语言完整参考例子---单相机版本
  • 企业办公协同平台安全一体化生态入住技术架构与接口标准分析报告
  • ubnuntu使用conda进行虚拟环境迁移,复制,克隆
  • Dify 使用模版转换实现更丰富的输入格式支持
  • linux FTP服务器搭建
  • 通信协议——SPI通信协议
  • Go语言中的错误处理
  • CSS:编写位置分类
  • PDF编辑器:Foxit PDF Editor Pro 版功能解析
  • JVM对象存储格式