mysql-数据更新操作

建立的数据库

student数据表:                                                    course数据表:

 

sc数据表:

 


1)、给IS系的学生开设7号课程,建立相应的选课记录,成绩为空。

          insert intosc select student.sno,'7',null from student where student.sdept='Is';

        

        


2)、在表student中检索每门课均不及格的学生学号、姓名、年龄、性别及所在系的信息,并把检索到的信息存入新表ts中。

         首先修改sc中的成绩,使得有3人的成绩均不及格:

         insertinto sc value ('2005001',1,50);

         insertinto sc value ('2005001',2,50);

         insertinto sc value ('2005001',3,50);

         insertinto sc value ('2005002',2,50);

         insert intosc value ('2005003',3,50);

         然后创建数据表并查询:

         droptable if exists ts;

         createtable ts(sno char(20) primary key, sname varchar(20), sage int(20), ssexchar(20), sdept char(20));

         insert into ts (select * from student where sno in (select sno from sc group by sno havingmax(grade)<60));

         INSERT INTO TS  SELECT * FROM STUDENT  WHERE 60 > ALL  (SELECT GRADE FROM SC WHERE SC.SNO=STUDENT.SNO)

         INSERT INTO TS  SELECT * FROM STUDENT  WHERE 60 >(SELECT MAX(GRADE) FROM SC  WHERE SC.SNO=STUDENT.SNO)

         INSERT INTO TS  SELECT * FROM STUDENT  WHERE NOT EXISTS (SELECT GRADE,SNO FROM SC WHERE SC.SNO=STUDENT.SNO AND GRADE>=60)

         INSERT INTO TS  SELECT * FROM STUDENT WHERE SNO IN  (SELECT SNO FROM SC WHERE SNO NOT IN (SELECT SNO FROM SC WHERE GRADE>59))

        

 

3)、将学号为2005001的学生姓名改为刘华,年龄增加一岁。

         更新前为:

        

         更新后:

         updatestudent set sname='刘华', sage=sage+1 where sno = '2005001';

        

 

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

         增加一个学生的数据库系统成绩不及格:

         insert intosc value ('2005002',1,59);

         修改成绩:

         update sc setgrade=null where grade < 60 and cno in (select cno from course where cname='数据库系统');

        

 

5)、学生王林在3号课程考试作弊,该课程成绩改为空值。

         增加王林在3号课程的成绩:

         insert intosc value ('2005002',3,100);

         修改成绩:

         update sc setgrade=null where cno=3 and sno in (select sno from student where sname='王林');

        

 

6)、把成绩低于总平均成绩的女同学成绩提高5%

         注释掉增加的两条数据,按照原始数据库:

         selectavg(grade) from sc;

         得到平均成绩:

        

         选择两个女生的信息将成绩改为低于平均成绩:

         insertinto sc value ('2005002',2,70);

         insert intosc value ('2005004',4,70);

         update sc set grade=1.05*grade where grade<(select avg(grade) from (select * from sc) as s) and sno in (select sno from student where ssex='女');

         注意这里需要使用别名,因为不能同时更新sc又在sc中选择数据。

         更新后为:

        

 

7)、在基本表sc中修改课程号为2的课程成绩,成绩小于等于80分时降低2%,成绩大于80分时降低1%,用两个update语句实现。

         update scset grade=0.98*grade where cno=2 and grade <=80;

         update sc setgrade=0.99*grade where cno=2 and grade >80;

        

         小于80分原成绩:

        

         修改后:

        

         大于80分原成绩:

        

         修改后:

        

 

8)、把钱横的选课记录全部删去。

         因为在第三小题中把钱横的名字改成刘华了,所以已经没有了钱横的数据。注释掉第三小题的代码,重新运行一遍,就恢复了钱横的信息。

         delete fromsc where sno in (select sno from student where sname='钱横');

         删除之后,打开sc数据表,已经没有了学号为2005001的数据。

        

 

9)、可以删除2005001的学生记录吗?

         可以删除,但是由于snosc参照student的外键,所以必须要先删除sc中的信息,再才能删除student中的信息。

deletefrom sc where sno='2005001';

         delete fromstudent where sno='2005001';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值