您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库-交互式SQL实验报告
河南工业大学实验报告课程数据库原理_实验名称实验二交互式SQL院系:____信息科学与工程学院__专业班级:__计科F1203_姓名:_________学号:___________指导老师:孙宜贵日期:2014.10.11一.实验目的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所示:图23.查询所有的学生及其选课信息,SQL语句是:selectstudent.*,sc.*fromstudent,scwherestudent.sno=sc.sno;运行结果如图3所示:图34.分别利用内连接、左连接和右连接实现上题,观察异同。内连接:相比等值连接,内链接把目标列中重复的属性列去掉啦。用内连接查询所有的学生及其选课信息,SQL语句是:selectstudent.sno,sname,sex,dept,oldgrade,tno,cno,gradefromstudent,scwherestudent.sno=sc.sno;运行结果如图4所示:图4左连接:列出左边关系中所有的元祖,运行结果如下图5所示:图5右连接:列出右边关系中所有的元祖,运行结果如下图6所示:selectsc.sno,cno,grade,sname,sex,dept,oldgrade,tnofromstudentrightouterjoinscon(student.sno=sc.sno);图65.查询工资不在2000到3000的教师姓名,按工资排序,SQL语句是:Selecttnamefromteacherwheresalary2000orsalary3000orderbysalary;或者:Selecttnamefromteacherwheresalarynotbetween2000and3000orderbysalary;运行结果如下图7所示:图76.查询高考平均成绩大于700分的学生所在院系,SQL语句及运行结果如下图8所示:图87.查询所有院系的平均高考成绩,并按平均成绩排序,SQL语句是:selectdept,avg(oldgrade)fromstudentgroupbydeptorderbyavg(oldgrade);运行结果如下图9所示:图98.查询所有学生的学号及成绩,并计算总成绩,SQL语句是:Selectstudent.sno,count(grade)fromstudent,scwherestudent.sno=sc.snogroupbystudent.sno;运行结果如下图10所示:图109.查询每个院系教师的最高工资,SQL语句是:selectdept,MAX(salary)fromteachergroupbydept;运行结果如下图11所示:图1110.把Teacher表中dept字段值为“计算机科学系”的记录修改为“信息科学与工程学院”,SQL语句是:updateteachersetdept='信息科学与工程学院'wheredept='计算机科学';查询修改后的运行结果如下图12所示:图1211.新建一个视图,并依此查询课程编号为205323,成绩大于80分的学生名。新建视图ISstudent的SQL语句是:createviewISstudentasselectsname,cno,gradefromstudent,sc;运行结果如下图13所示:图13查询SQL语句是:selectsnamefromISstudentwherecnolike'205323'andgrade80;运行结果如下图14所示:图1412.为Teacher表增加一个字段,电话(Phone),数据类型char(12),允许空。增加字段phone的SQL语句及增加后的查询结果如下图15、图16所示:图15图16四.实验中的问题及心得从这次实验中,我认识了什么是交互式SQL,对数据库的书写规范有了更深刻的印象。通过对数据库进行创建,用SQL语句对数据进行更新相关操作,了解到SQL语句功能的强大之处,简单的一句sql语句就能对数据进行定义、查询、操纵和控制。通过此次实验,我还简单掌握了groupby子句、having子句、orderby子句及sum、avg、count、max、min等集合函数的用法;也对视图的创建、查询、更新有了进一步的了解。但是,此次实验课上的练习是远远不足以保证能完全掌握对数据库的使用,若想完全熟悉用SQL对基本表和视图进行操纵,接下来必须加强练习。
本文标题:数据库-交互式SQL实验报告
链接地址:https://www.777doc.com/doc-5725984 .html