MySQL高阶SQL语句
文章目录
- MySQL高阶SQL语句
- MySQL常用查询
- 1、按关键字排序
- 1.1 语法
- 1.2 ASC和DESC
- 1.3 对数据表中信息进行排序
- 1.3.1 普通排序
- 1.3.2 结合where进行条件过滤
- 1.3.3 对多个字段进行排序
- 2、区间判断及查询不重复记录
- 2.1 and/or —— 且/或
- 2.1.1 普通查询
- 2.1.2 嵌套/多条件查询
- 2.2 distinct 查询不重复记录
- 3、对结果进行分组
- 3.1 普通分组
- 3.2 结合where语句分组
- 3.3 结合order by 语句分组排序
- 3.4 其他分组记录
- 4、限制结果条目
- 4.1 普通限制查询
- 4.2 结合order by 语句,限制查询并排序
- 5、设置别名
- 5.1 设置别名—alias
- 5.2 做为连接语句的操作符,创建新表
- 5.2.1 创建新表,将之前表中的记录复制到新表中
- 5.2.2 结合where语句,使用as创建新表
- 5.3 使用场景
- 6、通配符
- 6.1 查询name字段以x开头的记录
- 6.2 查询address字段以n结尾的记录
- 6.3 查询address字段hu__n中有两个字符的记录
- 6.4 查询address字段中包含g的记录
- 6.5 查询address字段qing后面3个字符的记录
- 6.6 通配符%与_可以结合使用
MySQL高阶SQL语句
MySQL常用查询
- 对 MSQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。例如只取 10条数据、对查询结果进行排序或分组等等
1、按关键字排序
- 类比于windows 任务管理器
- 使用 select 语句可以将需要的数据从 mysql 数据库中查询出来,如果对查询的结果进行排序,可以使用 order by 语句来对语句实现排序,并最终将排序后的结果返回给用户。这个语句的排序不光可以针对某一个字段,也可以针对多个字段。
1.1 语法
SELECT columnl,column2,.., FRoM table name ORDER BY columnl, column2, ...
1.2 ASC和DESC
ASC: 是按升序进行排序的,是默认的排序方式,即ASC可以省略。select 语句中如果没有指定具体的排序方式,则默认按 ASC方式进行排序。
DESC: 是按降序方式进行排列。当然 order by 前面也可以使用 where 语句对查询结果进一步过滤。
- 创建数据库数据表
create database xi;
#创建数据库use xi;
#切换到数据库create table ww(id int(4),name varchar(10) primary key not null,score decimal(5,2),address varchar(40),hobbid int(8));
#创建表desc ww;
#查看表的结构信息insert into ww values(1,'aaaa',80,'beijing',2);
insert into ww values(2,'bbbb',49,'miandian',2);
insert into ww values(3,'cccc',90,'qingdao',4);
insert into ww values(4,'dddd',60,'shanghai',5);
insert into ww values(5,'yyyy',98,'shanghai',3);
insert into ww values(6,'nnnn',30,'hangzhou',3);
insert into ww values(7,'mmmm',11,'nanjing',5);
insert into ww values(8,'xxxx',88,'hunan',5);
#表中插入数据select * from ww;
#查看数据表信息
1.3 对数据表中信息进行排序
1.3.1 普通排序
select name,score from ww order by score;
#选择name,score字段,按分数score进行排序,默认是升序select name,score from ww order by score desc;
#选择name,score字段,按分数score进行排序,降序
1.3.2 结合where进行条件过滤
- order by 结合where语句进行条件过滤
select name,score from ww where address='shanghai' order by score desc;
#选择name,score字段,对地址是shanghai的score分数进行降序排序
1.3.3 对多个字段进行排序
- order by 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再按照第二个字段进行排序,字段之间使用英文逗号隔开,优先级是按先后顺序而定
select id,name,hobbid from ww order by hobbid desc,id desc;
#选择id,name,hobbid字段,先按hobbid进行降序排序,如果一致,则按id进行降序排序select id,name,hobbid from ww order by hobbid desc,id;
#选择id,name,hobbid字段,先按hobbid进行降序排序,如果一致,则按id进行升序排序
2、区间判断及查询不重复记录
2.1 and/or —— 且/或
2.1.1 普通查询
select * from ww where score > 70 and score <= 90;
#查看表中score大于60并且小于等于90的记录select * from ww where score < 60 or score > 90;
#查看表中score大于60或者小于等于90的记录
2.1.2 嵌套/多条件查询
select * from ww where score > 70 or (score > 80 and score < 90);
#查看表中score大于80或者(大于30并且小于70)的记录,括号里面的内容执行完是一个准确的数字
2.2 distinct 查询不重复记录
- 格式
select distinct 字段 from 表名;
select distinct hobbid from ww;
#去掉表中hobbid字段重复的部分
3、对结果进行分组
-
通过 sql 查询出来的结果,还可以对其进行分组,使用 group by 语句来实现 ,group by 通常都是结合聚合函数一起使用的
-
常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),group by 分组的时候可以按一个或多个字段对结果进行分组处理。
3.1 普通分组
- 语法格式
select count(字段1),字段2 from 表名 group by 字段2;
select count(name),hobbid from ww group by hobbid;
#以hobbid字段的数进行分组,基于name计数,统计出相同hobbid的个数
3.2 结合where语句分组
select count(name),hobbid from ww where score >= 60 group by hobbid;
#以hobbid字段的数进行分组,基于name计数,统计出score大于等于60的相同hobbid的个数
3.3 结合order by 语句分组排序
select count(name),score,hobbid from ww where score >= 80 group by hobbid order by score desc;
#以hobbid字段的数进行分组,基于name计数,统计出score大于等于80的相同hobbid的个数,并按score降序排列
3.4 其他分组记录
select count(*) from ww;
#统计表中有多少行记录(此方法会进行全表扫描)select count(name) from ww;
#统计表中有多少行记录(使用字段查询,速度会比count(*)快,因为此方法只扫描name字段列)select sum(score) from ww;
#统计score的总和select max(score) from ww;
#查询表中score最大数select min(score) from ww;
#查询表中score最小数select avg(score) from ww;
#查询表中score平均数
4、限制结果条目
-
在使用mysql select 语句进行查询时,结果返回的是所有匹配的记录(行)。有时候仅需要返回第一行或者前几行,这时候就需要用到 limit 语句
-
limit 的第一个参数是位置偏移量(可选参数),是设置 mysql 从哪一行开始显示。 如果不设定第一个参数,将会从表中的第一条记录开始显示。需要注意的是,第一条记录的 位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。
4.1 普通限制查询
select * from ww limit 4;
#查询所有数据显示前5行(位置偏移量从0开始,以此类推,0表示字段行)select * from ww limit 6,1;
#查询所有数据从第7行开始,显示后面1行内容
4.2 结合order by 语句,限制查询并排序
select * from ww order by id limit 4;
#查询表中数据,按id字段进行升序排序,只显示前5行select * from ww order by id desc limit 3;
#显示表的最后3行内容
5、设置别名
- 在 mysql查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性
- 其中 AS 语句是可选的。AS 之后的别名,主要是为表内的列或者表提供临时的名称,在查询过程中使用,库内实际的表名或字段名是不会被改变的
5.1 设置别名—alias
select name as 姓名,score 成绩,address 地址 from ww;
#设置name,score,address别名,alias是临时的,不会改变表的结构select w.name as 姓名,w.score 成绩,w.address 地址 from ww as w;
#多表同字段会显示区别select sum(score) 总分数 from ww;
#查询表中score的总和
5.2 做为连接语句的操作符,创建新表
- as创建一个新表并定义表结构,插入表数据(与原表相同)
- 但是”约束“没有被完全”复制“过来,如果原表设置了主键,那么附表的:default字段会默认设置一个0
5.2.1 创建新表,将之前表中的记录复制到新表中
create table xx01 as select * from ww;
#复制ww表信息,生成新的数据表xx01select * from xx01;
#查看数据表信息
5.2.2 结合where语句,使用as创建新表
create table xx02 as select * from ww where score >= 80;
#筛选ww表中score大于等于80的分数信息,生成新的数据表xx02
- as会复制原表的表结构和数据,但是约束条件不会被复制,比如原表设置了主键,但新表中不会有主键
5.3 使用场景
- 对复杂的表进行查询的时候,别名可以缩短查询语句的长度
- 多表相连查询的时候(通俗易懂、减短sql语句)
6、通配符
-
通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来
-
通配符主要跟like一起使用,并协同where语句共同完成查询任务
%:表示零个、一个或者多个字符_:表示单个字符
6.1 查询name字段以x开头的记录
select id,name from ww where name like 'x%';
#查询表中name字段以x开头的记录
6.2 查询address字段以n结尾的记录
select * from ww where address like '%n';
#查询表中address字段以n结尾的记录
6.3 查询address字段hu__n中有两个字符的记录
- 常用于模糊查询
select * from ww where address like 'hu__n';
#查询表中address字段hu__n中有两个字符的记录
6.4 查询address字段中包含g的记录
select * from ww where address like '%g%';
#查询表中address字段中包含g的记录
6.5 查询address字段qing后面3个字符的记录
select * from ww where address like 'qing___';
#查询表中address字段qing后面3个字符的记录
6.6 通配符%与_可以结合使用
select * from ww where address like 'h%_';
#查询表中address字段以“h”开头的记录
相关文章:

MySQL高阶SQL语句
文章目录 MySQL高阶SQL语句MySQL常用查询1、按关键字排序1.1 语法1.2 ASC和DESC1.3 对数据表中信息进行排序1.3.1 普通排序1.3.2 结合where进行条件过滤1.3.3 对多个字段进行排序 2、区间判断及查询不重复记录2.1 and/or —— 且/或2.1.1 普通查询2.1.2 嵌套/多条件查询 2.2 di…...

聊聊CSS
css 的介绍 学习目标 能够知道css的作用 1. css 的定义 css(Cascading Style Sheet)层叠样式表,它是用来美化页面的一种语言。 没有使用css的效果图 使用css的效果图 2. css 的作用 美化界面, 比如: 设置标签文字大小、颜色、字体加粗等样式。 控制页面布局, 比如…...

C语言 青蛙跳台阶问题
目录 编辑 1.问题描述 2.问题分析 3.全部代码 4.结语 1.问题描述 一只青蛙可以一次跳一级台阶,也可以一次跳两级台阶,如果青蛙要跳上n级台阶有多少种跳法? 2.问题分析 当台阶只有一级时,只能跳一级,所以只有一…...

【Django开发】前后端分离美多商城项目第3篇:用户部分,1. 后端接口设计:【附代码文档】
美多商城项目4.0文档完整教程(附代码资料)主要内容讲述:美多商城,项目准备1.B2B–企业对企业,2.C2C–个人对个人,3.B2C–企业对个人,4.C2B–个人对企业。项目准备,配置1. 修改settings/dev.py 文件中的路径信息,2. INS…...
DHCP snooping、DHCP安全及威胁防范
DHCP snooping、DHCP安全及威胁防范 [SW1]display dhcp snooping user-bind all,查看DHCP snooping表项。 DHCP snooping: 表项是通过服务器发送给客户端的ACK报文生成的。 只能在交换机上开启,路由器不支持,并且建议在接入交…...

用eclipse创建Web项目,通过Servlet实现Web访问的功能。
要使用Eclipse和Tomcat 10创建一个简单的Web项目,并通过Servlet实现Web访问功能,你需要遵循以下详细步骤: 1. 安装和配置Eclipse和Tomcat 10 确保你已经安装了Eclipse IDE for Java EE Developers和Tomcat 10。如果还没有安装,请…...

tools.jar下载 Unable to create schema compiler
网上查找了一堆下载tools.jar的都是忽悠人的,在这我就直接告诉大家,直接在电脑的JDK安装路径下的lib文件下复制就可以了。如果没有的话可以diss我我发给你...
【0278】checkpointer 共享内存(CheckpointerShmem)初始化(3)
0. 关于checkpointer 检查指针是Postgres 9.2的新特性。它处理所有检查点。自上次检查点以来,检查点在经过一定时间后自动分发,并且还可以发出信号来执行请求的检查点。(GUC参数要求每隔这么多WAL段就有一个检查点,这是通过后端在填充WAL段时发出信号来实现的; checkpointer…...

算法打卡day29|贪心算法篇03|Leetcode 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果
算法题 Leetcode 1005.K次取反后最大化的数组和 题目链接:1005.K次取反后最大化的数组和 大佬视频讲解:K次取反后最大化的数组和视频讲解 个人思路 思路清晰,因为是取反当然是取越小的负数越好,那么先按绝对值排序。如果是负数就取反&#…...

【hexo博客6】自定义域名 购买、配置、更新部署
【hexo博客6】自定义域名 购买、配置、更新部署 写在最前面自定义域名购买域名DNS配置Github 配置 更新部署博客 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅&#…...
Django使用pyJwt进行token校验
1.登录成功后返回token,这里使用authenticate进行校验是否存在该用户 def login(request):try:data json.loads(request.body)username data.get(username)password data.get(password)if not all([username, password]):return to_response(status400, msg参数…...
❤️算法笔记❤️-(每日一刷-26、删除有序数组的重复项)
文章目录 题目思路解法 题目 给你一个 非严格递增排列 的数组 nums ,请你** 原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯…...

银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载
银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载 一 系统环境1.1 系统版本信息1.2 通过镜像安装的过程中选择设备类型选择的是lvm简单模式 二 问题描述三 问题修复过程3.1 挂载ISO镜像,引导到字符终端界面3.2 修…...

Mybatis-核心配置文件 / Mybatis增删改查
1. 核心配置文件 1.1. 概述 核心配置文件是MyBatis框架中用于集中定义全局配置信息的XML文件,其内部包含了一系列预设标签,用于设置数据库连接、对象映射、类型处理等关键参数。这些标签遵循特定的排列顺序,尽管并非所有标签都是强制性的&a…...
Nginx(面试)
NGINX 速记问答 Q 什么是Nginx?它的主要特点是什么? A Nginx是一个高性能的开源Web服务器和反向代理服务器。它以高并发、低内存消耗和高稳定性著称。 Q Nginx与Apache Web服务器有什么区别? A Nginx与Apache相比,更适用于处…...

net::ERR_SSL_PROTOCOL_ERROR
小程序 发起网络请求 解决: 如果还没有申请SSL证书,那就直接把https请求改为http 测试可以用 上线不推荐...
BaseDao封装增删改查(超详解)
Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍对数据库中表中的数据进行增改删查询,封装一个工具类(BaseDao)的详细使用以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 &…...
【Python操作基础】——元组
🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享 擅长Python、Matlab、R等主流编程软件 累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…...

光伏投融资该如何计算?
光伏投融资是光伏产业发展过程中的重要环节,其计算涉及到多个方面,包括项目规模、预期收益、成本分析、风险评估等。合理的投融资计算能够为光伏项目的实施提供资金保障,同时也能够降低投资风险,提高项目的经济效益。 首先&#x…...
【更新中】Leetcode中遇到的最短路径算法
dijsktra算法模板: def dijkstra(x):#x表示出发点dis[inf]*n #dis记录从x出发到各个点的最短距离,初始化为infdis[x]0 #源点到自己的距离为0vis[False]*n #检查各个点是否访问过for _ in range(n-1): #检查除了源点的其他n-1个点,更新dis…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
C++ 类基础:封装、继承、多态与多线程模板实现
前言 C 是一门强大的面向对象编程语言,而类(Class)作为其核心特性之一,是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性,包括封装、继承和多态,同时讨论类中的权限控制,并展示如何使用类…...