SQL语言进行数据更新 | |||
生命的本质是一场历练 | |||
实验目的及要求:
| |||
实验内容及步骤: 学生表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为插入语句
update student set sname='李咏'--update..set..语句用来更新修改数据 where sdept='cs'and sname='李勇';
update course set credit='3'--用语句将学分修改为3,然后后面语句写限制条件 where cname='数据处理'
update sc set grade=grade+5 where cno='1';
update sc set grade=grade+5 where cno in (select cno from course where cname='大学英语');--cname并不在选课表中,所以需要以cno连接嵌套course表限制条件
update student set sname='王丹丹',ssex='女',sage=20,sdept='MA' where sno='200515010';
delete --删除语句后面就单独一个delete,后面不跟元素名 from student where sdept is null;--..is null 用来表述空值
delete from student where sdept='计算机'and sage>25and ssex='男';
delete from course where credit<1--建表的时候,学分是数值型的不用加''.
delete from sc where grade is null;
delete from sc where sno in(select sno from student where ssex='女')and cno in(select cno from course where cname='大学英语');--通过sc表自身的属性列表来连接嵌套其他表
update sc set grade=60 where grade<60 and--grade直接在sc表中,所以不用嵌套连接。 cno in (select cno from course where cname='数学');--更新的是sc表,只有cno能表示,所以用cno嵌套连接course中的数学课
update sc set grade=grade*1.05 where sno in (select sno from student where ssex='女')and grade<(select avg(grade)from sc)--where 后面不能接聚合函数,所以需要嵌套
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;
create view avg_grade(sno,avg)as select sc.sno,avg(grade) from sc--学生平均成绩视图只需要知道学号即可,加入姓名需要连接student表,造成复杂 group by sno;--学生的平均成绩,只能是同一个学生各科的成绩,所以分组把每个学生分开
方法一:利用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;--因为是求每个学生自己的平均成绩,所以需要分组后再计算平均成绩 |