实验三 单表查询
一、实验目的
掌握简单SQL 查询语句的应用,包括like、top、order by、compute 、聚集函数的应用。
二、实验内容
1、基本查询
(1)查询学生表中全体学生的全部信息。
select * from Student
(2)检索全体学生的学号、姓名。
select Sno,Sname
from Student
2、查询时改变列标题的显示
检索全体学生的学号、姓名、家庭地址信息,并分别加上“学生”、“学号”、址”的别名信息。
select Sname as 学生,Sno as 学号,Home_addr as 家庭地址
from Student
3、条件查询
(1)查询成绩大于80分的学生的学号及课程号、成绩。
“家庭地
select Sno,Cno,Grade
from SC
where Grade>80
(2)查询成绩介于75~80分的学生的学号及课程号、成绩。
select Sno,Cno,Grade
from SC
where Grade between 75 and 80
(3)查询选修了课程号为“002”,且成绩大于80的学生的学号。
select Sno
from SC
where Grade>80 and Cno='002'
(4)某些学生选修某门课程后没有参加考试,所以有选课记录,但没有考试成绩,下面我们来查一下缺少成绩的学生的学号和相应的课程号。
select Sno,Cno
from SC
where Grade is null
4、基于IN子句的数据查询
从课程表中查询出“高数”、“C语言程序设计”的所有信息。
select * from Course
where Cname in('高数','c语言程序设计')
5、基于BETWEEN。。。。AND子句的数据查询
查询所有成绩在70-80之间的学生选课信息。(between·and为闭区间)
select * from SC
where Grade between 70 and 80
6、基于Like子句的查询
(1)从学生表中分别检索出姓张的所有同学的资料;检索名字的第二个字是“红”或“虹”的所有同学的资料。
select * from Student
where Sname LIKE '张%' or Sname LIKE '_红%' or Sname LIKE '_虹%'
(2)查询课程名为Visual_Basic的课程的学分。(提示:使用ESCAPE短语)
select Credit from Course
where Cname LIKE 'Visual\\_Basic' ESCAPE '\\'
7、使用top关键字查询
(1)从选课表中检索出前3个课程信息。
select Top 3 *
from Course
(2)从选课表中检索出前面20%的课程信息。
select Top 20 PERCENT *
from Course
8、消除重复行
检索出学生已选课程的课程号,要求显示的课程号不重复。
select distinct Cno from Course
9、查询经过计算的值。
查询全体学生的姓名及其年龄(提示:利用系统函数getdate())
select Sname as 姓名,YEAR(getdate())-YEAR(Birth) as 年龄
from Student
10、使用ORDER BY语句对查询的结果进行排序
(1)显示所有学生的基本信息,按班号排列,班号相同则再按学号排列。
select * from Student
Order by Classno,Sno
(2) 查询全体学生的姓名及其年龄,并按学生的年龄的降序排列。
select Sname as 姓名,year(getdate())-year(Birth) as 年龄
from Student
Order by '年龄' desc
11、使用聚合函数
(1)查询学生总人数。
select count(distinct Sno) as 学生总人数
from Student
(2)计算“002”号课程的学生平均成绩、最高分、最低分。
select AVG(Grade) as 平均分,MAX(Grade) as 最高分,MIN(Grade) as 最低分
from SC
Where Cno='002'
12、使用Group子句进行查询
(1)查询各班级学生总人数。
select Classno as 班级,COUNT(*) as 学生人数
from Student
Group by Classno
(2)汇总总分大于150分的学生的学号及总成绩。
select Sno as 学号,Sum(Grade) as 总成绩
from SC
Group by Sno
Having Sum(Grade)>150
(3)查询各个课程号相应的选课人数。
select Cno as 课程号,Count(*) as 学生人数
from SC
Group by Cno
13、使用Compute和compute by子句进行查询
(1)汇总每个学生的学号及总成绩。
select Sno 学号,Grade 成绩
from SC
Order by Sno
Compute Sum(Grade) by Sno
(2)按学号汇总出每个学生的学号及总成绩、最高分、最低分,及所有学生总成绩。
select sno 学号,grade 成绩
from SC
order by sno
compute sum(grade) ,MAX(grade),MIN(grade) by sno
select sno 学号,grade 成绩
from SC
order by sno
compute sum(grade)
观察使用Compute子句和Compute by 子句执行结果有何不同?
答:Compute by子句执行后结果以by之后的关键词进行排序。
因篇幅问题不能全部显示,请点此查看更多更全内容