

一.表的加法


二 . 表的联结





三.解决SQL实际问题的案例及三步走分析方法
问题1:查询所有学生的学号,姓名,选课数及总成绩:
第一步,翻译成大白话:
1)学号,姓名(student)
2)选课数(每个学生的选课数目:成绩表score,按学号分类,对课程号计数count)
3)总成绩(每个学生的总成绩):
成绩表score,
按学号分组,对成绩求sum
第二步:写出分析思路:
select 查询结果[学号,姓名,选课数,总成绩]
from 哪张表(学生表student,成绩表score)
两个表怎么联结?通过学号,用哪种联结?左联接
where 查询条件(没有)
group by 分组(
每个学生的选课数目:按学号分组,对课程号求count
每个学生的总成绩:按学号分组,对成绩求sum)
having 对分组结果指定条件(没有)
order by 对查询结果排序(没有)
limit 从查询结果中取出指定行(没有);
第三步:写出sql语句:

问题2:查询平均成绩大于85的所有学生的学号,姓名和平均成绩
第一步:
1)查询出所有学生的学号,姓名,平均成绩
学号,姓名再student表中
平均成绩(每个学生的平均成绩在成绩表score中,按学号分组,平均成绩:avg(成绩))
2)平均成绩>85
第二步:
select 查询结果[学号,姓名,平均成绩]
from 哪张表(学生表student,成绩表score)
两个表怎么联结?通过学号,用哪种联结?左联接
where 查询条件(没有)
group by 分组(
平均成绩:按学号分组,对成绩求avg)
having 对分组结果指定条件(b.成绩)>85
order by 对查询结果排序(没有)
limit 从查询结果中取出指定行(没有);
第三步:

问题3:查询学生的选课情况:学号,姓名,课程号,课程名称
第一步:
1)查询出所有学生的学号,姓名(student)课程号以及课程名称(课程表course)
第二步
select 查询结果[学号,姓名,课程号,课程名称]
from 哪张表(学生表student,课程表course)
两个表怎么联结?通过成绩表产生联系 用哪种联结?两两使用内联结
where 查询条件(没有)
group by 分组(没有)
order by 对查询结果排序(没有)
limit 从查询结果中取出指定行(没有);
第三步:

四. case表达式的使用
case表达式:
case when 判断表达式 then 表达式
when 判断表达式 then 表达式
else 表达式
end


五.SQLZOO练习






