北 京 林 业 大 学
2013学年—2014学年第1学期数据库原理与应用实验报告书
专    业:信息管理与信息系统 班    级:
姓    名:            学    号:
实验地点: 计算机中心机房    任课教师:
实验题目:     实验二  SQL的投影、选取和排序查询
实验环境: Windows 200X Server、SQL Server 200X
实验目的、内容、实现方法、实验结果及结论分析等:
在查询分析器中,使用SELECT语句完成下面的操作:
1. 投影查询
① 查询学生的姓名,年龄和性别:
use SDB
select s.sn,s.age,s.sex
from s
② 查询学生选修程的课程号。注意:查询结果是否有重复记录?如何消除
select c.cno,c.cn
from c
【分析】有重复的记录,distinct可以消除查询结果中重复行:
select distinct c.cno,c.cn
from c
2. 选取查询
① 查询学习课程号为02的所有学生的学号和成绩:
select sc.cno,sc.grade
from sc
where sc.cno='02'
② 查询课程号为02且成绩高于85分以上的学生学号和成绩:
select sc.sno,sc.grade
from sc
where sc.cno='02' and grade>'85'
③ 查询选修课程为02或01的学生学号:
select sc.sno
from sc
where sc.cno='02' or sc.cno='01'
④ 查询成绩在70分至85分之间(包括70和85分)学生的学号,课程号和成绩,注意:列名使用中文名。
select sc.sno as 学号,sc.cno as 课程号,sc.grade as 成绩
from sc
where sc.grade>='70' and sc.grade<='85'
【分析】列名使用中文名:在相应的字段后面加上“as 中文名”。
⑤ 查询姓名中“张”开头的学生的姓名,年龄和性别:
select s.sn,s.age,s.sex
from s
where s.sn like '张%'
【分析】字符串的匹配用like进行,%的作用是匹配出包含零个或多个字符的任意字符串。
⑥ 查询课程关系C中责任教师编号TNO 为空值的课程信息:select c.cno,c.cn,c.period
from c
where c.tno is null
【分析】空值要注意使用is null来判断是否为空值,而不能用”=”或者没有任何符号。
⑦ 从选课表中查询成绩最高的3条选课信息:
select top 3 sc.cno,sc.sno,sc.grade
from sc
order by sc.grade desc
【分析】用order by来对查询出来的结果进行排序,此处是按学生的考试成绩进行排序,正常情况下是按升序排列的,desc的作用是让排序的结果倒序显示出来。
3. 排序查询
① 查询选修01课程的学生的学号和成绩,并按成绩降序排列:
select top 3 sc.cno,sc.sno,sc.grade
from sc
where sc.cno='01'
order by sc.grade desc
② 查询学号为0101,0103,0204的姓名,年龄(年龄按升序排列):
select s.sn,s.age
from s
where s.sno='0101'or s.sno='0103'or s.sno='0204'
order by s.age
4.自己分别设计1个投影查询、选取查询和排序查询,投影字段最好有表达式等,
查询并且将查询结果的列名用中文显示(采用字段别名方法)。
(1)投影查询:从s表中查询学生的学号,姓名和状态:
use SDB
select s.sno as 学号,s.sn as 姓名,s.state as 状态
from s
(2)选取查询:查询s表中学号的前两位为01和02的学生,列出学号、姓名、性别:
use SDB
select s.sno as 学号,s.sn as 姓名,s.sex as 性别
from s
where s.sno like '0[12]%'
【分析】”[]”可以指定范围或集合中的任何单个字符,like '0[12]%'表示选取学号前两位为01或02的学生信息。
(3)排序查询:在sc表中查询考试成绩在前50%的学生的学号、姓名、课程名和成绩:
select top 50 percent sc.sno as 学号,s.sn as 姓名,sc.cno as 课程名,sc.grade as 成绩
from sc,s
order by sc.grade desc
【分析】percent是按百分数取前几个成绩,order by sc.grade desc表示按成绩的降序排列。