实验五 SQL语言 更新操作命令

编写更新SQL语句,上机验证,并在CG平台评测通过

1.

6dc40861bbf8441596b55ceec208e945.png

 

Sql语句:

insert into Student values

('98010','赵青江',18,'男','CS'),('98011','张丽萍',19,'女','CH'),('98012','陈景欢',20,'男','IS'),('98013','陈婷婷',16,'女','PH'),('98014','李军',16,'女','EH')

insert into SC

values('98010',1,87),('98010',2,NULL),('98010',3,80),('98010',4,87),('98010',6,85),

('98011',1,52),('98011',2,47),('98011',3,53),('98011',5,45),

('98012',1,84),('98012',3,NULL),('98012',4,67),('98012',5,81)

2. 要使用包括如下三个表的“教学管理”数据库JXGL:

(1)学生表Student,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno。

(2)课程表Course,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno。

(3)学生选课SC,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。

基于“教学管理”数据库JXGL,试用SQL的查询语句表达下列更新操作:

2备份Student表到TS中。

select * into TS from Student

3给IS系的学生开设7号课程,建立所有相应的选课记录,成绩暂定为60分。

insert into sc

select sno,'7',60

from student

where sdept='IS'

4把年龄小于等于16的女生记录保存到表TS中。

insert into TS

select *

from Student

where sage<=16 and ssex='女'

5在表Student中检索每门课均不及格的学生学号、姓名、年龄、性别及所在系等信息,并把检索到的信息存入TS表中。

insert into TS

select sno,sname,sage,ssex,sdept

from Student

where sno in(select sno from sc group by sno having max(grade)<60)

6将学号为“98011”的学生姓名改为'刘华',年龄增加1岁。

update student

set sname='刘华'

where sno='98011'

update student

set sage=sage+1

where sno='98011'

7把选修了“数据库系统”课程而成绩不及格的学生的成绩全改为空值(NULL)。

update sc

set grade =NULL

where grade<60 and cno in (select cno from Course where cname='数据库系统')

8将Student的前4位学生的年龄均增加1岁。

update Student

set sage=sage+1

where sno in (select top(4) sno from student )

9学生王林在3号课程考试中作弊,该课成绩改为空值(NULL)。

update sc

set grade=NULL

where cno='3' and sno in (select sno from student where sname='王林')

10把成绩低于总平均成绩的女同学成绩提高5%。

update sc

set grade =grade*1.05

where grade<(select avg(grade) from sc) and sno in (select sno from student where ssex='女')

11在基本表SC中修改课程号为“2”号课程的成绩,若成绩小于等于80分时降低2%,若成绩大于80分时降低1%(用两个UPDATE语句实现)。

update sc

set grade=0.98*grade

where cno='2' and grade<=80

update sc

set grade=0.99*grade

where cno='2' and grade>80

12利用“SELECT INTO ……”命令来备份Student、SC、Course三表,备份表名分别是TSTUDENT、TSC、TCourse。

select * into TSTUDENT from Student;

select * into TSC from SC;

select * into TCourse from Course;

13在基本表SC中删除尚无成绩的选课元组。

delete sc

where grade is NULL

14把“钱横”同学的选课情况全部删去。

delete SC

where Sno in (select Sno from Student where Sname='钱横')

15能删除学号为“98005”的学生记录吗?一定要删除该记录的话,该如何操作?给出操作命令。

delete sc

where sno='98005'

16删除姓“张”的学生记录。

delete sc

where sno in (select sno from student where sname like '张%')

delete student

where sname like '张%'

17清空STUDENT与Course两表。

delete sc

delete student

delete course

18如何又从备份表中恢复所有的三表。

insert into student select * from tstudent

insert into course select * from tcourse

insert into sc select * from tsc

三、实验体会

总体来说,实现进行的很顺利,但有一些小问题需要注意:

1.%有特殊含义,不可以随便使用 11题 可以把百分数转变为小数

2.插入时,若没有记录 写NULL 不能不写 1题

3.更新、插入操作也会需要使用嵌套查询、连接查询

4.有时候需要使用不止一个update语句

5.多个select语句如果没有连接词,用;断开

通过这次试验,我对sql语句有了更深刻的领悟,掌握了利用INSERT、UPDATE和DELETE命令(或语句)实现对表(或视图)数据添加、修改与删除等更新操作。

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值