数据库实验四 查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华中科技大学
《数据库技术与应用》实验报告专业班级:学生姓名:学号:
实验地点:指导教师:
实验日期时间:
一、实验项目名称:数据查询
二、实验学时:
三、实验目的:
1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。
2.掌握使用SELECT语句进行条件查询的方法。
3.掌握嵌套查询的方法。
4.掌握多表查询的方法。
5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。
四、实验工具或环境
一台装有SQL sever2008的计算机五、实验内容、步骤、代码和结果:
0. 创建studentsdb数据库及其相应表,并录入数据。
在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。
1.在studentsdb数据库中,使用下列SQL语句将输出什么?
(1)SELECT COUNT(*) FROM grade
(2)SELECT SUBSTRING(姓名,1,2) FROM student_info
(3)SELECT UPPER('kelly')
(4)SELECT Replicate('kelly',3)
(5)SELECT SQRT(分数) FROM grade WHERE 分数>=85
(6)SELECT 2,3,POWER(2,3) 选做
(7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())
2.在studentsdb数据库中使用SELECT语句进行基本查询。
(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。
(2)查询学号为0002的学生的姓名和家庭住址。
select姓名,家庭住址from student_info where学号
='0002'
(3)找出所有男同学的学号和姓名。
select姓名,家庭住址from student_info where性别='男'
3.使用SELECT语句进行条件查询
(1)在grade表中查找分数在80~90分为内的学生的学号和分数。
select学号,分数from grade where分数>='80'and分数<='90'
(2)在grade表中查询课程编号为0003的学生的平均分。
select AVG(分数)as平均分from grade where课程编号='0003'
(3)在grade表中查询学习各门课程的人数
select COUNT(*)from grade
(4)将学生按出生日期由大到小排序。
select学号,姓名,出生日期from student_info order by出生日期,学号desc
(5)查询所有姓“张”的学生的学号和姓名。
SELECT学号,姓名FROM student_info WHERE姓名LIKE'张%'
4.对student_info表,按性别顺序列出学生的学号、姓名、性别、出生日期及家庭住址,性别
相同的按学号由小到大排序。
select学号,姓名,性别,出生日期,家庭住址from student_info order by student_info.性别,学号asc
5.使用GROUP BY查询子句列出各个学生的平均成绩。
select a.学号,a.姓名,AVG(b.分数)as平均成绩from studentsdb.dbo.student_info a inner join
grade b
on a.学号=b.学号group by a.姓名,a.学号
6.使用UNION运算符将student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学
号、姓名返回在一个表中,如图4-1所示。
图 4-1
select学号,姓名from studentsdb.dbo.student_info where姓名like'刘%'
union all
select学号,姓名from studentsdb.dbo.student_info where姓名like'张%
7.嵌套查询
(1)在student_info表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。
select姓名,出生日期from studentsdb.dbo.student_info where性别=(select性别from student_info where姓名='刘卫平')
(2)使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。
select学号,姓名,性别from studentsdb.dbo.student_info
where学号in(select学号from grade where课程编号='0002'or课程编号='0005')
(3)列出学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。select课程编号,分数from grade
where学号='0001'and分数>(select MIN(分数)from grade
where学号='0002')
(4)列出学号为0001的学生的分数比0002的学生的最高成绩还要高的课程编号和分数。
select课程编号,分数from grade
where学号='0001'and分数>(select max(分数)from grade
where学号='0002')
8.多表查询
(1)查询分数在80~90范围内的学生的学号、姓名、分数。
SELECT student_info.学号,姓名,分数