MySQL--查询

group By

将数据根据指定字段进行分组,之后进行统计

用法:group by 字段名,这个不会显示所有,只保留每组第一条记录

利用统计函数来(聚合函数)做:

count()统计每组中数量,如果目标为null不统计,如果为*表示统计记录

avg(),max(),min()

eg:求每班人数,最大南陵,最矮身高,平均年龄

select  class_id,count(*),max(stu_age),min(stu_height),acg(stu_age)from my_student group by class_id;


group by多分组

group by 字段1,字段2 ……,将数据按照字段一分组之后,再根据字段2来分组

分组默认是有排序的,是升序【可以用desc来改为降序】

回溯统计

基本语法:group by  字段[asc|desc] with rollup

如:select  class_id,count(*)from my_student group by class_id with rollup;将每班人数得出,然后回溯一次,统计总人数

多分组回溯类似、

having  

having 本质和while一样,

多使用在group by之后,可以针对分组数据进行统计筛选,可以使用聚合函数或者字段别名,但是where不行

select  class_id,count(*) as number from my_student group by class_id having number>2

--查找班级人数大于2的班级和人数

having在group by之后,group by 在where之后,where之后所有操作都是内存操作

order by

语法:order by 字段 [asc|desc]

也可以多字段排序:order by 字段一  [asc|desc],字段二  [asc|desc]

limit

限制数量

limit n:获得前n条数据

limit m,n  : 从m条开始n条

二.联合查询

select 语句 union [distinct|all] select 语句将两个语句合起来

永远只保留第一个句子所对应的语句

如果要使用order by ,每个语句必须用括号括起来,必须配合limit来使用

交叉连接

语法:语句一 cross join  语句二

两个语句进行笛卡尔积,所有字段都拼接起来、

内连接

从第一张表中,取出记录,再从另一张表中匹配。

语法:表1 [inner] join 表2 on 条件

内连接必须保证两边都可以匹配到,才可以取到

外连接outer join(左连接或者右连接)

按照某一张表作为主表,然后根据条件连接到另一张表来取到数据

左连接:坐标为主表,右连接同理

语法:表1 left/right join 表2 on 条件

using 关键字,在连接中,代替on

using对应的两张表中查询的字段是同名的,对于同名字段,在结果中只能保留一个

表1 left/right join 表2 using(名字)

三.子查询


in:主查询 where in(列子查询)

any:与in类似

<>any:表示不存在

some:与any一样

all:等于里面所有,<>all:不等于里面所有

例子:

行子查询:语法:基本语句 where (数据一,数据二)=(语句,可以使用函数)

eg: 

exit :

语法:基本语句 where exists(条件)#exists返回0或者1

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 一、查询准备 二、条件查询 三、排序 四、聚合函数 五、分组 六、分页 七、连接查询 八、自关联 九、子查询...
    梦里才是真阅读 608评论 0 3
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,879评论 5 116
  • -- 基本查询 -- 查询所有字段 -- select * from 表名; select * from stud...
    pure璞嵘阅读 2,046评论 0 2
  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,181评论 0 33
  • mysql的查询、子查询及连接查询 一、mysql查询的五种子句 where(条件查询)、having(筛选)、g...
    时芥蓝阅读 697评论 0 3