数据库实验 实验四 数据更新

注:此内容仅仅只是记录成长与分享学习,不能保证绝对正确

实验四 数据更新

实验日期: 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 语句时最好是再加个筛选条件好一点,因为,当受影响数据很多很杂时,一旦出现某种思维逻辑错误,就很有可能会在不知情的情况下修改掉其他无关数据,从而影响数据真实性。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫Ycg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值