天天看点

两个sql交集_sql的高级命令运用

依旧准备好三张有关联的表格:学生表t_student,班级表t_class,成绩表t_grade

两个sql交集_sql的高级命令运用
两个sql交集_sql的高级命令运用
两个sql交集_sql的高级命令运用

回顾:多表联查,select a.id,a.sname,b.cname,c.chinese,c.math,c.english from tstudent a a join t_class b on a.cid=b.id join t_grade c on c.sid = a.id where c.chinese>100

两个sql交集_sql的高级命令运用
一,sql分组group by的运用

问:假设统计以班级为分组,两个班级的平均分

输入命令:select b.cname,avg(c.chinese+c.math+c.english) a from tstudent a a join t_class b on a.cid=b.id join t_grade c on c.sid group by b.cname;

两个sql交集_sql的高级命令运用
注意:分组group by 必须和聚合函数配合使用,不能单独用

问:查询出男女的人数和男女中最大的年龄

两个sql交集_sql的高级命令运用

问:查询出同名的人

两个sql交集_sql的高级命令运用
注意:添加条件时,筛选分组后的数据用having,筛选分组前的用where

问:统计出每个班的语文成绩大于100分的同学的语文平均分,并只显示平均分高于110的班级

两个sql交集_sql的高级命令运用
二,数据排序order by的运用

正序:asc(可省略) 倒序:desc

问:将学生表的学生按照年龄倒序排序

两个sql交集_sql的高级命令运用
三,限制数据显示limit的运用

如:select * from t_student limit 0,5

0,代表从哪条开始显示,5,表示显示多少条(0可省略)

两个sql交集_sql的高级命令运用

问:统计出每个班语文平均分成绩大于100的同学的班级语文平均分,然后显示出平均分最高的班级

两个sql交集_sql的高级命令运用
四,条件语句case when ...then... end 的运用

问:30岁以内显示青年,30-60显示壮年,60以上显示老年

剩余可以用else

两个sql交集_sql的高级命令运用
五,多表联查的方式

1,内连接(join): 显示的数据是取自两表的交集(只显示两表关联的上的字段)

2,外连接:取自两表的并集

左连接(left join):显示左表的所有数据和两表关联上的数据

右连接(right join):显示右表的所有数据和两表关联上的数据

两个sql交集_sql的高级命令运用

六,嵌套查询

通过 把查询结果作为表/条件/列 进行查询

如:

两个sql交集_sql的高级命令运用