实验三 交互式SQL:数据查询

实验三 交互式SQL(二):数据查询

【实验目的】

1. 掌握SELECT语句的基本语法。 2. 掌握集合函数的作用及使用方法。

3. 熟悉普通连接、外连接和自身连接的概念。 4. 能够熟练使用连接查询从多个表中查询数据。 5. 能够熟练地使用子查询查询数据。 【实验学时】

2学时 【实验内容】

以下题目均在STUxxxx(学生管理)数据库中完成。 一、 简单查询

1. 查询年龄最小的前3个同学的姓名、专业和年龄

2. 查询XS表中所有同学的学号、姓名和总学分,结果中各列的标题分别指定为num,name

和mark。

3. 查询XS表中的学生数据来自哪些专业(使用DISTINCT子句消除结果集中的重复行)。 4. 查询XS表中专业为“计算机”的同学的情况。 5. 查询XS表中1992年出生的学生姓名和专业情况。

6. 查询XS表中姓“张”或“王”或“李”且单名的学生的情况。 7. 查询XS表中专业为“计算机”且总学分尚未确定的学生情况。

8. 从XS表中查询学生的基本信息,要求按照总学分从高到低排序,学分相同时,按学号

由低到高排序。。 二、 数据汇总

1. 求选修了“101”课程的学生的平均成绩。 2. 求选修了“102”课程的学生的最高分和最低分。 3. 求学号为“4102101”学生的总成绩。 4. 求专业为“计算机”的学生的总人数。 5. 求选修了“101”课程的学生的人数。 6. 求选修了任意一门课程的学生的人数。 7. 统计各个专业的学生数。(按专业分组) 8. 统计各个专业的男女生人数。格式如下:

专业 ??

性别 ??

人数 ??

9. 查找平均成绩在80分以上的学生的学号和平均成绩。

10. 查找选修的课程中超过2门成绩在80分以上的学生的学号和成绩高于80分的门数。

格式如下:

学号 ??

三、 连接查询

成绩高于80分的门数

??

1. 查询每个学生的基本情况及选修的课程情况,格式如下:

学号 ??

姓名 ??

专业 ??

课程号 成绩 ??

??

2. 查询选修了课程号为101的每个学生的姓名及成绩。

3. 查询 “计算机”专业且选修了“计算机基础”课程的学生的学号、姓名及成绩。 4. 查询选修了课程号为101的每个学生的基本情况及成绩,若学生未选修101号课程,

也包括其情况。

5. 查询生日相同的学生的姓名和出生日期。格式如下

姓名1 ??

姓名2 ??

出生日期 ??

其中:“姓名1”和“姓名2”中的姓名不能相同。 6. 显示每门课程的平均成绩并显示总平均成绩。格式如下:

课程名 ??

平均成绩 ?? ??

(总平均)

7. 查询各个专业各门课程的平均成绩。格式如下

专业 ??

课程名 ??

平均成绩 ??

8. 查询“计算机”专业平均成绩在85分以上的学生的学号、姓名和平均成绩。 四、 子查询的使用

1. 查询平均成绩高于101号课程平均分的课程号及平均成绩。 2. 查找比所有计算机专业的学生年龄都大的学生的情况。 3. 查找未选修“C语言”课程的学生的情况。 4. 查询每个专业年龄最小的学生的基本信息。

5. 查询“计算机基础”成绩高于“计算机基础”平均分的学生的学号,姓名和成绩,并

按“计算机基础”成绩从高到低排序。 6. 查询选修全部课程的学生的基本信息。

7. 查询至少选修了“4102102”同学选修课程的学生的基本信息。 【实验内容】

1. 总结一下SELECT语句的基本语法以及你自己的理解。

_数据库实验三课程实验报告

实验名称:

姓名 实验台 编号 实验课表现 实验目的: 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; 班级 同组学生 实验报告 得分50% 学号 出勤、表现得分25% 操作结果得分25% 实验总分 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分的门数

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4