数据库 交互式SQL实验报告Word格式.docx
- 文档编号:16574716
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:10
- 大小:190.58KB
数据库 交互式SQL实验报告Word格式.docx
《数据库 交互式SQL实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《数据库 交互式SQL实验报告Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
1.熟悉SQL的数据定义、数据操纵功能;
2.掌握利用SQL语句进行多表内/外连接查询和嵌套查询的方法;
3.掌握GROUPBY子句、HAVING子句、ORDERBY子句的用法;
4.掌握(NOT)IN、(NOT)EXISTS等谓词的用法;
5.掌握SUM、AVG、COUNT、MAX、MIN等集合函数的用法;
6.掌握SQL语句中数据更新相关操作;
7.熟悉视图基本操作:
定义、查询、更新视图。
二.实验内容及要求
本实验的表结构如下所示:
Student(sno,sname,sex,sage,dept,oldgrade,advisor)
Teacher(tno,tname,dept,salary,title)
Course(cno,cname,descry,dept,credit)
SC(sno,cno,grade)
以上数据库表的含义为:
✧Student—学生:
sno(学号),sname(学生姓名),sex(性别),sage(年龄),dept(所在院系),oldgrade(高考成绩),advisor(导师)
✧Teacher—教师:
tno(教师编号),tname(教师姓名),dept(所在院系),salary(工资),title(职称)
✧Course—课程:
cno(课程号),cname(课程名),descry(课程说明),dept(开课院系),credits(学分)
✧SC—成绩:
sno(学号),cno(课程号),grade(成绩)
根据上述情况完成:
1.使用SQL语句定义上述各表。
2.查询选修了105323号课程的学生姓名。
3.查询所有的学生及其选课信息。
4.分别利用内连接、左连接和右连接实现上题,观察异同。
5.查询工资不在2000到3000的教师姓名,按工资排序。
6.查询高考平均成绩大于700分的学生所在院系。
7.查询所有院系的平均高考成绩,并按平均成绩排序。
8.查询所有学生的学号及成绩,并计算总成绩。
9.查询每个院系教师的最高工资。
10.把Teacher表中dept字段值为“计算机科学系”的记录修改为“信息科学与工程学院”。
11.新建一个视图,并依此查询课程编号为205323,成绩大于80分的学生名。
12.为Teacher表增加一个字段,电话(Phone),数据类型char(12),允许空。
三.实验过程及结果
1.定义上述各表的SQL语句是:
CREATETABLEteacher(tnochar(3)primarykey,tnamechar(8),deptvarchar(20),salaryint,titlechar(6));
CREATETABLEstudent(snochar(7)primarykey,snamechar(8),sexchar
(2),deptvarchar(20),oldgradeint,tnochar(3));
CREATETABLECourse(cnochar(6)primarykey,cnamevarchar(20),descryvarchar(50),deptvarchar(20),creditfloat);
CREATETABLESC(snochar(7),cnochar(6),gradeint,primarykey(sno,cno));
各表创建完成后执行结果如下图1所示:
图1
引入脚本,将各表数据信息录入,以便完成以下的要求。
2.查询选修了105323号课程的学生姓名,SQL语句是:
selectsnamefromstudent,coursewherecno=‘105323’;
或者:
selectsnamefromstudent,coursewherecnolike‘105323’;
运行结果如图2所示:
图2
3.查询所有的学生及其选课信息,SQL语句是:
selectstudent.*,sc.*fromstudent,scwherestudent.sno=sc.sno;
运行结果如图3所示:
图3
内连接:
相比等值连接,内链接把目标列中重复的属性列去掉啦。
用内连接查询所有的学生及其选课信息,SQL语句是:
selectstudent.sno,sname,sex,dept,oldgrade,tno,cno,gradefromstudent,sc
wherestudent.sno=sc.sno;
运行结果如图4所示:
图4
左连接:
列出左边关系中所有的元祖,运行结果如下图5所示:
图5
右连接:
列出右边关系中所有的元祖,运行结果如下图6所示:
selectsc.sno,cno,grade,sname,sex,dept,oldgrade,tnofromstudentrightouterjoinsc
on(student.sno=sc.sno);
图6
5.查询工资不在2000到3000的教师姓名,按工资排序,SQL语句是:
Selecttnamefromteacherwheresalary<
2000orsalary>
3000orderbysalary;
Selecttnamefromteacherwheresalarynotbetween2000and3000orderbysalary;
运行结果如下图7所示:
图7
6.查询高考平均成绩大于700分的学生所在院系,SQL语句及运行结果如下图8所示:
图8
7.查询所有院系的平均高考成绩,并按平均成绩排序,SQL语句是:
selectdept,avg(oldgrade)fromstudentgroupbydeptorderbyavg(oldgrade);
运行结果如下图9所示:
图9
8.查询所有学生的学号及成绩,并计算总成绩,SQL语句是:
Selectstudent.sno,count(grade)fromstudent,scwherestudent.sno=sc.snogroupbystudent.sno;
运行结果如下图10所示:
图10
9.查询每个院系教师的最高工资,SQL语句是:
selectdept,MAX(salary)fromteachergroupbydept;
运行结果如下图11所示:
图11
10.把Teacher表中dept字段值为“计算机科学系”的记录修改为“信息科学与工程学院”,SQL语句是:
updateteachersetdept='
信息科学与工程学院'
wheredept='
计算机科学'
;
查询修改后的运行结果如下图12所示:
图12
新建视图ISstudent的SQL语句是:
createviewISstudentasselectsname,cno,gradefromstudent,sc;
运行结果如下图13所示:
图13
查询SQL语句是:
selectsnamefromISstudentwherecnolike'
205323'
andgrade>
80;
运行结果如下图14所示:
图14
增加字段phone的SQL语句及增加后的查询结果如下图15、图16所示:
图15
图16
四.实验中的问题及心得
从这次实验中,我认识了什么是交互式SQL,对数据库的书写规范有了更深刻的印象。
通过对数据库进行创建,用SQL语句对数据进行更新相关操作,了解到SQL语句功能的强大之处,简单的一句sql语句就能对数据进行定义、查询、操纵和控制。
通过此次实验,我还简单掌握了groupby子句、having子句、orderby子句及sum、avg、count、max、min等集合函数的用法;
也对视图的创建、查询、更新有了进一步的了解。
但是,此次实验课上的练习是远远不足以保证能完全掌握对数据库的使用,若想完全熟悉用SQL对基本表和视图进行操纵,接下来必须加强练习。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 交互式SQL实验报告 交互式 SQL 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)