select语句有6大子句
from
后跟表,视图,多行多列的二维表,从这些表中筛选数据
where
后跟条件,取哪几行的数据
group by
后面跟列名依据这个列名进行分类汇总,一般跟函数相关联使用如SUM,COUNT,AVG等等...
如select id,sum(salary) group by id;
group by后跟的列名也可以有多个
having
意味着对分组统计结果中再次对统计结果加条件,其作用类似于where,但是select的查询子句的位置是有要求的,六大查询子句,在having位置再加条件,其也是不可或缺的
having和where的区别
1.where后面不能跟分组函数
2.where用于在原表的记录中筛选,having可以是对原表的筛选,但更多的是对统计结果的筛选。
order by
升序:ASC
降序:DESC
limit
取几条信息
limit m,n
m表示从第几条信息开始取,n表示最多取n条信息
通常用于分页查询
子查询
在一个查询中嵌套另一个查询,子查询的结果作为外部查询的条件或者数据范围来使用。
子查询分为3类:
where型
- select 展示列名 from 表名 where 列名 运算符(select 对应列名 from ....);
这个列名和对应列名应该做到类型相同
如果不加入运算符,也可以使用IN这些类似符号
- select 展示列名 from 表名 where 列名 in(select 对应列名 from ....);
例:select 展示列名 from 表名 where 列名 >ALL(select 对应列名 from ....);比子查询的值都大
select 展示列名 from 表名 where 列名 >ANY(select 对应列名 from ....);比子查询的任意一个值大
from型
- select 展示列们 from 表名 inner join (select 列名 from ...) 临时表名 on 条件;
其中,select的子查询所得的表为临时表,后跟临时表名,可在条件判断中指代。
exist型
select 展示列 from 表名 where exists (select 列名 from 表名 where 条件);
将主查询的结果带入子查询进行条件判断和匹配,如果查询出结果即保留。