搜索
您的当前位置:首页实验05 复杂数据查询

实验05 复杂数据查询

来源:乌哈旅游


实验5 复杂数据查询

实验目的

1. 掌握使用T-SQL的SELECT语句进行复杂查询的方法

2. 掌握在SELECT语句中使用集合函数的方法

3. 掌握在SELECT语句中使用GROUP BY/HAVING子句的方法

4. 掌握嵌套查询的操作方法

5. 掌握数据更新语句INSERT INTO、UPDATE、DELETE的使用方法

实验准备

还原studentdb数据库,包含各表如错误!未找到引用源。所示。

图5- 1 数据库studentdb表关系图

实验内容及步骤

1. 打开查询分析器,选择当前数据库为studentdb。

2. 在SELECT语句中使用集合函数

(1) 查询2008级的学生总数。

select count(*) as 学生总数 from 学生 where 年级=2008

(2) 分。

查询2008级学生课程代码为1304的平均总评成绩、考试成绩的最高分和最低

select avg(总评成绩) 平均成绩,max(考试成绩) 最高分,min(考试成绩) 最低分

from 成绩

where 课程代码=1304 and 年级=2008

3. 在SELECT语句中使用分组汇总(GROUP BY/HAVING子句)。

(1) 查询2008年入校的男学生和女学生的个数。

select 性别,count(*) 学生数

from 学生

where 进校时间='2008-09-01'

group by 性别

(2) 查询2008级课程代码为1304的不同专业的平均总评成绩。

select 专业,avg(总评成绩) as 平均成绩

from 成绩

where 年级=2008 and 课程代码=1304

group by 专业

(3) 成绩。

查询2008级课程代码为1304且平均总评成绩在95分以上的专业代码及平均

select 专业,avg(总评成绩) as 平均成绩

from 成绩

where 年级=2008 and 课程代码=1304

group by 专业

having avg(总评成绩)>=90

4. 使用嵌套查询

(1) 查询“计算机文化基础”的考试成绩。

select 学号,专业,年级,班序号,总评成绩

from 成绩

where 课程代码=(select 课程代码

from 课程

where 课程名称='计算机文化基础')

(2) 用IN子查询查找2008级课程1304总评成绩为100分的学生学号、姓名、性

别、专业。

select 学号,姓名,性别,专业

from 学生

where 学号 in(select 学号 from 成绩

where 年级=2008 and 课程代码=1304 and 总评成绩=100)

(3) 查询学号为30的学生的分数比31号学生的最低分数高的课程代码和分数。

select 课程代码,总评成绩

from 成绩

where 学号= '30 '

and 总评成绩 >any(select 总评成绩

from 成绩

where 学号= '31 ')

(4) 查询学号为30的学生的分数比31号学生的最高分数还要高的课程代码和分

数。

select 课程代码,总评成绩

from 成绩

where 学号= '30 '

and 总评成绩 >all(select 总评成绩

from 成绩

where 学号= '31 ')

5. 数据更新。

(1) 在studentdb数据库中创建新表stinfo,表结构如错误!未找到引用源。。

图5- 2 stinfo表结构

(2) 使用INSERT INTO语句通过学生表将2008级学生的学号、姓名、性别数据追

加到新表stinfo中。

insert into stinfo(学号,姓名,性别)

select 学号,姓名,性别 from 学生 where 年级=2008

插入完成后查询新表stinfo数据:select * from stinfo

(3) 使用UPDATE语句通过成绩表更新stinfo总成绩。

update stinfo

set 总成绩=(select sum(总评成绩)

from 成绩

where stinfo.学号=成绩.学号)

查询表stinfo数据:select * from stinfo

(4) 使用DELETE语句删除表stinfo男同学的学生记录。

delete from stinfo where 性别='男'

查询表stinfo数据:select * from stinfo

实验思考

1. 查询2008级课程代码为1304且平均总评成绩在90分以上的专业代码、专业名称及平均成绩。

2. HAVING子句与WHERE子句的区别是什么

3. 用内连接查询(INNER JOIN)实现4(2)要求的查询结果。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top