mysql学习笔记(六)select查询子句与子查询

2020-02-11 11:56:54 浏览数 (1)

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 条件);

将主查询的结果带入子查询进行条件判断和匹配,如果查询出结果即保留。

0 人点赞