
数据查询实验实验.docx
4页1.1实验目的通过对实验二中建立的学生数据库关系表和视图的各种查询的操作,加深对SQL查询语言的了解,掌握相关查询语句的语法和使用方法1.2实验内容1.2.1数据库关系表查询(1) 简单的查询操作,包括单表的查询、选择条件、结果排序等的练习;(2) 多表的连接查询,包括等值连接、自然连接等;(3) 复杂的查询操作,包括使用分组函数等库函数的查询操作;(4) 练习带有IN、比较符的嵌套查询1.2.2视图查询对实验二建立的视图进行相关的查询操作,如:查询选修了课程编号为“C01”的学生的学号和成绩;查询所有学生的学号、姓名、选修的课程名称和成绩;查询选修了数据库原理的学生的学号和姓名1) 1.3实验要求用SQL语句完成以上操作要求学生独立完成以上内容2) 实验完成后完成要求的实验报告内容1.4实验环境Windows8pc机Mysql配置的环境Mysql命令行工具Workbench可视化工具1.5实验步骤及结果分析1.5.1数据库关系表查询1.5.1.1简单查询具体内容包括:在简单查询实验中,在sql语句完成以下查询操作:1. 查询“数据库原理”课程的学分:Mysql语言:selectcreditfromcoursewherecname='数据库原理’;2. 查询选修了课程编号为“C01”的学生的学号和成绩,并将成绩按降序输出:Mysql语言:selectsno,gradefromscwherecno='C01'orderbygradedesc;3. 查询学号为“31401”的学生选修的课程编号和成绩:Mysql语言:selectcno,gradefromscwheresno=31401;4. 查询选修了课程编号为“C01”且成绩高于85分的学生的学号和成绩:Mysql语言:selectsno,gradefromscwherecno='C01'andgrade>85;查询“数据库原理”课程的学分查询学号为“31401”的学生选修的课程编号和成绩查询选修了课程编号为“C01”的学生的学号和成绩,将成绩按降序输出查询选修了课程编号为“C01”且成绩高于85分的学生的学号和成绩1.5.1.2连接查询在多表连接的查询实验中,在SQLSERVE思供的交互式语言环境下用TransactSQL语句完成以下查询操作:1. 查询选修了课程编号为“C01”且成绩高于85分的学生的学号、姓名和成绩:Mysql语言:selectsno,sname,gradefromstudentnaturaljoinscwherecno='C01'andgrade>85;查询所有学生的学号、姓名、选修的课程名称和成绩Mysql语言:selectsno,sname,cname,gradefromstudentnaturaljoinscnaturaljoincourse;查询选修了课程编号为“C01”且成绩高于85分的学生的学号、姓名和成绩查询所有学生的学号、姓名、选修的课程名称和成绩1.5.1.3复杂查询在复杂查询实验中,用SQL语句完成以下查询操作:1. 查询至少选修了三门课程的学生的学号和姓名:Mysql语言:selectsno,sname,count(cno)fromstudentnaturaljoinscgroupbysnohavingcount(cno)>=3;2. 查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。
Mysql语言:selectsno,max(grade)fromscwheresnonotin(selectdistinctsnofromscwheregradeisnull)groupbysno;查询至少选修了三门课程的学生的学号和姓名查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的1.5.1.4嵌套查询在嵌套查询实验中,在kingbase提供的交互式语言环境下用iSQL语句完成以下查询操作,要求写嵌套查询语句:1. 查询选修了数据库原理的学生的学号和姓名:Mysql语言:selectsno,snamefrom(selectsno,sname,cnamefromstudentnaturaljoinscnaturaljoincourse)asawherecname='数据库原理';2. 查询没有选修数据库原理的学生的学号和姓名:Mysql语言:selectdistinct(sno),snamefrom(selectsno,sname,cnamefromstudentnaturaljoinscnaturaljoincourse)asawherecname<>'数据库原理';3. 查询至少选修了学号为“31401”的学生所选修的所有课程的学生的学号和姓名:Mysql语言:selectsno,snamefromstudentwherenotexists(select*from(selectcnofromscwheresno=31401)asSwherenotexists(select*fromscwherecno=andsno=);查询选修了数据库原理的学生的学号和姓名查询没有选修数据库原理的学生的学号和姓名查询至少选修了学号为“31401”的学生所选修的所有课程的学生的学号和姓名1.5.2视图查询对实验二建立的视图进行相关的查询操作,如:1. 查询选修了课程编号为“C01”的学生的学号和成绩:Mysql语言:2. selectsno,gradefromnew_viewwherecno='C01';查询所有学生的学号、姓名、选修的课程名称和成绩:Mysql语言:3. selectsno,sname,cname,gradefromnew_view;查询选修了数据库原理的学生的学号和姓*:Mysql语言:selectsno,snamefromnew_viewwherecname='数据库原理';查询选修了课程编号为“C01”的学生的学号和成绩查询所有学生的学号、姓名、选修的课程名称和成绩查询选修了数据库原理的学生的学号和姓名1.6实验总结本次实验我们进行了多种多样的mysql查询操作,在多次的进行查书,查网络资料后,我完成了本次的实验。
首先,我感觉本次实验最重要的便是本次实验的结构性,针对简单查询、连接查询、复杂查询、嵌套查询分块操作,毫无疑问让我对查询有了更深一步的了解,不同的查询方式对应着不同的特点,不同的语句同时,实验中,我遇到了各种语句的不熟悉等问题,在资料查询过程中,让我对各种语句有了更深一步的了解,同时在使用过程中有了更多的熟练性尤其是最后一个嵌套查询,我查阅了很多网络资料和例子,让我对exists和notexists语句有了更深一步的了解,同时再看解释时也让我对数据库查询的内部过程有了一定的了解,即采用相当于高级语言的循环操作方式类似毫无疑问,本次实验让我对理论的应用有了一定程度的适应,也大大增加了对实验过程的兴趣。












