做网站需要的条件/江西seo推广方案
知识框架

1.表的加法
union --去重
union将两个表的数据按行合并在一起,两个表重复的数据只保留一个

union all--不去重
union all将两个表的数据按行合并在一起并保留重复行。

2.表的联结
2.1.交叉联结cross join
交叉联结又称笛卡尔积,交叉联结是对两张表中的全部记录进行交叉组合,结果中的记录数通常是两张表中行数的乘积。
2.2内联结 inner join
内联结是查找出同时存在于两张表的共同数据。
实例:查询均存在与student表和score表中学生,学号,课程号 。通过关键字:学号 进行两表内联结。

2.3 左联结 left join
左联结可将left join子句左侧的表中的数据全部取出来,与右边进行匹配,若右表无匹配项,则返回值为Null。

2.4右联结 right join
右联结可将right join子句右侧的表中的数据全部取出来,与左边进行匹配,若左表无匹配项,则返回值为Null。

2.5全联结 full join
全联结会返回左表和右表中的所有行,如果两个表之间有匹配,则进行合并;当没有匹配行时,另一个表中对应的值用空值Null填充。mysql暂不支持全联结操作。
3. 应用案例
问题1:查询所有学生的学号、姓名、选课数、总成绩查询

问题2:查询平均成绩大于85的所有学生的学号、姓名和平均成绩

问题3:查询学生的选课情况:显示学号,姓名,课程号,课程名称

3. case表达式
CASE WHEN <判断表达式> THEN <表达式>WHEN <判断表达式> THEN <表达式>WHEN <判断表达式> THEN <表达式>...ELSE <表达式>
END
注意事项:else 子句省略时会默认else是空值,但尽量要写;end不能省略; case表达式可以放在SQL的任意子句里面
问题 1 :查询出每门课程的及格人数和不及格人数

问题2 :使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称

4.SQLZOO
The JOIN operation/zhsqlzoo.net






