天天看点

casewhen多条件查询_SQL多表查询

一 表的加法(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

casewhen多条件查询_SQL多表查询

三 连结应用案例

练习

casewhen多条件查询_SQL多表查询

1.查询出所有学生的学号,姓名,选课数,总成绩

学号,姓名 在 student表

选课数 count(distinct课程号) group by 学号 在 score 表

总成绩 sum(score) group by 学号 在score表

casewhen多条件查询_SQL多表查询

2.

学生的学号,姓名 在student表 按学号分组,平均成绩>85:avg(score) group by a.学号

casewhen多条件查询_SQL多表查询

3

学号,姓名 在 student 表

学号, 课程号 在score表

课程号,课程名称在course表

casewhen多条件查询_SQL多表查询

四 case when表达式

当有多种情况需要条件判断的时候需要case when 表达式

casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询
练习
casewhen多条件查询_SQL多表查询

1

casewhen多条件查询_SQL多表查询

2

casewhen多条件查询_SQL多表查询

SQLZOO 练习

casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询
casewhen多条件查询_SQL多表查询