文档介绍:该【数据库实验二实验报告 】是由【国霞穿越】上传分享,文档一共【6】页,该文档可以免费在线阅读,需要了解更多关于【数据库实验二实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。第6页/共5页
第1页/共5页
乂盘珠海分校
仁11数据库实验二课程实验报告
第6页/共5页
第1页/共5页
实验名称:
姓名
班级
学号
实验台编号
同组学生
实验课表现
出勤、表现得分25%
实验报告得分50%
实验总分
操作结果得分25%
实验目的:
掌握SELECT语句的基本语法
掌握SELECT语句中的SELECT子句的作用及使用方法
掌握SELECT语句中的WHERE子句的作用及使用方法
掌握SELECT语句中的ORDERBY子句的作用及使用方法
掌握集合函数的作用及使用方法
掌握SELECT语句中的GROUPBY子句的作用及使用方法
熟悉内连接、外连接、自连接和非限制连接的概念
能够熟练使用连接查询从多个表中查询数据
能够熟练地使用子查询得到想要的数据
实验内容:
第6页/共5页
第1页/共5页
一、简单査询
查询XS表中各个同学的所有信息。
select*fromXS;
查询XS表中各个同学的姓名、专业名和总学分。
select姓名,专业总学分fromXS;
查询XS表中所有同学的学号、姓名和总学分,结果中各列的标题分别指定为num,name和mark。
select学号num女生名name,总学分markfromXS;
查询XS表中的学生数据来自哪些专业(使用DISTINCT子句消除结果集中的重复行)。
selectdistinct专业fromXS:
查询XS表中各个同学的姓名、专业名和总学分,只返回结果集的前5行。
selecttop5女生名,专业总学分fromXS;
查询XS表中每个学生的学号、姓名和年龄信息。
selectdatediff(yyyy,出生日期,'2010')年龄fromXS;
查询XS表中专业为“计算机”的同学的情况。
select*fromXSwhere专业='计算机';
&查询XS表中1979年出生的学生姓名和专业情况。
SELECT女生名,专业fromXSwhereyear(出生日期)='1979';
查询XS表中专业名为“计算机”或“电子”或“数学”的学生的情况。
select*fromXSwhere专业in('计算机','电子','数学');
查询XS表中姓“张”或“王”或“李”且单名的学生的情况。
select*fromXSwhere女生名like'张_'or女生名like'王_'or女生名like'李_';
查询XS表中总学分尚未确定的学生情况。
select*fromXSwhere总学分isNULL;
查询XS表中专业为“计算机”且总学分尚未确定的学生情况。
select*fromXSwhere专业='计算机'and总学分isNULL;
从XS表中查询学生的基本信息,要求按照总学分从高到低排序,学分相同时,按学号由低到高排序。
select*fromxsorderby总学分desc,学号;
查询年龄最小的前三个同学的姓名、专业和年龄。
selecttop3姓名专业2010-year(出生日期年龄fromxsorderby年龄;
二、数据汇总
求选修了“101”课程的学生的平均成绩。
selectavgi成绩fromxs_kcwhere课程号='101';
求选修了“102”课程的学生的最高分和最低分。
selectmaxi成绩,min(成绩fromxs_kcwhere课程号='102';
第4页/共5页
第1页/共5页
求学号为“4102101”学生的总成绩。
selectsum(成绩fromxs_kcwhere学号='4102101';
求专业为“计算机”的学生的总人数。
selectcount(*)fromxswhere专业='计算机';
求选修了“101”课程的学生的人数。
selectcount(*)fromxs_kcwhere课程号='101';
求选修了任意一门课程的学生的人数。
题意不是太清楚,如果是求选课人数,语句是:
selectcount(distinct学号fromxs_kcwhere课程号isnotnull;
如果是每门课选课的人数,则语句为:
select课程号,count学号)人数fromxs_kcgroupby课程号
统计各个专业的学生数。(按专业分组)
select专业,count(学号)人数fromxsgroupby专业
&统计各个专业的男女生人数。格式如下:
专业性别人数
select专业,性另0,count(学号)人数fromxsgroupby专业,性另U
查找平均成绩在80分以上的学生的学号和平均成绩。
select学号,avg成绩)fromxs_kcgroupby学号havingavg(成绩)>80;
查找选修的课程中超过2门成绩在80分以上的学生的学号和成绩高于80分的门数。格式如下:
学号成绩高于80分的门数
select学号,count(课程号)成绩高于分的门数
fromxs_kcwhere成绩>80groupby学号havingcount(课程号>2;
三、连接查询
查询每个学生的基本情况及选修的课程情况,格式如下:
学号姓名专业课程号成绩
selectxs学号女生名专业,课程号,;
查询选修了课程号为101的每个学生的姓名及成绩。
select女生名,成绩fromxs,xs_kcwherexs学号xs_kc学号and课程号='102';
查询“计算机”专业且选修了“计算机基础”课程的学生的学号、姓名及成绩。,姓名,成绩
第5页/共5页
第1页/共5页
fromxskc,xs_kcwhere专业='计算机'and课程名='计算机基础';
查询选修了课程号为101的每个学生的基本情况及成绩,若学生未选修101号课程,也包括其情况。
selectxs.*,=xs_kc学号and课程号='101'
查询生日相同的学生的姓名和出生日期。格式如下
姓名1姓名2出生日期
其中:“姓名1”和“姓名2”中的姓名不能相同。
,,,xsx2
whereMONTH()=MONTH()andDAY()=DAY(),,
=;
显示每门课程的平均成绩并显示总平均成绩。格式如下:
课程名平均成绩
总平均……
selectkc课程名,avg(xs_kc成绩)as平均成绩fromxs_kc,=kc课程号groupbyxs_kc课程号kc课程名;selectavg(成绩)as总平均fromxs_kc;
查询各个专业各门课程的平均成绩。格式如下
专业课程名平均成绩
select专业,,avg(成绩)
fromxs_kc,xskc
groupby专业,
&查询“计算机”专业平均成绩在85分以上的学生的学号、姓名和平均成绩。
(成绩成绩fromxs_kc,='计算机',姓名havingavg(成绩)>85;
四、子查询的使用
查询平均成绩高于101号课程平均分的课程号及平均成绩。
select课程号,avg(成绩平均成绩fromxs_kc
groupby课程号
havingavgi成绩>(selectavg成绩)fromxs_kcwhere课程号='101')
查询“计算机基础”成绩的及格率。
select100*sum(casewhenisnull(,0>=60then1else0end)/count(*)as及格率
fromxs_kc,=kc课程号andkc课程名='计算机基础'
第6页/共5页
第1页/共5页
查询101号课程及格的学生的基本情况。
selectxs.*,kc课程号成绩fromkcxs_kcxs
=xs_kc课程号mdxs学号xs_kc学号andkc课程号='101'and成绩>60;
查找比所有计算机专业的学生年龄都大的学生的情况。
select*fromxswhereyear(出生日期)〉
(selectmax(year(出生日期))fromxswhere专业='计算机')and专业<>'计算机';
查找未选修“C语言”课程的学生的情况。(嵌套子查询)
select*fromkcxs_kc
=!=
(select课程名fromkcwhere课程名='C语言');
查询每个专业年龄最小的学生的基本信息。(相关子查询)
select*
fromxsy
whereyear(出生日期)=
(selectmax(year(出生日期))=
);
查找选修了“计算机基础”课程的学生的情况。
select*fromxsxs_kckc
=kc课程号andkc课程名='计算机基础';
查询“计算机基础”成绩高于平均分的学生的学号,姓名和成绩,并按“计算机基础”成绩从高
到低排序。
selectxs_kc学号,xs女生名xs_kc成绩
fromxs,xs_kc,kcx
=='计算机基础',
havingxs_kc成绩
(selectavg成绩);
查询“计算机基础”成绩及格的学生的学号、姓名、性别和专业情况。,=kc课程号
andkc课程名='计算机基础'andxs_kc成绩>60;
在XS_KC表中查询其学号在XS表中不存在或其课程号在KC表中不存在的学生的成绩信息。selectxs_kc学号,
fromxs_kc
wherenotexists
()andnotexists()
查询选修全部课程的学生的基本信息。
select*fromxswherenotexists
(select*fromkcwherenotexists
第7页/共5页
第1页/共5页
(select*==kc课程号
查询至少选修了“4102102”同学选修课程的学生的基本信息。
select*fromxs_kcx
wherenotexists(select*fromxs_kcywherey,学号='4102102'andnotexists(select*fromxs_kcz
==));
实验过程中遇到的问题以及如何解决的?
本次实验的体会(结论)得分:思考题:
评阅教师评语:
评阅教师:
日期:
第8页/共5页
第1页/共5页