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 相关文章推荐
多表查询、事务、DCL
Apr 05 MySQL
MySQL 8.0 之不可见列的基本操作
May 20 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
mysql 如何获取两个集合的交集/差集/并集
Jun 08 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
MySQL系列之开篇 MySQL关系型数据库基础概念
Jul 02 MySQL
MySQL面试题讲解之如何设置Hash索引
Nov 01 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
Apr 12 MySQL
MySQL串行化隔离级别(间隙锁实现)
Jun 16 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显示MySQL数据的三种方法
2008/06/05 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
python批量提交沙箱问题实例
2014/10/08 Python
python pygame模块编写飞机大战
2018/11/20 Python
Django 拆分model和view的实现方法
2019/08/16 Python
pytorch的batch normalize使用详解
2020/01/15 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
表彰先进集体通报
2014/01/12 职场文书
竞选部门副经理的自荐书范文
2014/02/11 职场文书
5s推行计划书
2014/05/06 职场文书
基层党员公开承诺书
2014/05/29 职场文书
重阳节活动总结
2014/08/27 职场文书
党校毕业心得体会
2014/09/13 职场文书
违纪学生保证书
2015/02/27 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
数据库连接池
2021/04/06 MySQL