Mysql-DQL条件查询

news2024/12/22 17:21:24

文章目录

    • 条件查询
      • 比较运算符
      • 逻辑运算符
      • 范围
      • 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 条的,有多少显示多少

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux(光速安装+centos镜像 图片+大白话)

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 软件需要 Vmware 下载镜像 下载前需要知道DVD就是标准版 everything就是全家桶 centos8 centos7 规划 假如有一个200G的硬盘 环境配置分区1/100G分区2/boot1G分区3/data50G分区4swap2G&#xff08;内存2 这里忘2了&…

仓库管理系统设计与实现(Java+Mysql)

目 录 摘 要 目 录 第1章 绪论 1.1 研究背景 1.2目的和意义 1.3 论文研究内容 第2章 程序开发技术 2.1 MySQL数据库 2.2 Java语言 第3章 系统分析 3.1可行性分析 3.1.1技术可行性分析 3.1.2经济可行性分析 3.1.3操作可行性分析 3.2系统运行环境 3.3系统流程分…

CentOS 8 安装 chronyd 服务

操作场景 目前原生 CentOS 8 不支持安装 ntp 服务&#xff0c;因此会发生时间不准的问题&#xff0c;需使用 chronyd 来调整时间服务。CentOS 8以及 TencentOS 3.1及以上版本的实例都使用 chronyd 服务实现时钟同步。本文介绍了如何在 CentOS 8 操作系统的腾讯云服务器上安装并…

datawhale11月组队学习 模型压缩技术3:2:4结构稀疏化BERT模型

文章目录 一、 半结构化稀疏性简介二、 代码实践2.1 定义辅助函数2.2 加载模型、tokenizer和数据集2.3 测试baseline模型指标2.4 对BERT-base模型进行半结构稀疏化 《datawhale2411组队学习之模型压缩技术1&#xff1a;模型剪枝&#xff08;上&#xff09;》&#xff1a;介绍模…

大数据学习15之Scala集合与泛型

1. 概述 大部分编程语言都提供了数据结构对应的编程库&#xff0c;并称之为集合库(Collection Library)&#xff0c;Scala 也不例外&#xff0c;且它还拥有以下优点&#xff1a; 易用&#xff1a;灵活组合运用集合库提供的方法&#xff0c;可以解决大部分集合问题 简洁&#xf…

force stop和pm clear的区别

前言&#xff1a;因为工作中遇到force stop和pm clear进程后&#xff0c;进程不能再次挂起&#xff0c;谷歌系统共性问题&#xff0c;服务类应用经清缓存后当下服务就会挂掉&#xff0c;需要系统重启才能恢复。为了更好的“丢锅”&#xff0c;需要进一步学习force stop和pm cle…

SAP+Internet主题HTML样式选择

SAP目前只支持三种HTML样式选择&#xff1a; 样式一 背景色&#xff1a;深色&#xff0c;蓝 特点&#xff1a;适中型排列&#xff0c;与SAP界面排列相同&#xff0c;富含UI特征&#xff0c;整齐美观 URL地址&#xff1a;http://cn1000-sap-01.sc.com:8000/sap/bc/gui/sap/it…

VBA学习笔记:点击单元格显示指定的列

应用场景&#xff1a; 表格中列数较多&#xff0c;特定条件下隐藏一些无关的列&#xff0c;只保留相关的列&#xff0c;使表格更加清晰。 示例&#xff1a;原表格如下 点击一年级&#xff0c;只显示一年级相关的科目&#xff1a; 点击二年级&#xff0c;只显示二年级相关的科…

java版嘎嘎快充汽车单车充电系统源码系统jeecgboot

汽车使用云快充1.6 1.5协议&#xff0c;单车用的铁塔协议 前端uniapp、后端jeecgbootvue2

这些场景不适合用Selenium自动化!看看你踩过哪些坑?

Selenium是自动化测试中的一大主力工具&#xff0c;其强大的网页UI自动化能力&#xff0c;让测试人员可以轻松模拟用户操作并验证系统行为。然而&#xff0c;Selenium并非万能&#xff0c;尤其是在某些特定场景下&#xff0c;可能并不适合用来自动化测试。本文将介绍Selenium不…

qt QFrame详解

1、概述 QFrame是Qt框架中用于提供框架或边框的控件&#xff0c;主要用于在图形用户界面&#xff08;GUI&#xff09;中创建框架&#xff0c;并提供各种边框样式和功能。它是Qt中一个基础的容器类&#xff0c;也是许多基础控件的基类&#xff0c;可以被QLCDNumber、QToolBox、…

python json详解

json 是 Python 中用于处理 JSON 数据的标准库。JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人类阅读和编写&#xff0c;同时也易于机器解析和生成。Python 的 json 模块提供了将 Python 对象与 JSON 数据相互转换的功…

ISUP协议视频平台EasyCVR私有化部署视频平台如何实现RTMP推流将大疆无人机的视频画面回传?

在现代视频监控和流媒体技术领域&#xff0c;EasyCVR视频融合云平台以其卓越的性能和灵活性&#xff0c;成为了跨区域、网络化视频监控综合管理的理想选择。作为TSINGSEE青犀视频“云边端”架构体系中的核心组件&#xff0c;私有化部署视频平台EasyCVR不仅能够实现视频数据的集…

【时间之外】IT人求职和创业应知【37】-AIGC私有化

目录 新闻一&#xff1a;2024智媒体50人成都会议暨每经20周年财经媒体峰会召开 新闻二&#xff1a;全球机器学习技术大会在北京召开 新闻三&#xff1a;区块链技术在金融领域的应用取得新突破 不知不觉的坚持了1个月&#xff0c;按照心理学概念&#xff0c;还要坚持2个月&am…

SqlServer 存储临时数据

WITH 子句中的 公用表表达式&#xff08;CTE&#xff09;、临时表&#xff08;Temporary Table&#xff09; 和 表变量&#xff08;Table Variable&#xff09; 都可以存储临时数据&#xff0c;但它们的使用场景、生命周期、作用范围和性能特性有所不同。下面是这三者之间的主要…

jmeter基础05_第1个http请求

本节课使用网站“httpbin.org”进行基础的http请求全流程。 请求获取httpbin.org的首页&#xff1a; 请求方法&#xff1a;GET URL&#xff1a;http://httpbin.org 参数&#xff1a;无 1、操作步骤 ① 打开jmeter&#xff1a;命令行窗口输入“jmeter”并回车。 ② 添加线程组…

SpringBoot+MyBatis+MySQL的Point实现范围查找

前言 最近做了一个功能&#xff0c;需要通过用户当前位置点获取指定范围内的数据。由于后端存储用的是 MySQL&#xff0c;故选择使用 MySQL 中的 Point 实现范围查找功能。ORM 框架用的是 MyBatis&#xff0c;MyBatis 原生并不支持 Point 字段与 POJO 的映射&#xff0c;需要自…

计算机网络中的数据包传输机制详解

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 计算机网络中的数据包传输机制详解 计算机网络中的数据包传输机制详解 计算机网络中的数据包传输机制详解 引言 数据包的基本概念…

DAY110代码审计-PHP框架开发篇ThinkPHP版本缺陷不安全写法路由访问利用链

https://blog.csdn.net/m0_60571842/article/details/139057898 看这个原作者 知识点&#xff1a; 1、PHP框架学习-ThinkPHP-架构&调试&路由&接受2、PHP框架审计-ThinkPHP-不安全写法&版本漏洞 框架审计总结方向&#xff1a; 1、版本不安全写法怎么检测 -本…

【日志】力扣11.盛水最多的容器

2024.11.15 【力扣刷题】 11.盛水最多的容器 - 力扣&#xff08;LeetCode&#xff09; int maxArea(int* height, int heightSize) {int max 0;int V 0;int left 0;int right heightSize - 1;while (left < right) {if (height[left] > height[right]) {V height[r…