当前位置: 首页 > 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. 多表连接更新时需要注意表之间的关系

相关文章:

  • 医药生产的“神助攻”:疆鸿智能JH-ECT012,EtherCAT转CC LINK IE超靠谱
  • 如何有效保护iOS应用?分享一款实用的IPA混淆工具
  • Java高频面试之并发编程-10
  • 【无需安装额外软件,JavaScript脚本】B站批量取消关注
  • Consul安装部署(Windows环境)
  • 为什么要学习《易经》?
  • ESP32- 开发笔记- 软件开发 4 - GPIO 口
  • 学习基本宠物美容
  • 使用org.java_websocket库第三方库实现广播
  • RISC-V架构低功耗MCU中断控制系统设计
  • 《Vue3学习手记7》
  • 3D Gaussian Splatting部分原理介绍和CUDA代码解读
  • grafana/loki 设置日志保留时间
  • C++的vector中emplace_back() 与 push_back() 的区别
  • 高防 CDN 的防护功能有哪些?从基础防护到智能防御的全面解析
  • redis高级进阶
  • 记录 Flink jdbc、mysql-cdc 连接 mysql8 碰到的适配问题
  • Leetcode刷题记录22——滑动窗口最大值
  • AI Agent Protocols:现状、挑战与未来展望
  • 耐高低温抗金属RFID标签种类和应用场景
  • 宁夏民政厅原厅长欧阳艳已任自治区政府副秘书长、办公厅主任
  • 卡尼领导的加拿大自由党在联邦众议院选举中获胜
  • 从咖啡节到话剧、演唱会,上海虹口“文旅商体展”联动促消费
  • 马上评丨市长信箱“已读乱回”,群众在意的是什么
  • 促进产销对接,安徽六安特色产品将来沪推介
  • 大学2025丨专访北邮校长徐坤:工科教育要真正回归工程本质