实验四数据库的复杂查询
一、实验目的
1.掌握SQL Server查询分析器的使用方法.
2.加深对SQL语言的查询语句的理解。
3.熟练掌握多个数据表的数据查询的操作方法。
二、相关知识
数据库中数据的复杂查询包括连接、投影、选择条件表达式
三、实验内容
在学生选课库中,用Transact-SQL语句实现下列简单数据查询操作。
1)查询成绩在60-85之间的学生的学号和姓名。
select学号,姓名
from学生
where exists(select*from选课
where学号=学生.学号and成绩>60 and成绩<85)
2)查询选修课程号为‘C1’且成绩非空的学生学号和成绩,成绩按150分制输出(每个成绩乘以系数1.5),并且给已经乘以系数的成绩定义一个别名。
select学号,成绩*1.5 as分制
from选课
where课程号is not null and课程号='C03'
3)查询有选课记录的所有学生的学号,用DISTINCT限制结果中学号不重复。
select distinct 学号
from 选课
4)查询选修课程‘C1’的学生学号和成绩,结果按成绩的升序排列,如果成绩相同则按学号的降序排列。
select学号,成绩
from选课
where课程号='C03'
group by学号,成绩
order by学号desc
2. select学号,成绩
from选课
where课程号='C03'
order by 成绩,学号desc
5)查询选修课程号为‘C2’且成绩优秀(85分以上)的学生学号、姓名和成绩
select 学生.学号,姓名,成绩
from 学生 inner join 选课 on 课程号='c04' and 成绩>=85
and 学生.学号=选课.学号
6)查询选修了数据库原理的学生的基本信息(学号、姓名、性别、年龄、电话、系编号)。select 学生.学号,姓名,性别,出生日期,电话,所在系
from 学生,选课,课程
where 学生.学号=选课.学号 and 选课.课程号=课程.课程号 and 课程名='数据库原理'
7)查询‘C1’课程的成绩高于70的学生姓名。
select 姓名
from 学生,选课
where 学生.学号=选课.学号 and 课程号='c04' and 成绩>=70
8) 查找选修了课程号为‘c1’课程的学生情况(学号、姓名、性别、年龄)。
select 学生.学号,姓名,性别,出生日期
from 学生 join 选课 on
学生.学号=选课.学号 and 课程号='c01'
9)查找未选修‘C语言程序设计’的学生情况(学号、姓名、性别、年龄)
select 学生.学号,姓名,性别,出生日期
from 学生
where not exists
(select *
from 选课 cross join 课程
where 学生.学号=选课.学号 and 课程名='C语言程序设计')
10)查找课程号‘C3’的成绩不低于课程号‘C1’的最低成绩的学生的学号和姓名。
四、实验步骤
将题目中得查询需求转换为Transact-SQL语句;输入查询分析器的输入区中执行,查看结果区中的查询结果,直至正确为止。
五、实验要求
1. 认真完成以上题目,遇到问题和错误,按错误提示分析原因,在查错和改错中加深对Transact-SQL语句语义和规则的了解。
2.读懂语句,预测结果,并与实际运行的结果相对照。