诛仙3焚香超完美加点:查询复习作业参考答案

来源:百度文库 编辑:九乡新闻网 时间:2024/04/20 07:54:41

这里是以王巧梅作业为主批改后的结果,做的很不错,红色字体表示该同学尚未完成的部分,请其他同学对照学习

select 字段列表

from 表

where 条件

order by 字段 ASC/DESC

--查询成绩表中课程号为2,成绩在70~99之间的记录,按成绩升序排序(10%)(10)

select score,courseid 
from score 
where courseid=2  and score >70 and score<99
order by score asc

 --查询学生表中地址是(南京、北京、东京、西安)的记录(10%)(10)

select saddress    --按要求其他字段也应该列出,否则查询的记录无意义
from students
where saddress in(‘南京’, ‘北京’, ‘东京’, ‘西安' )

 --查询成绩表课程号为3的前3名成绩的记录按成绩降序排列(10%)(8)

select top 3 *

from score

where courseid=3

order by score desc

 select 字段列表,聚合函数

from 表

group by字段列表

having 条件

--通过成绩表查出课程号及该门课平均成绩

 select courseid,avg(score) As 平均成绩(10%)(6)

from score

group by courseid

 --查询每个同学每门课的平均成绩

select studentid,courseid,avg(score) As 平均成绩(4%)(3)

from score

group by studentid,courseid

  

--查询成绩表中参加课程号为2的学生人数(distinct的使用,去除重考同学的计数)(1%)

selectcourseid,count(distinct studentid)

from students

where courseid=2

group by courseid

--查询成绩表中课程平均成绩超80分的学号、课程号、平均成绩记录(有补考成绩)(1%)

select studentid,courseid,avg(score) As 平均成绩

from score

group by studentid,courseid

having avg(score)>80

 函数的使用(len,left,right)

--给学生表的身份证号cardid建立一个约束字符必须是15或者是18位(3%)

len(cardid)=15 orlen(cardid)=18

--根据学生表的学号查询入学年份、姓名、班级记录、两位数的座号(3%)

Select left(studentid,4)as 入学年份 ,sname,sclass

From studnets

多表查询

内连接查询

select A.字段列表,B.字段列表

from 表1 as A

inner join 表2 as B

on 两个表的主外键相等的条件

 另一种查询方法

select A.字段列表,B.字段列表

from 表1 as A, 表2 as B

where 连接条件

 --查询学生姓名、班级、课程号、成绩记录(10%)

selectA.Sname,A.Sclass,B.courseid,B.score

from students as A

inner join score as B

onA.Studentid=B.Studentid

--要查询学生姓名、班级、课程名、成绩所有记录(10%)

SELECT

a.SName AS 姓名,a.SclassAs 班级, c.CName AS 课程,b.Score AS 成绩

FROM Students AS a

INNER JOIN Score AS b ON(a.StudentID = b.StudentID)

INNER JOIN Course ASc ON (c.CourseID = b.CourseID)


左外连接

主要考虑左表到底用两个表的哪个

--查询所有同学成绩(姓名、班级、成绩)没有参加考试的同学成绩以空值表示(6%)

selectA.Sname,A.Sclass,B.courseid,B.score

from students as A

left outer join score asB

onA.Studentid=B.Studentid