MySql 筛选条件、聚合分组、连接查询
筛选条件
比较运算符
- 等于: = ( 注意!不是 == )
- 不等于: != 或 <>
- 大于: >
- 大于等于: >=
- 小于: <
- 小于等于: <=
- IS NULL
- IS NOT NULL
逻辑运算符
- 与:and
- 或:or
- 非:not
其它操作
- 排序:order by
- 正序:asc
- 倒序:desc
- 例:select * from students order by age desc ;
- 限制:limit
- 控制显示m条数据:limit m
- 从下标为m的行数开始显示n条数据:limit m,n
- 例:select * from students limit 3,2 ;
- 去重:distinct
- 例:select distinct * from students;
- 模糊查询:like
- 任意一个字符:_
- 任意多个字符:%
- 例:select * from students where name like '%abc_' ;
- 范围查询
- 连续范围: BETWEEN a AND b 相当于a <= value <= b
- 间隔返回: IN
- 例:select * from students where id in(1,3,5,7);
- 判断空值:is null 或者 is not null
- 别名:as
聚合分组
常用聚合函数
- 统计个数:COUNT(column)
- 最大值:MAX(column)
- 最小值:MIN(column)
- 求和:SUM(column)
- 平均值:AVG(column)
- 列出字段全部值:GROUP_CONCAT(column)
分组查询:group by
- 在分组的情况下,只能够出现分组字段和聚合字段
- 其他的字段没有意义,会报错!
- Select 字段 from 表 group by 字段;
- Select 字段,count(*) from 表 group by 字段;
聚合筛选:having
- 加having条件表达式,可以对输出的结果做出限制
- Select 字段1 from 表名 group by 字段1,字段2 having 字段2>=80;
执行顺序
- 如果一个查询语句中同时包含了别名(as),聚合函数, where, having,那么他们的执行顺序是
- 先是执行:where
- 然后执行:聚合函数和别名
- 最后执行:having
子查询
将一个查询的结果留下来用于下一次查询 ( select 中嵌套 select )
要求:
- 1) 嵌套在查询内部
- 2) 必须始终出现在圆括号内
例:
- 求出学生的平均年龄
- select avg(age) from students;
- 查找出大于平均年龄的数据
- select * from student where age > 19;
- 将求出的平均年龄的SQL语句用于查找大于平均年龄的语句中
- select * from students where age > (select avg(age) from students);
连接查询
内连接:inner join
- 无条件内连接:
- 无条件内连接,又名交叉连接/笛卡尔连接
- 第一张表中的每一项会和另一张表的每一项依次组合
- select * from 表1 inner join 表2
- 有条件内连接:
- 在无条件内链接的基础上,加上一个on子句
- 当连接的时候,筛选出那些有实际意义的记录来进行组合
- select * from 表1 as a inner join 表2 as b on a.id = b.id
外连接:{left | right} join
- 左外连接: (以左表为基准)
- 两张表做连接的时候,在连接条件不匹配的时候
- 留下左表中的数据,而右表中的数据以NULL填充
- select * from 表1 as a left join 表2 as b on a.id = b.id
- 右外连接: (以右表为基准)
- 对两张表做连接的时候,在连接条件不匹配的时候
- 留下右表中的数据,而左表中的数据以NULL填充
- select * from 表1 as a right join 表2 as b on a.id = b.id
MySql 筛选条件、聚合分组、连接查询的更多相关文章
- 【MySQL】条件查询之排序聚合分组分页查询
排序查询 语法:order by 子句 order by 排序字段1 排序方式1 , 排序字段2 排序方式2... 排序方式: ASC:升序,默认的. DESC:降序. 注意: 如果有多个排序条件,则 ...
- MySQL全面瓦解12:连接查询的原理和应用
概述 MySQL最强大的功能之一就是能在数据检索的执行中连接(join)表.大部分的单表数据查询并不能满足我们的需求,这时候我们就需要连接一个或者多个表,并通过一些条件过滤筛选出我们需要的数据. 了解 ...
- mysql(4)—— 表连接查询与where后使用子查询的性能分析。
子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...
- ORM( ORM查询13种方法3. 单表的双下划线的使用 4. 外键的方法 5. 多对多的方法 ,聚合,分组,F查询,Q查询,事务 )
必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或 ...
- mysql学习之路_连接查询
回顾 列属性:主键,自增长,唯一键. 关系:一对一,一对多,多对多 三层范式: 1NF:字段设计必须符合原子性 2NF:不存在部分依赖(没有复合主键) 3NF:不存在传递依赖(实体单独成表) 逆规范化 ...
- MySQL数据库实验三:连接查询
实验三 连接查询 实验名称:连接查询(2课时) 一.实验目的 理解JOIN语句的操作和基本使用方法,掌握内连接.外连接.自身连接的概念和使用. 二.实验环境 是MS SQL SERVER 200 ...
- MySQL数据库:多表连接查询
多表连接查询 注意:使用连接技术建议将表经行重命名! # explain 检索连接是否达标 # 内连接 # 语法1 from 表1 inner join 表2 on 主键字段=外键字段 [where ...
- MySQL系列--3.数据类型和连接查询
1.存储引擎 数据创建,查询,更新和删除操作都是通过数据引擎来进行的.不同的存储引擎存储限制不同,支持不同的索引机制等. 查询数据库支持的存储引擎 MySQL 5.7.2支持的存储引擎有:InnoDB ...
- mysql在group by分组后查询第二条/第三条乃至每组中任意一条数据
昨天老板让我查询项目中(众筹),没人刚发起感召后,前三笔钱的入账时间和金额,这把大哥整懵逼了,group by在某些方面是好使,但这次不能为我所用了,获取第一笔进账是简单,可以用group by 直接 ...
随机推荐
- java开发,入职半年。对未来迷茫,如何发展
蛮多人私密我一些问题,关于面试,关于技术的,我只能说有些路只能靠自己去走,没人可以帮到自己,哪怕偶尔帮一到两次,但是技术的路这么长,总归需要自己独自成长的.附一张自己藏书的照片,与各位共勉 工作三年多 ...
- (七十七)c#Winform自定义控件-采样控件-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
- python高阶函数—filter
python内置了一个filter函数,用于过滤序列.和map函数类似,filter()函数也接受一个函数和一个序列.只不过filter函数中是把函数依次作用于序列中的每一个元素,如果是True则保留 ...
- WinForm 无边框窗体改变尺寸及移动窗体
#region 无边框窗体移动改变大小 [DllImport("user32.dll")] public static extern bool ReleaseCapture(); ...
- TSC打印机防重码在线检测系统
条码标签作为产品的一个身份标识,被应用得越来越普及,但随着使用量的增大,在打印条码流水号的过程中,偶尔会出现打印重复号码的标签出现,这样对产品生产及管理过程中会产生极大的混乱,会收到严重的客诉及返工, ...
- VMware安装vmtools实现宿主机和虚拟机共享粘贴板
打开VMware以Ubuntu14.04.6为例,保持网络畅通,在线下载工具包 下载完成后dvd下出现该压缩包 将其复制到桌面并在桌面进入终端 执行命令: tar -zxvf xxxx.tar.gz ...
- 【好书推荐】《剑指Offer》之硬技能(编程题1~6)
本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/sword 前一篇<[好书推 ...
- 网页前端之JavaScript学习记录总结篇
咔咔咔咔咔咔扩扩扩扩扩扩扩扩扩扩
- 构造函数new运算符进行了哪些操作
new 运算符 1,实例化一个对象 2,将构造函数prototype对象赋值给对象__proto__属性 3,将对象作为函数this传进去,函数有return 并且是对象的话,就直接返回return的 ...
- python 学习 (1-3)
流程控制if语句 语法种类: 第⼀种语法: if 条件: #引号是将条件与结果分开. 结果1. # 四个空格,或者⼀个tab键,这个是告诉程序满⾜这个条件的 结果2. 如果条件是真(True) ...