Mysql-DQL条件查询

文章目录

    • 条件查询
      • 比较运算符
      • 逻辑运算符
      • 范围
      • like 关键字
      • 排序
        • 单列顺序
        • 组合排序
      • 聚合函数
      • 分组
        • 基本的分组流程
        • 参数的区别
      • limit 语句
        • limit 语法格式
        • limit 的使用场景

https://i-blog.csdnimg.cn/blog_migrate/58966ddd9b29aabe8841f5ec34f0d31c.gif

🏡作者主页:点击!

🤖Mysql专栏:点击!

⏰️创作时间:2024年11月16日13点30分

在这里插入图片描述

条件查询

前面我们查询的是将所有的数据查询出来,更多的时候我们需要查询指定条件的数据,因此我们需要用到 条件查询

语法格式:select 字段名 from 表名 where 条件;

流程:取出表中的数据,满足条件的记录就返回,不满足条件的记录不返回

比较运算符

“>” 大于

“<” 小于

“>=” 大于等于

“<=” 小于等于

“=” 等于

“<>、!=” 不等于(这里面有两种选择:1、<>表示不等于 2、! 表示不等于)

具体操作:

查询攻击力大于 260 的英雄

mysql> select * from number where damage>260;

查询防御值小于 230 的英雄

mysql> select * from number where defence<230;

至于大于等于或者小于等于,感觉没有必要再去进行实验了

查看射手类的所有英雄

mysql> select * from number where type=‘射手’;

查看所有英雄中不是女性的英雄

mysql> select * from number where sex<>‘女’; // <> 直接相当于不等于

mysql> select * from number where sex!=‘女’; // 此处的 ! 就相当于是一个 “不” 的意思,后面需要加等于号

逻辑运算符

and 多个条件同时满足

or 多个条件其中一个满足

not 不满足

具体操作:

查询性别为男,且是战士的英雄

mysql> select * from number where sex=‘男’ and type=‘战士’; // 显示性别为 男,类型为 战士的所有英雄

查询年龄小于 25 或者攻击力大于 250 的英雄

mysql> select * from number where age<25 or damage>250; // 显示的是年龄小于 25 攻击力大于 250 的英雄

查询 id 是 1 或 3 或 5 的英雄

mysql> select * from number where id=1 or id=3 or id=5 ;

In 关键字

语法格式:select 字段名 from 表名 where 字段 in(数据1、数据2…)

in 里面的每个数据都会作为一次条件,只要满足条件就会显示

not in 可以在一组数据里面排除数据内容,使用 not in 进行筛选

查询 id 是 1 或 3 或 5 的英雄、

mysql> select * from number where id in(1,3,5); // 查询较为方便点,in 里面使用逗号将其隔开

mysql> select * from number where id not in(1,3,5); // 查询结果为 1、3、5 以外的所有数据,not in

范围

between 值1 and 值2 // 表示从值1到值2范围,包头又包尾

比如:age between 35 and 70

相当于:age>=35 && age <=70

具体操作:

查询英雄的攻击力 大于等于 240 小于等于 310 之间的英雄

mysql> select * from number where damage between 240 and 310; // 这种方式比较简便一点

mysql> select * from number where damage>= 240 and damage<=310; // 和上面结果一样,就是比较繁琐一点

like 关键字

此处的 like 和 之前的表名那边使用的 like 是不一样的

这里的 like 表示模糊查询

标准语法: select * from where [字段名] like ‘通配符字符串’

满足通配符字符串规则的数据就会全部显示

Mysql 通配符有两个:

  • %:表示 0 个或多个字符(任意个字符)
  • _:表示一个字符

%笔记本 可以匹配:苹果笔记本,外星人笔记本,笔记本 这些都可以进行匹配的

但是如果是 苹果笔记本电脑或者说是华硕笔记本电脑,就会发现匹配不了了,那么就需要使用 %笔记本%

接下来就可以直接进行匹配了

% 表示匹配 0 个或者多个字符,并且还是任意字符

**然而使用 _ 就比较简便好理解了,一个 _ 表示一个字符,前面后面都可以添加,两个字符就用两个 _ **

具体操作:

查看姓氏为 ‘ 孙 ’ 的所有英雄;

mysql> select * from number where name like ‘孙%’; // 查询姓氏为 孙 的英雄

查询名字中包含 ‘ 姬 ’ 的所有英雄;

mysql> select * from number where name like ‘%姬%’; // 使用两个 %% 号表示任何名字中包含姬的英雄

查询姓氏为 孙 ,且姓名是三个字的英雄

mysql> select * from number where name like ‘孙__’; // 此处孙的后面是两个 _ 下横线

排序

通过 order by 子句,可以查询出的结果进行排序,只是显示方式,不会影响数据库中的数据

标准语法: select 字段名 from 表名 where 字段=值 order by 字段名 [asc | desc];

asc:表示升序,默认就是升序,从小到大,写了也行,不写也是升序

desc:表示降序,从大到小

里面的标准语句,不一定必须按照规定进行执行搜索

mysql> select * from number where damage order by damage desc; // 比如我现在就需要按照攻击力进行降序排序,直接输入字段名就可以,没有必要必须加上比较运算符

单列顺序

简单来说就是使用一个字段排序

具体操作:

查询年龄小于 30 的英雄,按照年龄升序

mysql> select * from number where age<30 order by age asc; // 表示从小到大的对年龄小于 30 的英雄进行排列

mysql> select * from number where age<30 order by age desc; // 表示从大到小的对年龄小于 30 的英雄进行排列,与上述相反

组合排序

组合排序是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推

上面例子中,年龄是有相同的,当年龄相同再使用其他字段进行排序

**标准语法:**select 字段名 from 表名 where 字段=值 order by 字段名1 [asc | desc ] , 字段名2 [asc | desc];

具体操作:

查询年龄小于等于 35 的英雄,按照年龄升序排列,如果年龄相同按照防御力进行降序

mysql> select * from number where age<=35 order by age asc , defence desc ; // 年龄升序,如相同使用防御力进行区别

聚合函数

之前我们做的查询都是横向查询,根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值,另外聚合函数会忽略空值

五个聚合函数:

count:统计指定列记录数,记录为 null 的不统计

sum:计算指定列的数据和,如果不是数据类型,那么计算结果为 0

max:计算指定列的最大值

min:计算指定列的最小值

avg:计算指定列的平均值,如果不是数据类型,那么计算结果为 0

聚合函数的使用:写在 SQL 语句 select 后,字段名的地方

select 字段名 from 表名;

select count(age) from 表名;

具体操作:

查询英雄总数

mysql> select count(name) from number;

mysql> select count( * ) from number; // 指定 * 更加的真实,准确

使用 count 不能指定一列,应该指定 * 因为 * 表示的是全部,不会因为某一行的数据不是数据类型而发生改变

查询年龄大于 30 的总数

mysql> select count(*) from number where age>30; // 显示的是年龄大于 30 的总数

查询所有英雄的总攻击力

mysql> select sum(damage) from number; // 意思就是求和,所有英雄攻击力的总和

查询英雄的最高攻击力

mysql> select max(damage) from number; // 查询 number 表中最高攻击力

mysql> select * from number where damage order by damage desc ; // 使用排序排列攻击力降序

查询英雄的最小防御力

mysql> select min(defence) from number; // 查询 number 表中最小的防御力

mysql> select * from number where defence order by defence asc; // 使用排序排列防御力升序

查询英雄的平均防御力

mysql> select avg(defence) from number; // 意思就是求平均值,所有英雄防御力的平均值

分组

分组查询是使用 group by 语句对查询信息进行分组,相同数据作为一组

分组的目的是为了统计,一般分组会跟聚合函数一起使用

分组后聚合函数的作用,不是操作所有数据,而是操作一组数据

标准语法: select 字段1,字段2…from 表名 group by 分组字段 [having 条件];

having 是在分组后对数据的数量进行一些根本上的改变,可以指定 count() 的最小值,比如 count( * )>3,意思就是 count() 的最小值大于 3

group by 是怎么分组的,将分组字段结果中相同内容作为一组

select * from number group by sex; // 这句话会将 sex 相同的数据作为一组,但是会返回每组的第一条,没有任何意义--------此处的结果没有任何意义

mysql> select * from number where sex=‘男’; // 显示表中所有的男性,并单独列出一组

mysql> select * from number where sex=‘女’; // 显示表中所有的女性,单独列出一组

具体操作:

将男性和女性英雄的总和攻击力进行列举,并添加源字段

mysql> select sum(damage),sex from number group by sex; // 此处的意思是将男性和女性英雄的总和攻击力进行列举,sum(damage),sex 意思是查询两种数据,后面的 group by sex 是以性别进行分组,列出数据

查询年龄小于 30 岁的人,按照性别分组,统计每组人数

mysql> select sex,count(*) from number where age <30 group by sex; // 没能清晰的理解完整

查询年龄小于 30 岁的人,按照性别分组,统计每组人数,人数少于3的不显示

mysql> select sex,count( * ) from number where age<30 group by sex having count( * )>3;

此处后面的 having 是对 已经分组的数据,在最后的显示上进行改变,对 count(*) 的最小值进行改变,最小值大于 3 ,因此不会显示人数小于 3 的分组

注意事项:当我们使用某个字段分组,在查询的时候也需要将这个字段查询出来,否则看不见数据属于哪组,就是在 select xxx xxx(字段) 在这里输入即可

基本的分组流程

基本分组流程:

1、首先查出年龄小于 30 的人

2、再分组

3、使用 count(*) 统计每组人数

4、显示人数大于3的数据 :count(*)>3

参数的区别

having 和 where 的区别

1、having 是在分组后对数据进行过滤

2、where 是在分组前对数据进行过滤

3、having 后面可以使用聚合函数

4、where 后面不可以使用聚合函数

limit 语句

limit 是限制的意思,所以 limit 的作用就是限制查询记录的条数

**标准格式:**select * 字段列表 [as 别名] from 表名 [where 子句] [group by 子句] [order by 子句] [limit 子句];

把 limit 子句放在最后的原因是,前面的所有限制条件都处理完了,只剩下显示多少条的问题了

limit 语法格式

limit offset length; 或者是 limit length;

**offset:**是指偏移量,可以认为是跳过的记录数量,默认是 0

**length:**是指需要显示的总记录数

具体操作:

查询 number 中数据,从第 3 条开始显示,显示 6 条

我们可以认为是跳过前面的 2 条显示 6 条数据,这种使用方法,避免了数据多的时候 降低工作效率,指定需求

mysql> select * from number limit 2,6; // 意思就是跳过前 2 条数据,玩后面显示 6 条数据

SELECT * FROM tb_students_info LIMIT 1,3;    //查询表中 1-3 数据
limit 的使用场景

使用场景:分页

比如我们登录百度、京东之类的软件,返回的数据有很多条,不会一次性的显示完,每一页都会显示固定的条数,假如我们每条数据来进行分页,那么 SQL 语句就需要这么写

select * from number limit 0,5; // 跳过 0 之后显示 5 条,显示的是 1、2、3、4、5

select * from number limit 5,5; // 跳过 5 之后显示 5 条,显示的是 6、7、8、9、10

select * from number limit 10,5; // 跳过 10 之后显示 5 条,显示的是 11、12、13、14、15

注意:

  • 如果第一个参数是 0 可以简写

    select * from number limit 5;

    select * from number limit 0,5;

    两种代码的输出结果是一样的

  • limit 10,5; 不够 5 条的,有多少显示多少

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/917246.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为云租户网络-用的是隧道技术

1.验证租户网络是vxlan 2.验证用OVS 2.1控制节点VXLAN 本端ip&#xff08;local ip&#xff09;192.168.31.8 2.2计算节点VXLAN 本端ip&#xff08;local ip&#xff09;192.168.31.11 计算节点用的是bond0做隧道网络 2.3查看bond文件是否主备模式

go 集成swagger 在线接口文档

安装swaggo go install github.com/swaggo/swag/cmd/swaglatest 编写swag import ("github.com/gin-gonic/gin""goWeb/internal/service""goWeb/model/response" )// UserRouter 路由 func UserRouter(ctx *gin.RouterGroup) {ctx.GET("/…

《Python网络安全项目实战》项目6 编写密码工具程序

《Python网络安全项目实战》项目6 编写密码工具程序 项目6 编写密码工具程序任务6.1 猜数字游戏任务描述任务分析任务实施6.1.1 编写基本的猜数字程序6.1.3 测试并修改程序6.1.4 给程序增加注释 任务拓展任务实施6.2.1 生成随机密码6.2.4 菜单功能 相关知识1. 密码字典2. 密码字…

IQ Offset之工厂实例分析

有个产品 其方块图如下: FEM全名为Front End Module 详情可参照这篇 [1] WIFI前端模块的解析 这边就不赘述 而在工厂大量生产时 有一块板子 其Chain1的EVM Fail 分析Log后 发现其IQ Offset的值 比Chain2/Chain3/Chain4 还要来得差 请问 问题是出在收发器? 还是…

音视频入门基础:MPEG2-TS专题(4)——使用工具分析MPEG2-TS传输流

一、引言 有很多工具可以分析MPEG2-TS文件/流&#xff0c;比如Elecard Stream Analyzer、PROMAX TS Analyser、easyice等。下面一一对它们进行简介&#xff08;个人感觉easyice功能更强大一点&#xff09;。 二、Elecard Stream Analyzer 使用Elecard Stream Analyzer工具可以…

任务调度工具Spring Test

Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 作用&#xff1a;定时自动执行某段Java代码 应用场景&#xff1a; 信用卡每月还款提醒 银行贷款每月还款提醒 火车票售票系统处理未支付订单 入职纪念日为用户发送通知 一.…

ORB-SLAM2 ---- Tracking::TrackWithMotionModel()

文章目录 一、函数作用二、函数讲解三、函数代码四、调用的函数1. Tracking::UpdateLastFrame()1&#xff09;. 函数讲解2&#xff09;. 函数代码 2. ORBmatcher::SearchByProjection()1&#xff09;. 函数讲解2&#xff09;. 函数代码 3. Optimizer::PoseOptimization(Frame *…

10月月报 | Apache DolphinScheduler进展总结

各位热爱 Apache DolphinScheduler 的小伙伴们&#xff0c;社区10月份月报更新啦&#xff01;这里将记录 DolphinScheduler 社区每月的重要更新&#xff0c;欢迎关注&#xff01; 月度Merge之星 感谢以下小伙伴10月份为 Apache DolphinScheduler 所做的精彩贡献&#xff08;排…

第5章-总体设计 5.3 硬件架构设计

5.3 硬件架构设计 1.哪些类型的产品需要架构设计&#xff1f;2.硬件架构师到底做什么&#xff1f;&#xff08;1&#xff09;理解需求和业务模型的情况。&#xff08;2&#xff09;背板设计&#xff0c;既需要考虑业务数据交换能力&#xff0c;也需要考虑子模块的管理监控能力。…

深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras

引言 在深度学习的世界中&#xff0c;PyTorch、TensorFlow和Keras是最受欢迎的工具和框架&#xff0c;它们为研究者和开发者提供了强大且易于使用的接口。在本文中&#xff0c;我们将深入探索这三个框架&#xff0c;涵盖如何用它们实现经典深度学习模型&#xff0c;并通过代码…

windows 安装Ubuntu 后如何使用

windows 安装Ubuntu 后如何使用 youtube链接 https://www.youtube.com/watch?vPaEcQmgEz78哔哩哔哩视频 https://www.bilibili.com/video/BV1tW42197za/?spm_id_from333.999.0.0两个视频是一样的安装Ubuntu 安装docker的教程&#xff0c;不执行docker的安装即可 安装完毕后…

IDEA leetcode插件代码模板配置,登录闪退解决

前言 最近换电脑&#xff0c;配置idea时和原来的模板格式不一样有点难受&#xff0c;记录一下自己用的模板&#xff0c;后期换电脑使用&#xff0c;大家也可以使用&#xff0c;有更好的地方可以分享给我~ IDEA leetcode插件代码模板配置,登录闪退解决 前言1 下载IDEA leetcode…

kubesphere环境-本地Harbor仓库+k8s集群(单master 多master)+Prometheus监控平台部署

前言&#xff1a;半月前在公司生产环境上离线部署了k8s集群Victoria Metrics(二开版)自研版夜莺 监控平台的搭建&#xff0c;下面我租用3台华为云服务器演示部署kubesphere环境-本地Harbor仓库k8s集群&#xff08;单master节点 & 单master节点&#xff09;Prometheus监控部…

Node.js | npm下载安装及环境配置教程

前言&#xff1a; npm 是 Nodejs 下的包管理器&#xff0c;在下载 Node.js 后自动安装&#xff0c;因此本文同时适合 Node.js / npm 的下载安装及环境配置。 一、软件安装 Node.js中文网官网下载页&#xff1a;Node.js 中文网 (nodejs.com.cn) 1&#xff09;进入下载页&#xf…

C++ 的发展

目录 C 的发展总结&#xff1a;​编辑 1. C 的早期发展&#xff08;1979-1985&#xff09; 2. C 标准化过程&#xff08;1985-1998&#xff09; 3. C 标准演化&#xff08;2003-2011&#xff09; 4. C11&#xff08;2011年&#xff09; 5. C14&#xff08;2014年&#xf…

游戏引擎学习第14天

1. 为什么关注内存管理&#xff1f; 内存分配是潜在的失败点&#xff1a; 每次进行内存分配&#xff08;malloc、new等&#xff09;时&#xff0c;都可能失败&#xff08;例如内存不足&#xff09;。这种失败会引入不稳定性或不可预测性&#xff0c;需要额外的错误处理逻辑。 …

QT6学习第一天

QT6安装和示例运行 QT介绍QT特点QT开发框架QT Quick和QML介绍Qt Widgets和Qt QuickQT6下载安装QT Creator介绍QT Creator界面介绍 QT介绍 Qt是一个跨平台的应用程序和UI开发框架&#xff0c;可用于桌面、嵌入式和移动平台的应用程序和用户界面的开发。 使用Qt只需一次性开发应…

一文详细深入总结服务器选型

1. 题记&#xff1a; 服务器选型工作是项目规划检讨的一项非常重要的工作&#xff0c;本文详细深入总结服务器选型。 2. 服务器基础知识概览 2.1 服务器的定义与功能 2.1 .1 定义 服务器是一种高性能计算机&#xff0c;其设计目的是在网络中提供服务。它可以处理来自多个客…

打造旅游卡服务新标杆:构建SOP框架与智能知识库应用

随着旅游业的蓬勃兴起&#xff0c;旅游卡产品正逐渐成为市场的焦点。为了进一步提升服务质量和客户体验&#xff0c;构建一套高效且标准化的操作流程&#xff08;SOP&#xff09;变得尤为重要。本文将深入探讨如何构建旅游卡的SOP框架&#xff0c;并介绍如何利用智能知识库技术…

基于Python爬虫大屏可视化的热门旅游景点数据分析系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…