数据库实验二实验报告

  • 格式:doc
  • 大小:95.50 KB
  • 文档页数:5

_数据库实验二课程实验报告实验名称:姓名班级学号实验台编号同组学生实验课表现出勤、表现得分25% 实验报告得分50%实验总分操作结果得分25%实验目的:1.掌握SELECT语句的基本语法2.掌握SELECT语句中的SELECT子句的作用及使用方法3.掌握SELECT语句中的WHERE子句的作用及使用方法4.掌握SELECT语句中的ORDER BY子句的作用及使用方法5.掌握集合函数的作用及使用方法6.掌握SELECT语句中的GROUP BY子句的作用及使用方法7.熟悉内连接、外连接、自连接和非限制连接的概念8.能够熟练使用连接查询从多个表中查询数据9.能够熟练地使用子查询得到想要的数据实验内容:一、简单查询1.查询XS表中各个同学的所有信息。

select* from XS;2.查询XS表中各个同学的姓名、专业名和总学分。

select姓名,专业,总学分from XS;3.查询XS表中所有同学的学号、姓名和总学分,结果中各列的标题分别指定为num,name和mark。

select学号num,姓名name,总学分mark from XS;4.查询XS表中的学生数据来自哪些专业(使用DISTINCT子句消除结果集中的重复行)。

select distinct专业from XS;5.查询XS表中各个同学的姓名、专业名和总学分,只返回结果集的前5行。

select top 5 姓名,专业,总学分from XS;6.查询XS表中每个学生的学号、姓名和年龄信息。

select datediff(yyyy,出生日期,'2010')年龄from XS;7.查询XS表中专业为“计算机”的同学的情况。

select*from XS where专业='计算机';8.查询XS表中1979年出生的学生姓名和专业情况。

SELECT姓名,专业from XS where year(出生日期)='1979';9.查询XS表中专业名为“计算机”或“电子”或“数学”的学生的情况。

select*from XS where专业in('计算机','电子','数学');10.查询XS表中姓“张”或“王”或“李”且单名的学生的情况。

select*from XS where姓名like'张_'or姓名like'王_'or姓名like'李_';11.查询XS表中总学分尚未确定的学生情况。

select*from XS where总学分is NULL;12.查询XS表中专业为“计算机”且总学分尚未确定的学生情况。

select*from XS where专业='计算机'and总学分is NULL;13.从XS表中查询学生的基本信息,要求按照总学分从高到低排序,学分相同时,按学号由低到高排序。

select*from xs order by总学分desc,学号;14.查询年龄最小的前三个同学的姓名、专业和年龄。

select top 3 姓名,专业,2010-year(出生日期)年龄from xs order by年龄;二、数据汇总1.求选修了“101”课程的学生的平均成绩。

select avg(成绩)from xs_kc where课程号='101';2.求选修了“102”课程的学生的最高分和最低分。

select max(成绩),min(成绩)from xs_kc where课程号='102';3.求学号为“4102101”学生的总成绩。

select sum(成绩)from xs_kc where学号='4102101';4.求专业为“计算机”的学生的总人数。

select count(*)from xs where专业='计算机';5.求选修了“101”课程的学生的人数。

select count(*)from xs_kc where课程号='101';6.求选修了任意一门课程的学生的人数。

题意不是太清楚,如果是求选课人数,语句是:select count(distinct学号)from xs_kc where课程号is not null;如果是每门课选课的人数,则语句为:select课程号,count(学号)人数from xs_kc group by课程号;7.统计各个专业的学生数。

(按专业分组)select专业,count(学号)人数from xs group by专业;8.统计各个专业的男女生人数。

格式如下:专业性别人数………………select专业,性别,count(学号)人数from xs group by专业,性别9.查找平均成绩在80分以上的学生的学号和平均成绩。

select学号,avg(成绩)from xs_kc group by学号having avg(成绩)>80;10.查找选修的课程中超过2门成绩在80分以上的学生的学号和成绩高于80分的门数。

格式如下:学号成绩高于80分的门数…………select学号,count(课程号)成绩高于分的门数from xs_kc where成绩>80 group by学号having count(课程号)>2;三、连接查询1.查询每个学生的基本情况及选修的课程情况,格式如下:学号姓名专业课程号成绩…………………………select xs.学号,姓名,专业,课程号,成绩from xs,xs_kc where xs.学号=xs_kc.学号;2.查询选修了课程号为101的每个学生的姓名及成绩。

select姓名,成绩from xs,xs_kc where xs.学号=xs_kc.学号and课程号='102';3.查询“计算机”专业且选修了“计算机基础”课程的学生的学号、姓名及成绩。

select xs.学号,姓名,成绩from xs, kc,xs_kc where专业='计算机'and课程名='计算机基础';4.查询选修了课程号为101的每个学生的基本情况及成绩,若学生未选修101号课程,也包括其情况。

select xs.*,xs_kc.成绩from xs,xs_kc where xs.学号= xs_kc.学号and课程号='101' 5.查询生日相同的学生的姓名和出生日期。

格式如下姓名1 姓名2 出生日期………………其中:“姓名1”和“姓名2”中的姓名不能相同。

select x1.姓名,x2.姓名,x1.出生日期from xs x1,xs x2where MONTH(x1.出生日期)=MONTH(x2.出生日期)and DAY(x1.出生日期)=DAY(x2.出生日期) group by x1.姓名,x2.姓名,x1.出生日期having not x1.姓名=x2.姓名;6.显示每门课程的平均成绩并显示总平均成绩。

格式如下:课程名平均成绩…………总平均……select kc.课程名,avg(xs_kc.成绩)as平均成绩from xs_kc,kcwhere xs_kc.课程号= kc.课程号group by xs_kc.课程号,kc.课程名;select avg(成绩)as总平均from xs_kc ;7.查询各个专业各门课程的平均成绩。

格式如下专业课程名平均成绩………………select专业,kc.课程号,avg(成绩)from xs_kc,xs,kcwhere xs_kc.学号=xs.学号and xs_kc.课程号=kc.课程号group by专业,kc.课程号8.查询“计算机”专业平均成绩在85分以上的学生的学号、姓名和平均成绩。

select xs.学号,姓名,avg(成绩)成绩from xs_kc,xswhere xs_kc.学号=xs.学号and专业='计算机'group by xs.学号,姓名having avg(成绩)>85;四、子查询的使用1.查询平均成绩高于101号课程平均分的课程号及平均成绩。

select课程号,avg(成绩)平均成绩from xs_kcgroup by课程号having avg(成绩)>(select avg(成绩)from xs_kc where课程号='101')2.查询“计算机基础”成绩的及格率。

select100 *sum(case when isnull(xs_kc.成绩,0)>=60 then1 else0 end)/count(*) as及格率from xs_kc ,kc where xs_kc.课程号=kc.课程号and kc.课程名='计算机基础'3.查询101号课程及格的学生的基本情况。

select xs.*,kc.课程号,成绩from kc,xs_kc,xswhere kc.课程号= xs_kc.课程号and xs.学号=xs_kc.学号and kc.课程号='101'and成绩>60;4.查找比所有计算机专业的学生年龄都大的学生的情况。

select*from xs where year(出生日期)>(select max(year(出生日期))from xs where专业='计算机')and专业<>'计算机'; 5.查找未选修“C语言”课程的学生的情况。

(嵌套子查询)select*from kc,xs_kcwhere kc.课程号=xs_kc.课程号and课程名!=(select课程名from kc where课程名='C语言');6.查询每个专业年龄最小的学生的基本信息。

(相关子查询)select*from xs ywhere year(出生日期)=(select max(year(出生日期))from xs xgroup by专业having x.专业=y.专业);7.查找选修了“计算机基础”课程的学生的情况。

select*from xs,xs_kc,kcwhere xs_kc.学号=xs.学号and xs_kc.课程号=kc.课程号and kc.课程名='计算机基础'; 8.查询“计算机基础”成绩高于平均分的学生的学号,姓名和成绩,并按“计算机基础”成绩从高到低排序。

select xs_kc.学号,xs.姓名,xs_kc.成绩from xs,xs_kc,kc xwhere xs_kc.学号=xs.学号and xs_kc.课程号=x.课程号and x.课程名='计算机基础'group by xs_kc.学号,xs_kc.成绩,x.课程号,xs.姓名having xs_kc.成绩>(select avg(成绩)from xs_kc y where x.课程号=y.课程号)order by xs_kc.成绩desc;9.查询“计算机基础”成绩及格的学生的学号、姓名、性别和专业情况。