MySQL条件查询语句常用操作全面汇总
作者:羡羡ˇ 发布时间:2024-01-26 11:10:24
顾名思义, 条件查询就是使用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和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='男'
查询结果 :
SELECT * FROM t_user WHERE age=20
UNION ALL
SELECT * 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 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
子句的顺序是有一定要求的
查询结果 :
来源:https://blog.csdn.net/xx12321q/article/details/123641200
猜你喜欢
- 本文实例为大家分享了python批量读取文件名并写入txt中的具体代码,供大家参考,具体内容如下先说下脚本使用的环境吧,在做项目的过程中需要
- 一定要对用户可能输入的诸如引号,尖括号等特殊字符给予足够重视,它们可能引发严重的安全问题。SQL注入的基本手法之一,就是利用对单引号未加过滤
- 两个树莓派,在同一个局域网内,传输文件,采用socket方式。client端代码:import socketimport osimport
- 本文实例讲述了Python文件及目录操作的方法。分享给大家供大家参考。具体分析如下:在python中对文件及目录的操作一般涉及多os模块,o
- 对于windows平台来说安装完MySQL后,系统就已经默认生成了许可表和账户,你不需要像在Unix平台上那样执行 mysql_instal
- 因时间问题不可能一次写的很多,但我们会经常更新,方便大家。希望学习编程的朋友不要因为从网站复制了代码,而不能正常的运行而放弃。其实老鸟也是经
- 处理多个数据和多文件时,使用for循环的速度非常慢,此时需要用多线程来加速运行进度,常用的模块为multiprocess和joblib,下面
- create database myIndexDemo go use myIndexDemo go create table ABC ( A
- 1、子类可以继承父类,同样,父类也可以继承自己的父类,一层一层地继承。class A:def have(self):print('I
- 一、python中List添加元素的几种方 * ist 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义
- 关于oracle 优化的内容很多,概念庞杂,不过可以总结出一个大纲性的东西作为需要考虑的方向,然后再逐步细化。oracle优化按重要性需要考
- 本文实例讲述了ASP.NET中MVC从后台控制器传递数据到前台视图的方式。分享给大家供大家参考。具体分析如下:数据存储模型Model:pub
- 存在问题:jupyter代码无法在pycharm中运行原因:工作文件和安装文件不统一引起的解决方案:pycharm中新建工程项目时,要将图中
- using System; using System.Data; using System.Configuration; using Sys
- python调用文件时找不到相对路径current_path = os.path.dirname(__file__)if current_p
- 最近在做的一个项目中需要使用到HTML5中引入的WebSocket技术,本来以为应该很容易就能搞定,谁知道在真正上手开发了以后才发现有很多麻
- 说到聚集索引,我想每个码农都明白,但是也有很多像我这样的猥程序员,只能用死记硬背来解决这个问题,什么表中只能建一个聚集索引,然后又扯到了目录
- 二值图像的凸壳指的是包围输入二值图像白色区域的最小的凸多边形的像素集合。skimage中的函数from skimage.morphology
- 有时候要通过asp代码在数据库中创建表和列,下面的就是这些操作的函数。1.检测表是否存在tbName 检测的表的名称dbTp 数据库的类型1
- 一:安装sql server 2005过程中出现如下问题:“选择的功能中没有任何功能可以安装或升级”:解决方案:Microsoft SQL