f Mysql-数据库day-08 - Powered by qidao123.com技术社区

数据库day-08

打印 上一主题 下一主题

主题 1890|帖子 1890|积分 5672

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x


一、实验名称和性质
删除修改数据
验证 设计
二、实验目标
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
  --注:下面修改和删除数据,在STUDENTAXXX,SCOREAXXX中操纵
(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. (1)重新生成实验数据<strong>(</strong>STUDENTAXXX,SCOREAXXX<strong>)</strong>
复制代码
(2)删除修改数据(STUDENTAXXX,SCOREAXXX中操纵,每题一个语句完成)

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.实验报告要求
通过本实验,我掌握了:

  • 使用UPDATE语句修改表中的数据
  • 使用DELETE语句删除表中的数据
  • 复杂条件更新和删除的实现方法
  • 多表毗连在更新和删除中的应用
  • 子查询在更新和删除中的应用
遇到的问题:

  • 日期计算时需要留意界限环境
  • 百分比计算时需要考虑四舍五入
  • 多表毗连更新时需要留意表之间的关系

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表