当前位置: 首页 > 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;后又讲到如何面对冲突与解决矛…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...