MySQL高阶SQL语句

news2024/11/17 22:41:22

文章目录

  • 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;
#查看数据表信息

image-20240326134505689

image-20240326134614186

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进行排序,降序

image-20240326134857258

1.3.2 结合where进行条件过滤
  • order by 结合where语句进行条件过滤
select name,score from ww where address='shanghai' order by score desc;
#选择name,score字段,对地址是shanghai的score分数进行降序排序

image-20240326135415408

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进行升序排序

image-20240326135239556

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的记录

image-20240326140723848

2.1.2 嵌套/多条件查询
select * from ww where score > 70 or (score > 80 and score < 90);
#查看表中score大于80或者(大于30并且小于70)的记录,括号里面的内容执行完是一个准确的数字

image-20240326141148712

2.2 distinct 查询不重复记录
  • 格式
select distinct 字段 from 表名;
select distinct hobbid from ww;
#去掉表中hobbid字段重复的部分

image-20240326141614152

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的个数

image-20240326143010044

3.2 结合where语句分组
select count(name),hobbid from ww where score >= 60 group by hobbid;
#以hobbid字段的数进行分组,基于name计数,统计出score大于等于60的相同hobbid的个数

image-20240326143648931

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降序排列

image-20240326144048435

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平均数

image-20240326144609647

image-20240326144831078

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行内容

image-20240326150447277

4.2 结合order by 语句,限制查询并排序
select * from ww order by id limit 4;
#查询表中数据,按id字段进行升序排序,只显示前5行

select * from ww order by id desc limit 3;
#显示表的最后3行内容

image-20240326151310852

image-20240326151553843

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的总和

image-20240326152042873

image-20240326152748068

5.2 做为连接语句的操作符,创建新表
  • as创建一个新表并定义表结构,插入表数据(与原表相同)
  • 但是”约束“没有被完全”复制“过来,如果原表设置了主键,那么附表的:default字段会默认设置一个0
5.2.1 创建新表,将之前表中的记录复制到新表中
create table xx01 as select * from ww;
#复制ww表信息,生成新的数据表xx01

select * from xx01;
#查看数据表信息

image-20240326152926847

5.2.2 结合where语句,使用as创建新表
create table xx02 as select * from ww where score >= 80;
#筛选ww表中score大于等于80的分数信息,生成新的数据表xx02

image-20240326153247534

  • as会复制原表的表结构和数据,但是约束条件不会被复制,比如原表设置了主键,但新表中不会有主键

image-20240326153644257

5.3 使用场景
  • 对复杂的表进行查询的时候,别名可以缩短查询语句的长度
  • 多表相连查询的时候(通俗易懂、减短sql语句)

6、通配符

  • 通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来

  • 通配符主要跟like一起使用,并协同where语句共同完成查询任务

%:表示零个、一个或者多个字符

_:表示单个字符
6.1 查询name字段以x开头的记录
select id,name from ww where name like 'x%';
#查询表中name字段以x开头的记录

image-20240326155319648

6.2 查询address字段以n结尾的记录
select * from ww where address like '%n';
#查询表中address字段以n结尾的记录

image-20240326155445413

6.3 查询address字段hu__n中有两个字符的记录
  • 常用于模糊查询
select * from ww where address like 'hu__n';
#查询表中address字段hu__n中有两个字符的记录

image-20240326155820465

6.4 查询address字段中包含g的记录
select * from ww where address like '%g%';
#查询表中address字段中包含g的记录

image-20240326160027594

6.5 查询address字段qing后面3个字符的记录
select * from ww where address like 'qing___';
#查询表中address字段qing后面3个字符的记录

image-20240326160202098

6.6 通配符%与_可以结合使用
select * from ww where address like 'h%_';
#查询表中address字段以“h”开头的记录

image-20240326160340510

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

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

相关文章

Java毕业设计-基于springboot开发的校园志愿者管理系统-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、管理员功能3、志愿者功能 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的校园志愿者管理系统…

“AI程序员”Devin大杀四方后,人类程序员开始了他们的反击......

“首个AI程序员”Devin发布后&#xff0c;大有要替代人类程序员的意味。 在当时发布之初&#xff0c;Devin展示了AI自主处理各种程序任务的案例。其中Devin生成“生命游戏”的演示是最让我震惊的。 所谓“生命游戏”&#xff0c;是由英国数学家约翰何顿康威&#xff08;John …

CPU设计实战-外设接口介绍与测试

GPIO 内置寄存器&#xff0c;BASE地址由外设所在设备接口处决定&#xff0c;这样就可以确定每个寄存器的地址&#xff1b; 要使用输出先要使能&#xff0c;要用中断也先要使能&#xff1b; 测试实验-数码管驱动 数码管与GPIO的输出接口连接 编写汇编语言 1.使能输出端口 2…

游戏 AI 反作弊|基于时序行为数据的自瞄外挂检测方案,附方案详情!

游戏AI反作弊&#xff0c;上次跟大家分享了基于时序行为数据的透视外挂检测方案&#xff0c;本次跟大家分享 基于时序行为数据的自瞄外挂检测方案&#xff0c;大家记得点赞收藏&#xff01; 游戏 AI 反作弊|内附解决方案详情&#xff01;-CSDN博客 基于时序行为数据的自瞄外挂检…

【正点原子Linux连载】第二十二章 Linux INPUT子系统实验摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DLRK3568开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第二十…

DNS协议 是什么?说说DNS 完整的查询过程?

一、是什么 DNS&#xff08;Domain Names System&#xff09;&#xff0c;域名系统&#xff0c;是互联网一项服务&#xff0c;是进行域名和与之相对应的 IP 地址进行转换的服务器 简单来讲&#xff0c;DNS相当于一个翻译官&#xff0c;负责将域名翻译成ip地址 IP 地址&#…

【数据分享】1929-2023年全球站点的逐日平均海平面压力(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…

笔记本作为其他主机显示屏(HDMI采集器)

前言&#xff1a; 我打算打笔记本作为显示屏来用&#xff0c;连上工控机&#xff0c;这不是贼方便吗 操作&#xff1a; 一、必需品 HDMI采集器一个 可以去绿联买一个&#xff0c;便宜的就行&#xff0c;我的大概就长这样 win10下载 PotPlayer 软件 下载链接&#xff1a;h…

考了PMP证后工资大概是多少 ?

PMP自1999年引入国内以来&#xff0c;大家对这个证书的了解并不深&#xff0c;每年考试的人数也不多。但随着越来越多的企业认可PMP认证&#xff0c;目前考证的人数不断增加&#xff0c;几乎所有与项目管理相关的人都知道这个证书的重要性。这个证书在招聘要求中出现频率较高&a…

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换

系列文章目录 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记01&#xff1a;赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431&#xff08;HAL库开发&#xff09;——CT117E学习笔记02&#xff1a;开发环境安装 嵌入式|蓝桥杯STM32G431&#xff08;…

【Codesys】-扫描添加失败,手动添加第三方模块,真·DC模式的高速计数模块

欧姆龙耦合器&#xff08;NX-ECC201&#xff09;和高速计数模块&#xff08;NX-EC0132&#xff09;单独使用。扫描设备添加到Codesys中&#xff0c;会报错&#xff0c;无法自动添加。需要手动添加。内容方法如下。如遇到其他第三方耦合器解决方式也同下面一样。记录一下&#x…

三位数组合-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第42讲。 三位数组合&#…

MySql实战--事务到底是隔离的还是不隔离的

第3篇文章和你讲事务隔离级别的时候提到过&#xff0c;如果是可重复读隔离级别&#xff0c;事务T启动的时候会创建一个视图read-view&#xff0c;之后事务T执行期间&#xff0c;即使有其他事务修改了数据&#xff0c;事务T看到的仍然跟在启动时看到的一样。也就是说&#xff0c…

【zip技巧】4种方法,删除ZIP压缩包密码

之前给大家介绍了zip压缩包加密方法&#xff0c;那么zip压缩包取消密码&#xff0c;大家了解多少呢&#xff1f;有密码的情况下&#xff0c;有哪些方法可以取消密码&#xff1f;无密码又该如何取消密码&#xff1f;今天总结四个方法分享给大家。 一、 最原始的方法&#xff0…

“Hands-free AG audio“和“Stereo“的区别

用蓝牙连接耳机后&#xff0c;发现有两个选项 一个音量大&#xff0c;一个音质好&#xff0c;好奇去查了查。 “Hands-free AG audio”&#xff08;自由通话音频&#xff09;是指一种技术或功能&#xff0c;可以使您在进行通话时无需使用手部操作或接触设备。这通常适用于汽车…

Spring:面试八股

文章目录 参考Spring模块CoreContainerAOP 参考 JavaGuide Spring模块 CoreContainer Spring框架的核心模块&#xff0c;主要提供IoC依赖注入功能的支持。内含四个子模块&#xff1a; Core&#xff1a;基本的核心工具类。Beans&#xff1a;提供对bean的创建、配置、管理功能…

智能文档处理技术综述

一、 智能文档处理介绍 智能文档处理&#xff08;Intelligent Document Processing, IDP&#xff09;是利用人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;、计算机视觉&#xff08;CV&#xff09;、自然语言处理&#xff08;NLP&#xff09;等技术…

【WEEK4】 【DAY5】AJAX第二部分【中文版】

2024.3.22 Friday 接上文【WEEK4】 【DAY4】AJAX第一部分【中文版】 目录 8.4.Ajax异步加载数据8.4.1.新建User.java8.4.2.在pom.xml中添加lombok、jackson支持8.4.3.更改tomcat设置8.4.4.修改AjaxController.java8.4.5.新建test2.jsp8.4.5.1.注意&#xff1a;和WEB-INF平级&…

R语言学习——Rstudio软件

R语言免费但有点难上手&#xff0c;是数据挖掘的入门级别语言&#xff0c;拥有顶级的可视化功能。 优点&#xff1a; 1统计分析&#xff08;可以实现各种分析方法&#xff09;和计算&#xff08;有很多函数&#xff09; 2强大的绘图功能 3扩展包多&#xff0c;适合领域多 …

实现UI自动化测试,这5个常见问题你必须知道!

UI自动化测试一直都是如此的令人纠结&#xff0c;自动化测试初学者总是拿它入门&#xff0c;但有些经验丰富者对其又是毁誉参半&#xff0c;抑或抛出分层自动化测试那个经典的“金字塔”&#xff0c;来说明UI自动化测试还是少做为好。 我在从事7年产品研发之后&#xff0c;临危…