SQL语言-数据更新操作
来源:互联网 发布:dz seo 编辑:程序博客网 时间:2024/05/20 21:46
1、 给IS系的学生开设7号课程,建立相应的选课记录,成绩为空
这一题,是需要我们进行更新的操作,我们可以根据学员信息进行学号的选择,然后,在sc表中进行课程号的增加,这样就可以完成实验了。
insert into scselect student.sno ,'7',nullfrom studentwhere student.sdept = 'Is'
我们可以看下结果:
首先,看到student表中,学院为”Is”的学生学号为2005003和2005012
所以,在sc表中,应该是这两个同学的课程增加了7号课程:
看到成绩为空的课程中,有2005003和2005012的7号课程,所以,更新成功。
2、 在表student中检索每门课都不及格的学生学号,姓名,年龄,性别以及所在院系信息,并把检索到的信息存入新表ts中。
我们可以看到,这一题首先是需要我们进行表格的建立的,所以,我们需要先建立一个表格,这里使用最笨的方法进行表格的建立,也就是把student的表格信息全部复制过来,新建表格ts,这样就可以了。在建立了表格之后,我们可以进行的就是,信息的筛选,由于全部都不及格,所以,可以等价为最大值不及格,这样的话,全部都会不及格,因此可以通过group by进行筛选,完成这次的实验。
create table ts( sno int(7) primary key not null, sname char(10), sage int(2), ssex enum('男','女'), sdept char(10));insert into ts select *from studentwhere sno in( select sno from sc group by sno having max(grade)<60)
我们看到上面其实第一步是建立表格,可以看下表格的信息为:
所以,是可以输出正常的信息的,然后,就可以进行筛选了,由于我们需要输出的是全部不及格的学生信息,所以,没有参加考试的就不会算在里面,因此我们的最后的结果为:
3、 把学号为2005001的学生姓名改为“刘华”,年龄增加1岁
我们这里面就需要利用update set这一类的语法进行操作,可以通过选择对应的学号,然后对其他的信息进行操作,就可以完成实验了。
update student set sname = '刘华',sage = sage+1 where sno = '2005001'
可以看到,我们原来的数据为:
所以,更改后的信息为:
可以看到结果是正确的。
4、 把选修了“数据库系统”课程而成绩不及格的学生的成绩全部改为空值
我们可以进行的与上一题类似的操作,只是在上一个的基础上加入了一个嵌套语句,因为我们是有两个判定条件,一个是不及格,另一个是选修数据库,所以,我们需要利用嵌套语句进行书写,来得到最后的结果:
update scset grade = null where grade < 60 and cno in ( select cno from course where cname = '数据库系统')
可以看到的是,数据库系统的课程号为:
所以,我们在看之前在1号课程中的学生成绩情
可以看到2005011是不及格的,所以,我们应该会修改这个同学的成绩:
可以看到,我们的结果是正确的。
5、 学生王林在三号课程中考试作弊,该课成绩改为空值
这里有几个需要注意的地方,一个是学生王林,一个是三号课程,所以,还是一个双语句的判定,因此,我们进行实验,可以通过和上一题中类似的方法进行,这样就可以完成实验。
update scset grade = nullwhere cno = '3' and sno in ( select sno from student where sname = '王林')
我们看到,之前的学生王林只选择了2号课程,所以,是没有结果的,并没有对表进行修改,所以,我们可以数据的修改,改为对2号课程进行修改,这样的话,我们可以看到结果为:
所以,我们的结果是正确的,确实是被修改了。
6、 把成绩低于平均成绩的女同学的成绩提高5%
这里,我们需要注意的是先算出平均成绩,然后,在进行数据的更新,但是这里有一个问题,就是不可以对需要update的对象进行操作,所以,我们需要利用两个select进行分析,这样就可以很好的完成实验了:
update sc set grade=grade*(1+0.05)where grade<( select avg_grade from( select AVG(grade) as avg_grade from sc) as temp) and sno in ( select sno from student where ssex = '女')
首先,我们可以看到性别为‘女’的学生的学号为:
然后,对应着,找到他们的成绩变动为:
左边为变动之前的性别为女的学生的信息情况,右边为变动之后的情况。可以看到的是确实发生了变化。
7、 在基本表sc中修改课程号位‘2’号的课程成绩,成绩小于等于80分时降低2%,成绩大于80分的时候降低1%。
这一道题目可以用两种方法进行实验:
A、 利用两个update语句实现,也就是书上的例子,这样可以很好的完成这次的题目,但是略显笨拙,不是很简便,有很多重复的语句:
update sc set grade = grade * 0.98 where grade <= 80 and cno = '2'update sc set grade = grade * 0.99 where grade > 80 and cno = '2';
B、 第二种就是利用when和case语句进行书写,这一种比较简单,可以适用于多种选择的情况下:
update scset grade = case when grade <=80 then grade * 0.98 else grade * 0.99 endwhere cno = '2';
可以看到最后的结果为:
左边的是修改前的成绩,右边的是修改后的成绩。
8、 把“钱横”的选课记录全部删除
这里利用的是另一种操作,delete,和update基本一致,语法也差不多,可以轻松解决:
delete from sc where sc.sno in( select student.sno from student where student.sname = '钱横') 我们可以看到结果为:
由于前面,我们知道钱横的学号为2005001,所以,我们可以查找先sc中学号为2005001的信息,可以看到为空,所以是被删掉了。
9、 能删除2005001的学生记录吗?一定要删除应该如何操作?给出操作命令
可以删除,我们需要删除的记录除了student之外,还有一个是sc中的数据,所以,需要删除两个表的数据:
delete from scwhere sc.sno in( select student.sno from student where student.sno = '2005001');delete from student where sno = '2005001'
可以看到,结果为:
在sc中查询为空:
在student中查询也为空:
因此我们的结果是正确的。
- SQL语言-数据更新操作
- SQL语言实现数据更新操作
- SQL数据操作语言
- SQL语言基础-数据更新
- sql:数据操作语言dml
- SQL的常用数据更新操作
- sql 练习系列:数据的更新操作
- SQL操作 - 插入时更新数据
- sql常用数据操作语言(DML)
- SQL数据操作语言的使用
- 数据的操作 标准语言SQL
- oracle数据库中sql语言创建表,更新,删除数据
- sql语言之数据与视图的更新、删除
- 数据库SQL语言语法总结4---数据更新
- 使用Phoenix通过sql语句更新操作hbase数据
- SQL基本操作 - 新增、查看、更新、删除表中数据
- 使用Phoenix通过sql语句更新操作hbase数据
- 使用 Phoenix 通过 sql 语句 更新操作 hbase 数据
- Angular中的缓存
- Video Cards
- java网络编程
- CSS3 Flex 弹性布局教程
- poj 1847 最短路 dijkstra模板(vector邻接表+队列优化)
- SQL语言-数据更新操作
- java基础常见面试题
- day05HTML DOM内置对象
- ActiveMQ SSL应用之二 使用keytool工具生成密钥和证书文件
- 稳定与未知,你到底会选择哪一个?
- html5 — JSON的新方法
- Ubuntu Bash and Dash
- 二.Contiki之事件
- FZU 2150 Fire Game ([kuangbin带你飞]专题一 简单搜索)