一 表的加法(union)
Union会去除重复数据
select 课程号,课程名称 from course union select 课程号,课程名称 from course1;
Union all 保留重复数据
select 课程号,课程名称 from course union all select 课程号,课程名称 from course1
二 表的连结(join)
cross join 笛卡尔积 :所有行可能的排列组合
内连结(inner join)只取出符合条件的行交叉连结
select a.学号, b.课程号
from student as a inner join score as b
on a.学号= b.学号;
外连结: 左连接 右连结 左/右连结 以左表/右表为基表
左连接 取出左表,再取出右表所有复合条件的行进行连结。
右连结 同理
select a.学号, b.课程号
from student as a left join score as b
on a.学号= b.学号
where b.学号 is null;
全连结 full join
MySQL没有该功能。取出所有行,两表无法match的地方null
三 连结应用案例
练习
1.查询出所有学生的学号,姓名,选课数,总成绩
学号,姓名 在 student表
选课数 count(distinct课程号) group by 学号 在 score 表
总成绩 sum(score) group by 学号 在score表
2.
学生的学号,姓名 在student表 按学号分组,平均成绩>85:avg(score) group by a.学号
3
学号,姓名 在 student 表
学号, 课程号 在score表
课程号,课程名称在course表
四 case when表达式
当有多种情况需要条件判断的时候需要case when 表达式
练习1
2
SQLZOO 练习