MySQL 条件查询的常用操作


Posted in MySQL onApril 28, 2022

顾名思义, 条件查询就是使用where字句 , 将满足条件的数据筛选出来

语法 :

select < 结果 > from < 表名 > where < 条件 >

MySQL 条件查询的常用操作

这里我们以t_user表为例

-- 查询性别为男的信息
SELECT * FROM t_user WHERE sex='男'
-- 查询性别不为男的信息
SELECT * FROM t_user WHERE NOT sex='男'
-- 查询性别为男并且年龄为20的信息
SELECT * FROM t_user WHERE sex='男' AND age=20
-- 查询性别为男或者年龄为20的信息
SELECT * FROM t_user WHERE sex='男' OR age=20

模糊查询

LIKE

是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值或数值型.    

通配符: % 任意多个字符,包含 0 个字符 _ 任意单个字符

我们知道, 在实际查询中, 往往我们只需要大致的信息, 就能查到我们需要的结果(例如淘宝搜索商品等) , 而这就需要到了模糊查询 ,例 :

-- _下划线一次匹配一个字符
-- %一次可以匹配0个或者多个字符
SELECT * FROM t_user WHERE NAME LIKE '_李_'
SELECT * FROM t_user WHERE NAME LIKE 'b__'
SELECT * FROM t_user WHERE NAME LIKE 'b%'

上述第三条sql查询结果如下 : 

MySQL 条件查询的常用操作

between and 两者之间 , 包含临界值;

in 判断某字段的值是否属于 in 列表中的某一项

IS NULL (为空的)或 IS NOT NULL (不为空的)

-- 查询体重在100和130之间的信息,包括100和130
SELECT * FROM t_user WHERE weight BETWEEN 100 AND 130
-- 查询体重是100或者110的信息
SELECT * FROM t_user WHERE weight IN(100,110)
-- 查询生日为null或者不为null的信息
SELECT * FROM t_user WHERE birthday IS NULL
SELECT * FROM t_user WHERE birthday IS NOT NULL

这里需要注意, 我们如果要用null 来作为where的查询条件时 ,是不能写成下面这样

-- SELECT * FROM t_user WHERE birthday=NULL

这样是查询不到结果的, 这里我们需要使用 is null

union

使用 union 或者 union all 会把两条sql语句的查询结果合并

当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all , mysql 会把所有的记录返回,且效率高于union 。

SELECT * FROM t_user WHERE age=20 
UNION 
SELECT * FROM t_user WHERE sex='男'

查询结果 : 

MySQL 条件查询的常用操作

SELECT * FROM t_user WHERE age=20 
UNION ALL
SELECT * FROM t_user WHERE sex='男'

 查询结果 : 

MySQL 条件查询的常用操作

排序 

查询结果排序 , 使用 ORDER BY 子句排序 order by 排序列 ASC/DESC

asc 代表的是升序, desc 代表的是降序,如果不写,默认是升序

order by 子句中可以支持单个字段、多个字段、表达式、函数、别名

-- 按体重升序排列
SELECT * FROM t_user ORDER BY weight ASC
-- 按体重降序排列
SELECT * FROM t_user ORDER BY weight DESC
-- 如果体重相等,就按照学号来排,升序
SELECT * FROM t_user ORDER BY weight ASC, number ASC

数量限制

limit 子句:对查询的显示结果限制数目 (sql 语句最末尾位置 )

在实际查询中, 数据库内会存放大量的数据, 所以我们会对查询的数量进行控制,这时就需要limit

-- 从第一条数据开始查询2条数据(不包括第一条数据)
SELECT * FROM t_user LIMIT 1,2

limit  后第一位数字是指: 开始查询的位置

第二位数字是指: 查询的数据条数

分组

group by 子句 : 对查询的信息分组

having 子句 : 对分组后的结果集再进行筛选

-- 通过sex分组
-- 这里select后跟的必须是group by后的字段或者分组函数
SELECT sex,AVG(weight) FROM t_user GROUP BY sex
SELECT sex,AVG(weight) FROM t_user GROUP BY sex HAVING sex='女'

这里需要注意的是: 

查询列表比较特殊,要求是分组函数和group by后出现的字段 

分组前筛选 原始表    group by 子句的前面         where

分组后筛选 分组后的结果集 group by 的后面    having

where 是分组前筛选, having是分组后筛选

综合

在实际的开发过程中,这些字句都是连在一起使用的,并且有着一定的位置, 位置不对就会报错,例:

SELECT sex,AVG (weight) w
FROM
  t_user
WHERE sex = '男'
GROUP BY sex
HAVING sex = '男'
ORDER BY w ASC
LIMIT 0, 1

子句的顺序是有一定要求的

查询结果 : 

MySQL 条件查询的常用操作

到此这篇关于MySQL条件查询语句常用操作全面汇总的文章就介绍到这了!

MySQL 相关文章推荐
MySQL锁机制
Apr 05 MySQL
MySQL Threads_running飙升与慢查询的相关问题解决
May 08 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
MySQL 十大常用字符串函数详解
Jun 30 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
Aug 02 MySQL
mysql函数全面总结
Nov 11 MySQL
MySQL利用UNION连接2个查询排序失效详解
Nov 20 MySQL
分享mysql的current_timestamp小坑及解决
Nov 27 MySQL
关于mysql中时间日期类型和字符串类型的选择
Nov 27 MySQL
Mysql索引失效 数据库表中有索引还是查询很慢
May 15 MySQL
mysql sock 文件解析及作用讲解
Jul 15 MySQL
mysql 子查询的使用
Apr 28 #MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 #MySQL
优化Mysql查询的示例
Apr 26 #MySQL
MySQL的存储过程和相关函数
Apr 26 #MySQL
mysql 索引的数据结构为什么要采用B+树
MySQ InnoDB和MyISAM存储引擎介绍
pt-archiver 主键自增
Apr 26 #MySQL
You might like
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
javascript之解决IE下不渲染的bug
2007/06/29 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
javascript使用正则控制input输入框允许输入的值方法大全
2014/06/19 Javascript
详解jQuery lazyload 懒加载
2016/12/19 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
sqlalchemy对象转dict的示例
2014/04/22 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
python dict 相同key 合并value的实例
2019/01/21 Python
python线程信号量semaphore使用解析
2019/11/30 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
机关作风建设整改方案
2014/10/27 职场文书
党员个人自我评价
2015/03/03 职场文书
医院党建工作总结2015
2015/05/26 职场文书
电话营销开场白
2015/05/29 职场文书