注:此内容仅仅只是记录成长与分享学习,不能保证绝对正确
实验四 数据更新
实验日期: 2022 年 4 月 22 日 星期 五 实验地点: 宿舍
一 实验目的
1. 熟练掌握通过SQL Server环境进行数据表的数据插入、修改、删除等数据更新操作。
2. 熟练使用INSERT、DELETE、UPDATE等数据插入、删除、修改SQL语句对数据表中的数据进行插入、删除、修改等更新操作,并加深对数据完整性及其约束的理解。
二 实验要求
1. 请大家务必动手完成实验,实验过程中,会随机抽查提问,作为实验成绩重要参考。
2. 请将数据库studb的两个基本文件自行保留,下次实验在此基础上进行。
3. 请在本实验报告指定方框认真填写对应的实验代码或实验结果。
三 实验内容及步骤
附加前述数据库,按下述要求完成实验:
1. 数据储备 利用SQLServer可视环境为各数据表输入数据,使得数据表S、C、SC最终至少但不局限于含以下当量的数据(图3.1),供后续实验使用。
图3.1 数据表S、C、SC数据示例
2. 常规数据更新 利用DELETE、INSERT等数据删除、插入SQL命令语句,对数据表S、C、SC进行数据删除、插入等更新操作。在下框中写出至少3条实验过程中用到的SQL命令:
insert into S values ('S1','赵四',19,'M','计算机'), ('S3','刘莎莎',18,'F','电子'), ('S4','李刚',20,'M','自动化'), ('S6','蒋天峰',19,'M','电气'), ('S9','王敏',20,'F','计算机'); delete from SC where SNO ='S4'; insert into SC values ('S4','C3',79); |
3. 非常规数据更新
1)利用INSERT语句向S表插入一条学号SNO为NULL或在S中已经存在的记录,如果执行失败,运用完整性规则解释其原因。
SQL命令为:
insert into S values (null,'C3',79); |
若插入成功,在下框填“成功”,若失败,请解释原因:
因为SNO属性列设置了不允许为NULL,而且它还是主键,更不能为NULL |
2)利用INSERT语句向SC表插入一条课程号CNO在课程表C中没有的记录,如果执行失败,运用完整性规则解释其原因。
SQL命令为:
insert into SC values ('S1','C9',99); |
若插入成功,在下框填“成功”,若失败,请解释原因:
成功 |
3)从C表中删除一个课程信息,该课程在SC表中有选课记录,如果执行失败,运用完整性规则解释其原因。
SQL命令为:
delete from SC where CNO ='C9'; |
若删除成功,在下框填“成功”,若失败,请解释原因:
成功 |
4. 小综合
更新SC中的成绩,将51-59分的成绩在原来分数基础上加5分,最高加到60分(若借助于case when用一条update语句实现,成绩从优)。
SQL命令为:
update SC set SCORE = case SCORE when 51 then 56 when 52 then 57 when 53 then 58 when 54 then 59 when 55 then 60 when 56 then 60 when 57 then 60 when 58 then 60 when 59 then 60 else SCORE end |
四 自选动作
请在下框填写除了上述实验内容之外自选的实验内容:
更新SC中的成绩,将51-59分的成绩在原来分数基础上加5分,最高加到60分,不用case when用一条update语句实现的方法 update SC set SCORE = SCORE +5 where SCORE between 51 and 55 update SC set SCORE = 60 where SCORE between 56 and 59 |
五 实验总结
在小综合实验里,借助case when用一条update语句实现时困扰了我好久,一开始我的思路是用 set SCORE = SCORE + 5 这条语句,但是后来我发现好像根本用不了,再后来在选择范围的时候我想的是能不能用 where SCORE between 56 and 59 这样的语句,我感觉用9个 when … then … 好麻烦,试了很久,毫无头绪,无奈只能放弃了然后选做我就做了个不用 case when 的语句来实现,对比之下,就本实验的数据而已,用的情况下受影响的数据是11行,不用的情况下是两个 0 行,原因是用 case when 没有筛选,导致每条数据都执行了 else SCORE 这条语句,由此可见,在使用 case when 语句时最好是再加个筛选条件好一点,因为,当受影响数据很多很杂时,一旦出现某种思维逻辑错误,就很有可能会在不知情的情况下修改掉其他无关数据,从而影响数据真实性。 |