当前位置:文档之家› 实验2 单表查询实验

实验2 单表查询实验

实验D02: 单表查询实验

一、实验名称和性质

二、实验目的

1.掌握数据的基本检索方法;

2.掌握数据查询的Group by和Order by子句的使用;

3.掌握聚集函数的使用方法。

三、实验的软硬件环境要求

硬件环境要求:

PC机(单机)

使用的软件名称、版本号以及模块:

Windows XP下的SQL Server 2000(或SQL Server 2005)

四、知识准备

前期要求掌握的知识:

数据检索的语句格式:

SELECT [ALL|DISTINCT] <目标列表达式列表>

FROM <表名或视图名列表>

[ WHERE <条件表达式> ]

[ GROUP BY <列名1> [ HA VING <条件表达式> ] ]

[ ORDER BY <列名2> [ ASC|DESC ] ]

其中,SELECT后的目标列表达式可以是列名、表达式或函数。

GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。

HA VING短语:筛选出只有满足指定条件的组

ORDER BY子句:对查询结果表按指定列值的升序或降序排序

注意:T-SQL语句中关键字不区分大小写

五、实验内容

1.对数据表进行简单检索;

2.对数据表进行排序检索;

3.在检索中使用聚集函数;

六、验证性实验

先选择要操作的数据库,用T-SQL命令:

USE STUDENT

或在工具栏的当前数据库中选择STUDENT,

工作数据库

图2-1

以下查询要求在逐个语句执行,执行后将执行结果记录下来:

1.无条件查询全部数据

2.在SELECT关键字后指明要检索的列名

(1)查询S表的学生学号和姓名

(2)查询S表中的系部名

(3)查询S表中不重复的系部名

3.改变列标题的检索

(1)使用空格形式:列名新标题

(2)使用“AS”形式,列名 AS 新标题

(3)使用(列名/表达式)新标题形式

4.有条件选择的查询

(1)在S表检索“信息系”的学生信息

(2)在S表中检索姓“王”的学生信息

(3)在SC表检索’C01’选修课成绩为空的选课记录

(4)检索年龄为21,18,22的学生学号、姓名

Age IN {21,18,22}表示某条记录的AGE字段值是否是集合{21,18,22}中的元素,如是,则选择。它等价于下面语句:

5.使用聚集函数

(1)查询选课表中最高分、平均分、最低分

(2)查询“C01”课程的最高分、平均分和最小成绩。

6.对检索结果进行排序

7.进行分组统计:

(1)查询各学生的选课数

(2)使用HAVING 字句:“选课表”中查询选修了3 门以上课程的学生学号。

(3)“选课表”中按学号分组汇总学生的平均分,并按平均分的降序排列。

(4)析下面两个SELECT语句执行结果,说明有什么不同?

8.在ORDER BY字句后带COMPUTE 字句

(1)按学号对不及格的成绩记录进行汇总。

(2)按学号对不及格的成绩记录进行明细汇总(即根据排序结果进行分组汇总)

七、设计性实验

1.实验要求

(1)查询计算机系学生的学号和姓名。

Select sno,sname

From s

Where depa=’计算机系’

(2)查询选修了课程的学生学号。

Select sno

From sc

Where cno is not null

(3)查询选修C01 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。

Select sno,grade

From sc

Where cno=’c01’

Order by grade desc,sno

(4)查询每门课程的平均分。

Select

(5)查询学校开设的课程总数。

(6)查询选修两门及两门以上课程的学生学号。

(7)查询年龄在20-22之间的男生的学号、姓名、系部。

(8)查询选修‘C01’课程的学生人数。

2.实验报告要求

(1)写出验证性实验的执行结果

(2)用T-SQL完成设计性实验并写出执行结果

(3)完成以下思考题:

3.思考题

(1)使用ORDER BY子句后SELECT后的数据列有什么限制吗?使用GROUP BY 呢?

(2)执行select max(grade) from sc, 写出执行结果;执行 select sno, max(grade) from sc group by sno,写出执行结构。思考:使用GROUP BY<分组条件>子句后,语句中的统计函数的运行结

果有什么不同?

相关主题
文本预览
相关文档 最新文档