数据
这里为了体现查询语句的效果,下面根据查询语句的要求设计数据,结果如下:
KC表:
XSQK表:
XS_KC表:
- 打开“SQL Server Management Studio”窗口。
- 单击“标准”工具栏的“新建查询”按钮,打开“查询编辑器”窗口
- 在窗口中输入以下SQL查询命令并执行:
一、简单查询
a.在KC表中,查询第2学期开课的课程、授课教师
select 课程名, 授课教师, 开课学期
from kc
where 开课学期=2
b.在XSQK表中,查询女同学的姓名和电话号码
select 姓名, 性别, 联系电话
from xsqk
where 性别='女'
c.在XS_KC表中,查询成绩在80分以上的学号、课程号和成绩
select 学号, 课程号, 成绩
from xs_kc
where 成绩>=80
d.在XS_KC表中,查询在80以上和不及格学生的信息
select 学号, 课程号, 成绩
from xs_kc
where 成绩>=80 or 成绩<60
e.在XSQK表中,查询不在1980年7、8、9月出生的学生信息
select 学号, 姓名, 出生日期
from xsqk
where 出生日期 not between '1980-07-07' and '1980-09-30'
f. 在XSQK表中,查询陈姓且单名的信息
select *
from xsqk
where 姓名 like '陈_'
g.在XSQK表中,查询学号中含有1的记录信息
select *
from xsqk
where 学号 like '%1%'
h.在XSQK表中,查询电话号码中非末位含有4或6的记录信息
select *
from xsqk
where 联系电话 like '%[4,6]%[^4,6]'
i.在KC表中,查询第一、三、五学期开设的课程信息
select *
from kc
where 开课学期 in (1, 3, 5)
j.查询XSQK表,输出学号、姓名、出生日期、并使查询结构按出生日期升序排列
select 学号, 姓名, 出生日期
from xsqk order by 出生日期
二、汇总查询
a.在KC表中,统计每学期的总分数
select 开课学期, sum(学分) as '各学期的学分合计'
from kc
group by 开课学期
b.在XS_KC表中,统计每个学生的选修课程的门数
select 学号, count(*) as '每个学生选修的课程门数'
from xs_kc
group by 学号
c.将XS_KC表中的数据记录按学号分类汇总,输出学号和平均分
select 学号, avg(成绩) as '学生的平均分'
from xs_kc
group by 学号
d.查询平均分大于70且小于80的学生学号和平均分
select 学号, avg(成绩) as '学生的平均分'
from xs_kc
group by 学号
having avg(成绩) between 70 and 80
e.查询XS_KC表,输出学号、课程号、成绩,并使查询结果首先按照课程号的升序排列,当课程号相同时再按照成绩降序排列,并将查询结果保存到新表TEMP_KC中
select 学号, 课程号, 成绩
into temp_kc
from xs_kc
order by 课程号, 成绩 desc
这里因为数据没有考虑周全,暂时没有体现“当课程号相同时再按照成绩降序排列”。
f.查询选修了“101”课程的学生的最高分和最低分
select max(成绩) as '101课程的最高分', min(成绩) as '101课程的最低分'
from xs_kc
where 课程号='101'
g.统计每个学期所开设的课程门数
select 开课学期, count(*) as '每学期开设的课程门数'
from kc
group by 开课学期
h.查询各专业的学生人数
select 专业名, count(专业名) as '各专业人数'
from xsqk
group by 专业名
三、连接查询和子查询
a.查询不及格学生的学号、课程名、授课教师、开课学期的信息
select 学号, xs_kc.课程号, 授课教师, 开课学期, 成绩
from kc, xs_kc
where kc.课程号=xs_kc.课程号 and 成绩<60
b.按学号分组汇总总分高于100的学生记录,并按总分的降序排列
select 学号, sum(成绩) as '各学生的总分'
from xs_kc
group by 学号
having sum(成绩)>=100
order by sum(成绩) desc
c.使用子查询求恰好有两门课程不及格的学生信息
select 学号, 姓名
from xsqk
where (select count(课程号)
from xs_kc
where xsqk.学号=xs_kc.学号 and 成绩<=60 )=2
d.使用子查询查询每门课程的最高分的学生记录
select *
from xs_kc a
where 成绩=(select max(成绩)
from xs_kc b
where b.课程号=a.课程号)
e.使用子查询查询每个学生的最低分的课程记录
select *
from xs_kc a
where 成绩=(select min(成绩)
from xs_kc b
where b.学号=a.学号)
|