千家信息网

MySQL条件查询语句常用操作有哪些

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"MySQL条件查询语句常用操作有哪些"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"MySQL条件查询语句常用操作有哪些"文章能帮助大家解决问
千家信息网最后更新 2025年01月18日MySQL条件查询语句常用操作有哪些

这篇文章主要介绍"MySQL条件查询语句常用操作有哪些"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"MySQL条件查询语句常用操作有哪些"文章能帮助大家解决问题。

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

语法 :

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

这里我们以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查询结果如下 :

between and 两者之间 , 包含临界值; in 判断某字段的值是否属于 in 列表中的某一项 IS NULL (为空的)或 IS NOT NULL (不为空的)

-- 查询体重在100和130之间的信息,包括100和130SELECT * 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 NULLSELECT * 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='男'

查询结果 :

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

查询结果 :

排序

查询结果排序 , 使用 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 sexSELECT 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) wFROM  t_userWHERE sex = '男'GROUP BY sexHAVING sex = '男'ORDER BY w ASCLIMIT 0, 1

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

查询结果 :

关于"MySQL条件查询语句常用操作有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

0