武汉轻工大学大数据库1508090003实验2报告材料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
轻工大学
经济与管理学院实验报告
三、视图的操作
视图的定义(创建和删除)、查询、更新(注意更新的条件)。
四、用SQL完成下列查询
(1)给学生表增加一列,属性名为class(班级),然后将已有数据的班级全部设置为class=“9601”
Alter table s add class char(4)
(2)检索年龄大于21的男学生学号SNO和SNAME。(用and 和intersect两种)
select sno,sname
from student
where sage>21 and sex='男'
(3)检索选修课程名为“操作系统”的学生学号和。
Select s.sno,sname from s,c,sc where ame=’操作系统’
and o=o and s.sno=sc.sno
(4)检索“丽”同学没有选修的课程号。
Selecto from c where o not in
(select o from sc,student where sname=’丽’and sc.sno=student.sno)
(5)检索至少选修两门课程的学生学号。
Select sno from sc
group by sno having
count(*)>=2
(6)检索全部学生都选修的课程号和课程名。
查找某个课程,这个课程不存在S中某个学生没有选
Select cno, cname
from course
where not exists
(select *
from student
where not exists
(select *
from sc
where o=o
and sc.sno=student.sno));
(7)检索选修课程号为C601和C603的学生学号。(即既选修了C601又选修了C603)select sno
from sc
whereo='c601'and
sno in(select sno
from sc
whereo='c603');
(8)检索选修全部课程的学生
Select sname from student
where not exists
(select * from course
where not exists
(select * from sc
where sc.sno=student.sno and
o=o))
(9)将每门课的平均成绩建立成一个视图sc_avg Create view sc_avg(score)
as
select avg(score)
from sc
group byo
(10)检索每门课没达到平均成绩的学生学号、课程号Select sno,cno
from sc
where score<(select avg(score)from sc)
三、实验结果分析、改进建议
出现的问题及解决方案:
1.问题:在写第6个查询功能的时候用
Selecto,cname
From course
Group by o,o,Cname
Having count(SC.Sno)=0 And o=o;
这句SQL语句输出的是空的。
解决方案:在表SC中没有人选的课程在表中课程号不会出现,所以count(count(SC.Sno))求得的那些课程所选人数中不会有没有人选的课程人数等于0的出现,所以满足Having count(SC.Sno)=0的课程根本不存在所以输出是空的。后来换了用not exists来写这个查询语句,就是输出表Course在表SC中中不想存在的课程号和课程名字。
Select cno, cname
from course
where not exists
(select *
from student
where not exists
(select *
from sc
where o=o
and sc.sno=student.sno));
2.问题
解决方案:语法错误中有粗心打错关键词,没有在英文输入法的情况下输入“,”,导致语法错误,命令不成功
3.问题,出现‘course’无效
解决方案:粗心导致表名称打错,实验中一定要仔细认真检查拼写,避免拼写错误
4.问题:在创建表的时候总是出现错误
解决方案:对于创建表的时候出现的问题我上网查资料说分清主码与外码的关系
5.问题:在所有操作结束后删除 STUDENT 表失败
解决方案:删除 STUDENT 表弄清主表与从表之间的关系
6.问题:对于嵌套查询不熟悉
解决方案:嵌套查询虽然百度上有但我还没真正弄懂
7.问题:对于删除索引不是那么清楚。
解决方案:删除索引的时候要带上表名
8.问题:对视图的一系列操作不熟悉
解决方案:对视图的一系列操作我看了老师给我们的文件
实验总结:
从这次实验中,我认识了什么是交互式SQL,对数据库的书写规有了更深刻的印象。通过对数据库进行创建,用SQL语句对数据进行更新相关操作,了解到SQL语句功能的强大之处,简单的一句sql语句就能对数据进行定义、查询、操纵和控制。
通过此次实验,我还简单掌握了group by子句、having子句、order by子句及sum、avg、count、max、min等集合函数的用法;也对视图的创建、查询、更新有了进一步的了解。
但是,此次实验课上的练习是远远不足以保证能完全掌握对数据库的使用,若想完全熟悉用SQL对基本表和视图进行操纵,接下来必须加强练习。
这次的的项目较多,花费了很长时间才全部完成。其中涉及到的有数据库语句操作,如表的创建、修改、删除,以及数据的插入、修改、删除和查询。实验课期间没有完成,之后又尝试编写出错和不会等问题。查询资料、请教同学之后顺利完成。
实验虽多,却也是课本最基本知识的练习,不足为虑。实验中的多数问题是编写语言时候不细心所致,比如大小写转换,中英文标点的使用等。
本次试验最大的收获就是,耐心和细心的锻炼。试验项目很多,必须专心致志和良好耐心之下,坚持完成。很高兴做到了这点,磨练了以后对待工作的态度和初步的数据库管理能力。在实验的基础之上,课本中的知识点也得到了很好的练习和巩固。
学生签名:
年月日