数据库SQL Server实验报告 之 SQL语言进行数据更新(6/8)

该文详细介绍了如何使用SQL语句进行数据操作,包括向学生表、课程表和选课表中插入新记录,更新特定记录如修改学生姓名、课程学分和成绩,以及删除无专业学生、高龄男同学、低学分课程和未评分选课记录。此外,还展示了创建视图和执行复杂查询的方法,如平均成绩视图和查找平均成绩90分以上的学生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 SQL语言进行数据更新

生命的本质是一场历练

实验目的及要求:

  1. 掌握如何使用sql语句进行插入、删除和更新操作。
  2. 使用sql语句进行插入操作。
  3. 使用sql语句进行删除操作。
  4. 使用sql语句进行更新操作。
  5. 使用各种查询条件完成指定的查询操作

实验内容及步骤:

学生表student、课程表course和选课表SC,输入数据(注意数据的完整性。);(可以使用实验二中已经建立的表和数据)(期末在这里出)

1.按要求插入下面记录信息;

insert into student values('200515026','赵雷','男',20,'MA');--student后面可以加上属性,比如student(sno)

insert into course values('11','数据分析','5',4);

insert into sc values('200515026','1',75);--inster into .. values为插入语句

  1. 修改CS系姓名为“李勇”的学生姓名为“李咏”;

update student set sname='李咏'--update..set..语句用来更新修改数据

where sdept='cs'and

sname='李勇';

  1. 修改课程“数据处理”的学分为3学分;

update course set credit='3'--用语句将学分修改为3,然后后面语句写限制条件

where cname='数据处理'

  1. 将选修课程“1”的同学成绩加5分;

update sc set grade=grade+5

where cno='1';

  1. 将选修课程“大学英语”的同学成绩加5分;

update sc set grade=grade+5

where cno in (select cno from course where cname='大学英语');--cname并不在选课表中,所以需要以cno连接嵌套course表限制条件

  1. 将学号为“200515010”的学生信息重新设置为“王丹丹、女、20、MA”;

update student set sname='王丹丹',ssex='女',sage=20,sdept='MA'

where sno='200515010';

  1. 删除数据表student中无专业的学生记录;

delete --删除语句后面就单独一个delete,后面不跟元素名

from student

where sdept is null;--..is null 用来表述空值

  1. 删除数据表student中计算机系年龄大于25的男同学的记录;

delete

from student

where sdept='计算机'and

sage>25and

ssex='男';

  1. 删除数据表course中学分低于1学分的课程信息;

delete

from course

where credit<1--建表的时候,学分是数值型的不用加''.

  1. 在SC中删除尚无成绩的选课元组。

delete

from sc

where grade is null;

  1. 把选修“大学英语”课程的女同学选课元组全部除去。

delete

from sc

where sno in(select sno from student where ssex='女')and

cno in(select cno from course where cname='大学英语');--通过sc表自身的属性列表来连接嵌套其他表

  1. 把数学课不及格的成绩全改为60分。

update sc set grade=60

where grade<60 and--grade直接在sc表中,所以不用嵌套连接。

cno in (select cno from course where cname='数学');--更新的是sc表,只有cno能表示,所以用cno嵌套连接course中的数学课

  1. 把低于所有课程总平均成绩的女同学成绩提高5%。

update sc set grade=grade*1.05

where sno in (select sno from student where ssex='女')and

grade<(select avg(grade)from sc)--where 后面不能接聚合函数,所以需要嵌套

  1. 定义CS系选修1号课程且成绩为优秀的学生视图。

create view cs_c1(sno,sname,grade) as--查询学生一般指姓名学号

select student.sno,sname,grade--子查询

from student,sc--如果用嵌套只能输出一个表里的属性,因为要输出grade所以必须连接表sc

where student.sno=sc.sno and

sdept='cs'and cno=1;

  1. 定义学生的平均成绩视图。

create view avg_grade(sno,avg)as

select sc.sno,avg(grade)

from sc--学生平均成绩视图只需要知道学号即可,加入姓名需要连接student表,造成复杂

group by sno;--学生的平均成绩,只能是同一个学生各科的成绩,所以分组把每个学生分开

  1. 查询平均成绩90分以上的学生学号及其平均成绩。

方法一:利用15题建立的视图查询

select sno,avg

from avg_grade

where avg>90

方法二:利用基本表查询

select sc.sno,avg(grade) avg

from sc,student

where sc.sno=student.sno

group by sc.sno

having avg(grade)>90;--因为是求每个学生自己的平均成绩,所以需要分组后再计算平均成绩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

君无戏言。

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

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

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

打赏作者

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

抵扣说明:

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

余额充值