当前位置: 首页 > news >正文

Mysql中常用到的查询关键字

文章目录

  • 1、join
  • 2、like 模糊查询
  • 3、or
  • 4、distinct
  • 5、in 包含
  • 6、group by 分组
  • 7、order by
  • 8、limit

1、join

MySQL 的连接主要分为内连接和外连接。

什么是内连接: 取得两张表中满足存在连接匹配关系的记录。
什么是外连接: 不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或两张表)中不满足匹配关系的记录。

上图!!!!!
在这里插入图片描述
内连接 inner join:在两张表进行连接查询时,只保留两张表中完全匹配的结果集
外连接常用的有左连接、右连接。
左连接 left join :在两张表进行连接查询时,会返回左表所有的行,以及右表中匹配的行,右表中没有匹配到的返回null
右连接 right join:在两张表进行连接查询时,会返回右表所有的行,以及左表中匹配的行,左表中没有匹配到的返回null。

on先对数据进行过滤,然后再进行连接

先建两张表:t_user和t_class

CREATE TABLE `t_user` (`id` bigint NOT NULL AUTO_INCREMENT,`user_name` varchar(32) DEFAULT NULL,`password` varchar(32) DEFAULT NULL,`status` int DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;CREATE TABLE `t_class` (`user_id` int NOT NULL,`class_name` varchar(32) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

插入数据:

# t_user 表
INSERT INTO `t_user` VALUES (9, 'yuanhaozhe', '123456', 2);
INSERT INTO `t_user` VALUES (10, 'yuanhaozhe', '123456', 2);
INSERT INTO `t_user` VALUES (11, 'yuanhaozhe', '123456', 2);
INSERT INTO `t_user` VALUES (12, 'yuanhaozhe', '123456', 2);
INSERT INTO `t_user` VALUES (13, 'yuanhaozhe', '123456', 2);
INSERT INTO `t_user` VALUES (14, 'yuanhaozhe', '123456', 2);
INSERT INTO `t_user` VALUES (15, 'yuanhaozhe', '123456', 2);
INSERT INTO `t_user` VALUES (16, 'yuanhaozhe', '123456', 2);
INSERT INTO `t_user` VALUES (17, 'yuanhaozhe', '123456', 2);#t_class 表
INSERT INTO `t_class` VALUES (9, '软件1班');
INSERT INTO `t_class` VALUES (9, '人工智能1班');
INSERT INTO `t_class` VALUES (10, '软件2班');
INSERT INTO `t_class` VALUES (1, '计算机科学1班');
INSERT INTO `t_class` VALUES (11, '计算机科学2班');

内连接:匹配规则是 t_user的id=t_class的user_id

select * from t_user tu inner join t_class tc on tu.id = tc.user_id

返回的是完全满足规则的记录:
在这里插入图片描述

左连接:匹配规则是 t_user的id=t_class的user_id

select * from t_user tu left join t_class tc on tu.id = tc.user_id

返回的是左表的所有记录,以及右表中匹配的记录(左表的一条记录可以匹配右表的多条记录,例如 t_user中id为9的记录,匹配右表中user_id为9的两条记录):
在这里插入图片描述
右连接:匹配规则是 t_user的id=t_class的user_id

select * from t_user tu right join t_class tc on tu.id = tc.user_id

返回的是右表的所有记录,以及左表中匹配的记录(右表的一条记录可以匹配左表的多条记录):
在这里插入图片描述

2、like 模糊查询

此时t_user表中有以下记录:
在这里插入图片描述
当 like 后面的内容没有一个%时,此时 like相当于=;

select * from t_user where user_name like '45';

在这里插入图片描述

当 like 后面的内容 %写在左侧开头时(‘%45’),此时查询的是某个字段以%后面的内容为结尾的记录

select * from t_user where user_name like '%45';

在这里插入图片描述
当 like 后面的内容 %写在右侧结尾时(‘45%’),此时查询的是某个字段以%后面的内容为开头的记录

select * from t_user where user_name like '45%';

在这里插入图片描述

当 like 后面的内容 %写在左侧开头和右侧结尾时(‘%45%’),此时查询的是某个字段包含两个%之间的内容的记录

select * from t_user where user_name like '%45%';

在这里插入图片描述

3、or

OR运算符可以实现对多个条件进行同时判断
and 的优先级高于or

select * from t_user where id = 9  or status = 0 and id = 3;

上面这条sql的判断条件是: id=9 或 (status=0 and id=3)

select * from t_user where id = 2   and id = 3 or status = 0;

上面这条sql的判断条件是: (id=2 and id=3)or status=0

4、distinct

distinct 用于对某个字段过滤重复数据
当我执行下面sql去查询t_user表中的user_name时(不加distinct):

select  user_name from t_user ;

在这里插入图片描述
当我执行下面sql去查询t_user表中的user_name时(加distinct)

select distinct user_name from t_user ;

在这里插入图片描述
可以明显看到将重复的yuanhaozhe过滤掉,只保留了一条记录。

5、in 包含

in常用于where表达式中,其作用是查询某个范围内的数据(是用来指定一个值在一个列表或一个子查询中是否存在的运算符),可以代替多个or

举例:

SELECT * FROM `t_class` where user_id in (1,9,10) ORDER BY user_id DESC

这条sql将会查询出t_class表中 user_id = 1 或 user_id =9 或 user_id =10 的
在这里插入图片描述

6、group by 分组

分组查询的原理:先对数据进行分组,在对分组后的数据进行汇总,分组查询通常用于配合聚合函数,达到分类汇总统计信息的目的。而分类汇总的本质实际上就是先将数组进行分组,分组后相同类别的信息会聚在一起,然后通过需求进行计算。
比如:查询出记录中出现的名字,每个名字出现的次数,状态码

select user_name,count(user_name),status from t_user GROUP BY user_name,status

在这里插入图片描述
如果使用group by ,则select中只能出现 group by 后面的字段 或 聚合函数

7、order by

查询结果集通常是按照id排序的,也就是根据主键排序。这也是大部分数据库的做法。如果我们要根据其他条件排序怎么办?可以加上ORDER BY子句。
以这个表为例(没有设置主键):
在这里插入图片描述
按照user_id从低到高进行排序:

SELECT * FROM `t_class` order by user_id

在这里插入图片描述
如果要反过来,按照user_id从高到底排序,我们可以加上DESC表示“倒序”:

SELECT * FROM `t_class` order by user_id DESC

默认的排序规则是ASC:“升序”,即从小到大。ASC可以省略,即ORDER BY score ASC和ORDER BY score效果一样。

8、limit

使用SELECT查询时,如果结果集数据量很大,比如几万行数据,放在一个页面显示的话数据量太大,不如分页显示,每次显示100条。
要实现分页功能,实际上就是从结果集中显示第1~ 100条记录作为第1页,显示第101~200条记录作为第2页,以此类推。
因此,分页实际上就是从结果集中“截取”出第M~N条记录。这个查询可以通过LIMIT OFFSET 子句实现。我们先把所有信息按照user_id从高到低进行排序:

SELECT * FROM `t_class` order by user_id DESC

在这里插入图片描述

现在,我们把结果集分页,每页2条记录。要获取第2页的记录,可以使用LIMIT 2 OFFSET 2:

SELECT * FROM `t_class` order by user_id DESC LIMIT 2 OFFSET 2

在这里插入图片描述

上述查询LIMIT 2 OFFSET 2表示,对结果集从2号记录开始(跳过前两条),最多取2条。注意SQL记录集的索引从0开始。

可见,分页查询的关键在于,首先要确定每页需要显示的结果数量pageSize(这里是2),然后根据当前页的索引pageIndex(从1开始),确定LIMIT和OFFSET应该设定的值:

  1. LIMIT总是设定为pageSize;
  2. OFFSET计算公式为pageSize * (pageIndex - 1)。

相关文章:

Mysql中常用到的查询关键字

文章目录 1、join2、like 模糊查询3、or4、distinct5、in 包含6、group by 分组7、order by8、limit 1、join MySQL 的连接主要分为内连接和外连接。 什么是内连接: 取得两张表中满足存在连接匹配关系的记录。 什么是外连接: 不只取得两张表中满足存在…...

【ROS】ROS1工具详解

1、roscore 1.1 说明 运行roscore,将会启动三个功能:ROS Master主节点、ROS参数服务器和记录ROS日志输出节点 1.2 用法 roscore [可选参数]1.3 参数详解 -h, --help,帮助信息 -p PORT, --portPORT,指定端口号,默认…...

论Plant Simulation中的Init的使用及调用顺序

往期内容回顾: 一文搞懂Plant Simulation中的Rotation设置 Plant Simulation与python之Socket通信的数据交互问题 自主移动机器人模型制作 写在开头 在阅读之前,可以先尝试回答一下如下问题,如果都能答得上来,这篇文章就可以忽略不看了。 Q1:对于主模型中包括多…...

nginx实现正向代理

1.下载nginx nginx: download 选择自己需要的版版本下载下来 2.解压文件修改ngixn.conf配置文件 events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout…...

【spark】

实验5 Spark Structured Streaming编程实践 实验内容和要求 0.结构化流练习任务 0.1 讲义文件源-json数据任务。按照讲义中json数据的生成及分析,复现实验,并适当分析。 (1)创建程序生成JSON格式的File源测试数据 import osimp…...

ADO.NET 面试题

这里写自定义目录标题 什么是 ADO.NET?ADO.NET 的主要特点有哪些?ADO.NET 的四个组件分别是什么?什么是 Connection 串?Connection 的状态有哪些?什么是 DataAdapter?DataAdapter 的作用是什么?…...

第三篇、基于Arduino uno,用oled0.96寸屏幕显示dht11温湿度传感器的温度和湿度信息——结果导向

0、结果 说明:先来看看拍摄的显示结果,如果是你想要的,可以接着往下看。 1、外观 说明:本次使用的oled是0.96寸的,别的规格的屏幕不一定适用本教程,一般而言有显示白色、蓝色和蓝黄一起显示的&#xff0…...

什么是npu算力盒子,算力是越大越好吗?

一、什么是npu算力盒子?该怎么选? NPU(神经处理单元)算力盒子是一种专门用于进行人工智能计算的硬件设备,其中集成了高性能的NPU芯片。NPU是一种针对深度学习任务进行优化的处理器,具备高度并行计算和低功…...

后端返回文件流时,前端如何处理并成功下载流文件以及解决下载后打开显示不支持此文件格式

一、文件和流的关系 文件(File)和流(Stream)是既有区别又有联系的两个概念。 文件 是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。 存储介质:文件是指在各种存储介质上(如硬盘、可…...

Ansible的脚本-playbook 剧本

目录 1.剧本(playbook) 1.playbook介绍 2. playbooks 的组成 3.案例:编写httpd的playbook 4.定义、引用变量 5.指定远程主机sudo切换用户 6.when条件判断 7.迭代 2.playbook的模块 1.Templates 模块 2.tags 模块 3.Roles 模块 1.…...

python lambda表达式表达式详解及应用

目录 Python Lambda表达式的优势 Lambda表达式用法 1. 当作参数传递 2. 使用Lambda表达式过滤列表 3. 使用Lambda表达式计算数学表达式 4. 使用Lambda表达式作为返回值 5. 实现匿名回调函数 Lambda表达式注意事项 总结 Lambda表达式是Python中的一种匿名函数&#xff…...

Windows 10计算机性能优化:让你的电脑更流畅

Windows 10是目前最流行的操作系统之一,但在长期使用过程中,可能会出现一些性能方面的问题。本文将为你介绍如何选择合适的Windows 10版本,并提供一些优化技巧,使你的电脑性能更加流畅。此外,还将特别关注游戏用户和工…...

SpringMVC底层原理源码解析

SpringMVC的作用毋庸置疑&#xff0c;虽然我们现在都是用SpringBoot&#xff0c;但是SpringBoot中仍然是在使用SpringMVC来处理请求。 我们在使用SpringMVC时&#xff0c;传统的方式是通过定义web.xml&#xff0c;比如&#xff1a; <web-app><servlet><servle…...

【CSS系列】第八章 · CSS浮动

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…...

janus videoroom 对接freeswitch conference 篇1

janus videoroom 实时性非常好&#xff0c; freeswitch conference的功能也很多 &#xff0c;有没办法集成到一块呢 让很多sip 视频终端也能显示到videoroom 里面&#xff0c; 实现方式要不两种 1.改源码实现 &#xff08;本文忽略 难度高&#xff09; 2.找一个videoroom管…...

cs109-energy+哈佛大学能源探索项目 Part-2.1(Data Wrangling)

博主前期相关的博客见下&#xff1a; cs109-energy哈佛大学能源探索项目 Part-1&#xff08;项目背景&#xff09; 这次主要讲数据的整理。 Data Wrangling 数据整理 在哈佛的一些大型建筑中&#xff0c;有三种类型的能源消耗&#xff0c;电力&#xff0c;冷冻水和蒸汽。 冷冻…...

__101对称二叉树------进阶:你可以运用递归和迭代两种方法解决这个问题吗?---本题还没用【迭代】去实现

101对称二叉树 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 101. 对称二叉树 https://leetcode.cn/problems/symmetric-tree/ 完成情况&#xff1a; 解题思路&#xff1a; 递归的难点在于&#xff1a;找到可以…...

怎么取消只读模式?硬盘进入只读模式怎么办?

案例&#xff1a;电脑磁盘数据不能修改怎么办&#xff1f; 【今天工作的时候&#xff0c;我想把最近的更新的资料同步到电脑上的工作磁盘&#xff0c;但是发现我无法进行此操作&#xff0c;也不能对磁盘里的数据进行改动。有没有小伙伴知道这是怎么一回事&#xff1f;】 在使…...

如何使用Java生成Web项目验证码

使用Java编写Web项目验证码 验证码是Web开发中常用的一种验证方式,可以防止机器恶意攻击。本文将介绍如何使用Java编写Web项目验证码,包括步骤、示例和测试。 步骤 1. 添加依赖 首先需要在项目中添加以下依赖: <dependency><groupId>com.google.code.kaptc…...

【读书笔记】《亲密关系》

作者&#xff1a;美国的罗兰米勒 刚拿到这本书的时候&#xff0c;就被最后将近100页的参考文献折服了&#xff0c;让我认为这本书极具专业性。 作者使用了14章&#xff0c;从人与人之间是如何相互吸引的&#xff0c;讲到如何相处与沟通&#xff0c;后又讲到如何面对冲突与解决矛…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...