资源描述
1.1 实验目的SQL查询语言的了解,掌握相关查询通过对实验二中建立的学生数据库关系表和视图的各种查询的操作,加深对 语句的语法和使用方法.1.2 实验内容1.2.1 数据库关系表查询1) 简单的查询操作,包括单表的查询、选择条件、结果排序等的练习;2) 多表的连接查询,包括等值连接、自然连接等;3) 复杂的查询操作,包括使用分组函数等库函数的查询操作;(4) 练习带有IN、比拟符的嵌套查询.1.2.2 视图查询对实验二建立的视图进行相关的查询操作,如:查询选修了课程编号为“ C01的学生的学号和成绩; 查询所有学生的学号、姓名、选修的课程名称和成绩; 查询选修了数据库原理的学生的学号和姓名.1.3 实验要求(1) 用SQL语句完成以上操作(2) 要求学生独立完成以上内容.(3) 实验完成后完成要求的实验报告内容.1.4 实验环境Windows8 pc 机 Mysql 配置的环境 Mysql 命令行工具Workbench 可视化工具1.5 实验步骤及结果分析1.5.1 数据库关系表查询1.5.1.1 简单查询具体内容包括:在简单查询实验中,在 sql 语句完成以下查询操作:1. 查询“数据库原理课程的学分:Mysql 语言:select credit from course where cname= 数据库原理 ;2. 查询选修了课程编号为“ C01 的学生的学号和成绩,并将成绩按降序输出:Mysql 语言:select sno,gradefrom scwhere cno=C01order by grade desc;3.查询学号为“ 31401的学生选修的课程编号和成绩: Mysql 语言:select cno,grade from sc where sno=31401;4.查询选修了课程编号为“ C01 且成绩高于85分的学生的学号和成绩:Mysql 语言:select sno,gradefrom scwhere cno=C01 and grade 85;查询“数据库原理课程的学分查询选修了课程编号为“ C01的学生 的学号和成绩,将成绩按降序输出查询学号为“ 31401 的学生选修的课程编号和成绩查询选修了课程编号为“ C01且成绩高于85分的学生的学号和成绩1.5.1.2 连接查询在多表连接的查询实验中,在SQL SERVER!供的交互式语言环境下用 Transact SQL语句完成以下查询操作:1.查询选修了课程编号为“C01 且成绩高于85分的学生的学号、姓名和成绩:Mysql 语言:select sno,sname,gradefrom student natural join scwhere cno=C01 and grade 85;2.查询所有学生的学号、姓名、选修的课程名称和成绩Mysql 语言:select sno,sname,cname,gradefrom student natural join sc natural join course;查询选修了课程编号为“C01 且成绩高于85分的学生的学号、姓名和成绩查询所有学生的学号、姓名、选修的课程名称和成绩1.5.1.3复杂查询在复杂查询实验中,用 SQL语句完成以下查询操作:1. 查询至少选修了三门课程的学生的学号和姓名:2.Mysql 语言:select sno,sname,count(cno)from student natural join scgroup by snohaving count(cno)=3; 查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的. Mysql 语言:select sno,max(grade)from scwhere sno not in(select distinct sno from sc where grade is null) group by sno;查询至少选修了三门课程的学生的学号和姓名查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的1.5.1.4 嵌套查询在嵌套查询实验中,在 kingbase 提供的交互式语言环境下用 iSQL 语句完成以下查询操作,要求写嵌套查询语句:1. 查询选修了数据库原理的学生的学号和姓名:Mysql 语言:select sno,snamefrom (select sno,sname,cnamefrom student natural join sc natural join course)as awhere cname= 数据库原理 ;2. 查询没有选修数据库原理的学生的学号和姓名:Mysql 语言:select distinct(sno),snamefrom (select sno,sname,cnamefrom student natural join sc natural join course )as awhere cname 数据库原理 ;3. 查询至少选修了学号为“ 31401的学生所选修的所有课程的学生的学号和姓名: Mysql 语言:select sno,snamefrom studentwhere not exists(select * from (select cno from sc where sno=31401)as S where not exists(select * from sc where cno= and sno=);查询选修了数据库原理的学生的学号和姓名查询没有选修数据库原理的学生的学号和姓名查询至少选修了学号为“ 31401 的学生所选修的所有课程的学生的学号和姓名1.5.2 视图查询对实验二建立的视图进行相关的查询操作,如:1. 查询选修了课程编号为“C01的学生的学号和成绩:Mysql 语言:select sno,grade from new_view where cno=C01;2. 查询所有学生的学号、姓名、选修的课程名称和成绩:Mysql 语言:select sno,sname,cname,grade from new_view;3. 查询选修了数据库原理的学生的学号和姓名:Mysql 语言:select sno,sname from new_view where cname= 数据库原理 ;查询选修了课程编号为“ C01的学生的学号和成绩查询所有学生的学号、姓名、选修的课程名称和成绩查询选修了数据库原理的学生的学号和姓名1.6 实验总结 本次实验我们进行了多种多样的 mysql 查询操作,在屡次的进行查书,查网络资料后,我完成了本次的实验. 首先,我感觉本次实验最重要的便是本次实验的结构性,针对简单查询、连接查询、复杂查询、嵌套查询分 块操作,毫无疑问让我对查询有了更深一步的了解,不同的查询方式对应着不同的特点,不同的语句.exists同时,实验中,我遇到了各种语句的不熟悉等问题,在资料查询过程中,让我对各种语句有了更深一步的了 解,同时在使用过程中有了更多的熟练性.尤其是最后一个嵌套查询,我查阅了很多网络资料和例子,让我对 和 not exists 语句有了更深一步的了解,同时再看解释时也让我对数据库查询的内部过程有了一定的了解,即采用相 当于高级语言的循环操作方式类似.毫无疑问,本次实验让我对理论的应用有了一定程度的适应,也大大增加了对实验过程的兴趣.
展开阅读全文