数据库 交互式SQL实验报告.doc_第1页
数据库 交互式SQL实验报告.doc_第2页
数据库 交互式SQL实验报告.doc_第3页
数据库 交互式SQL实验报告.doc_第4页
数据库 交互式SQL实验报告.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南工业大学实验报告课程 数据库原理 _ 实验名称 实验二 交互式SQL 院 系:_信息科学与工程学院_ 专业班级 :_ 计科F1203 _ 姓 名:_ _ 学 号: _ _ 指导老师: 孙宜贵 日 期: 2014.10.11 一. 实验目的1. 熟悉SQL的数据定义、数据操纵功能;2. 掌握利用SQL语句进行多表内/外连接查询和嵌套查询的方法;3. 掌握GROUP BY子句、HAVING子句、ORDER BY子句的用法;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语句是:CREATE TABLE teacher(tno char(3) primary key,tname char(8),dept varchar(20),salary int,title char(6); CREATE TABLE student(sno char(7) primary key,sname char(8),sex char(2),dept varchar(20),oldgrade int,tno char(3);CREATE TABLE Course(cno char(6) primary key,cname varchar(20),descry varchar(50),dept varchar(20),credit float);CREATE TABLE SC(sno char(7),cno char(6) ,grade int,primary key (sno,cno); 各表创建完成后执行结果如下图1所示: 图1 引入脚本,将各表数据信息录入,以便完成以下的要求。2. 查询选修了105323号课程的学生姓名,SQL语句是: select sname from student,course where cno = 105323;或者:select sname from student,course where cno like105323;运行结果如图2所示: 图23. 查询所有的学生及其选课信息,SQL语句是:select student.*,sc.* from student,sc where student.sno = sc.sno; 运行结果如图3所示: 图34. 分别利用内连接、左连接和右连接实现上题,观察异同。内连接:相比等值连接,内链接把目标列中重复的属性列去掉啦。用内连接查询所有的学生及其选课信息,SQL语句是:select student.sno,sname,sex,dept,oldgrade,tno,cno,grade from student,sc where student.sno = sc.sno;运行结果如图4所示: 图4左连接:列出左边关系中所有的元祖,运行结果如下图5所示: 图5右连接:列出右边关系中所有的元祖,运行结果如下图6所示:select sc.sno,cno,grade,sname,sex,dept,oldgrade,tno from student right outer join sc on (student.sno = sc.sno); 图65. 查询工资不在2000到3000的教师姓名,按工资排序,SQL语句是:Select tname from teacher where salary 3000 order by salary;或者:Select tname from teacher where salary not between 2000 and 3000 order by salary;运行结果如下图7所示: 图76. 查询高考平均成绩大于700分的学生所在院系,SQL语句及运行结果如下图8所示: 图87. 查询所有院系的平均高考成绩,并按平均成绩排序,SQL语句是: select dept,avg(oldgrade) from student group by dept order by avg(oldgrade); 运行结果如下图9所示: 图98. 查询所有学生的学号及成绩,并计算总成绩,SQL语句是:Select student.sno,count(grade)from student,sc where student.sno=sc.sno group by student.sno;运行结果如下图10所示: 图109. 查询每个院系教师的最高工资,SQL语句是:select dept,MAX(salary) from teacher group by dept;运行结果如下图11所示: 图1110. 把Teacher表中dept字段值为“计算机科学系”的记录修改为“信息科学与工程学院”,SQL语句是: update teacher set dept = 信息科学与工程学院 where dept = 计算机科学;查询修改后的运行结果如下图12所示: 图1211. 新建一个视图,并依此查询课程编号为205323,成绩大于80分的学生名。新建视图ISstudent的SQL语句是:create view ISstudent as select sname , cno, grade from student,sc;运行结果如下图13所示: 图13查询SQL语句是:select sname from ISstudent where cno like 205323 and grade 80;运行结果如下图14所示: 图1412. 为 Teacher表增加一个字段,电话(Phone),数据类型char(12),允许空。 增加字段phone的SQL语句及增加后的查询结果如下图15、图16所示: 图15 图16四实验中的问题及心得从这次实验中,我认识了什么是交互式SQL,对数据库的书写规范有了更深刻的印象。通过对数据库进行创建,用SQL语句对数据进行更新相关操作,了解到SQL语句功能的强大之处, 简单的一句sql语句就能对数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论