mysql高级sql

一,查询

1.按关键字排序

1.1用 **ORDER BY** 语句来实现排序

- `ORDER BY` 语句用于对查询结果进行排序。可以根据一个或多个字段的值进行升序(ASC)或降序(DESC)排序。

1.2排序可针对一个或多个字段

- 可以指定一个字段或者多个字段进行排序。如果是多个字段,查询结果会首先按第一个字段排序,在第一个字段相同时再按第二个字段排序,依此类推。

1.3**ASC**:升序,默认排序方式

- `ASC` 是升序排序,从小到大排序。如果不指定排序方式,默认使用升序排序。

1.4**DESC**:降序

- `DESC` 是降序排序,从大到小排序。需要在 `ORDER BY` 语句后明确指定。

1.5**ORDER BY**** 的语法结构**:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;

2.按关键字排序操作

创建一个表

CREATE TABLE student_courses (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),score DECIMAL(4, 2),address varchar(20),hobbyid INT
);INSERT INTO student_courses (id, name, score, hobbyid) VALUES
(1, 'Li Ming', 85.5,'beijing', 1),
(2, 'Wang Xiao', 92.0,'shengzheng', 2),
(3, 'Zhang San', 75.0,'shanghai', 1),
(4, 'Li Hua', 91.0,'huangshan' 3),
(5, 'Zhao Lei', 87.0,'nanjing', 2);
(6,'hanmeimei',10,'nanjing',3);
(7,'lilei',11,'nanjing',5);

2.1 按分数排序查询(不加asc默认为升序)

select id,name,score from student_courses order by score;

2.2按分数降序查询

select id,name,score from student_courses order by score desc;

2.3使用where进行条件查询

过滤出南京并且按降序查询

select id,name,score from student_courses where address='nanjing' order by score desc;

2.4使用ORDER BY语句对多个字段排序

ORDER BY 语句可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再按照第二个字段进行排序,ORDER BY 后面跟多个字段时,字段之间使用英文逗号隔开,优先级是按先后顺序而定,但是order by 之后的第一个参数只有在出现相同值时,第二个字段才有意义

(1)查询学生信息先按兴趣id降序排列,相同分数的,id也按降序排列

select id,name,hobbyid from student_courses order by hobbyid desc,ind desc

(2)查询学生信息先按兴趣id降序排列,相同分数的,id按升序排列

select id,name,hobbyid from student_courses order by hobbyid desc,id;

2.5使用区间判断查询(and/or 且和或)

(1)and

select * from student_courses where score >80 and score <=90;

(2)or

select * from student_courses where score >80 or score =10;

2.6嵌套多个条件

select * from student_courses where score >70 or (score >75 and score <90 );

2.7 distinct 查询不重复记录

select distinct hobbyid from student_courses;

2.8对查询结果进行分组

SQL 查询出来的结果,可以对其进行分组,使用 GROUP BY 语句来实现 ,GROUP BY 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。

(1)count

统计hobbyid相同的分组,计算相同hobbyid的个数

select count(name),hobbyid from student_courses group by hobbyid;

结合where语句,筛选分数大于等于80的分组,计算有几个学生

select count(name),hobbyid from student_courses where score >=80 group by hobbyid;

结合order by把计算出的学生个数按升序排列

select count(name),score,hobbyid from student_courses where score >80 group byhobbyid order by  count(name)

2.9限制结果条目(limit重要)

limit 限制输出的结果记录

使用MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录(行)。有时候仅 需要返回第一行或者前几行,此刻就需要用到 LIMIT 子句

(1)查询所有信息只显示前2行记录

select * from student_courses limit 2;

(2)查询所有信息只显示从第4行开始,往后的2行内容

select * from student_courses limit 4,2;

(2)结合order by语句,查询id的大小升序排列显示前2行

select id,name from student_courses order by id desc limit 2;

(3)查询信息只显示最后3行按降序显示出来(重要)

select id,name from student_courses order by id desc limit 3;

(4)查询并显示出第一行开始的后两行

SELECT * FROM student_courses LIMIT 2 OFFSET 1;

2.10设置别名

别名的作用和特点

简化查询语句:当表名或列名较长时,使用别名可以减少代码长度,使查询语句更简洁、易于书写和维护。

增强可读性:通过使用别名,尤其是在涉及多个表的复杂查询中,能够使查询语句更加清晰直观,便于理解。

临时性:别名仅在当前查询中有效,它不会改变数据库中实际的表名或列名。换句话说,别名是查询语句执行过程中的临时名称,用于替代表或列的原始名称。

使用别名的语法,列的别名:使用AS关键字为列设置别名。别名可以是任何合法的标识符,并且可以用于后续的查询中。

别名使用场景

1.对复杂的表进行查询的时候,别名可以缩短查询语句的长度

2.多表相连查询的时候(通俗易懂、减短sql语句)

3.可以作为连接语句的操作符,可以将一个表的查询的结果插入新表中

格式

对于列的别名:SELECT column_name AS alias_name FROM table_name;
对于表的别名:SELECT column_name(s) FROM table_name AS alias_name;

(1)统计表内的字段有多少个,以数字形式显示(不加as也可以)

select count(*) as 总行数 from student_courses;

(2)将查询出的结果插入新表中

mysql> create table cheshi01 as select * from student_courses;

create table cheshi02 select * from student_courses;

create table cheshi03 as select * from student_courses where score >=70;

as创建了一个新表并定义表结构,插入表数据(与student_courses表相同)

但是”约束“没有被完全”复制“过来

如果原表设置了主键,附表的default字段会默认设置一个0

(3)使用别名查询

select name as 姓名,score as 分数,address as 地址 from student_courses;()

select x.name as 姓名,x.score as 分数,x.address as 地址 from student_courses as x;

2.11通配符

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

通配符通常都是与LIKE使用的,并协同 WHERE 子句共同来完成查询任务。

常用的通配符(重要)

% 百分号表示零个,一个或多个字符

_ 下划线表示单个字符

(1)查询c开头的

select id,name from student_courses where name like 'z%';

(2)查询l开头和i结尾的

select id,name from student_courses where name like 'l___i';

(3) 查询中间是g的

select id,name from student_courses where name like '%n%';

(4)查询以o结尾的

select id,name from student_courses where name like '%o';

(5)查询以开头中间有的

select id,name from student_courses where name like 'h%e%';
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b65c14a98331410ea8ba45e943a21018.png)
未完待续

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

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

相关文章

终于有人把数据中台讲明白了

在大数据发展的黄金期&#xff0c;几乎所有的高科技企业都在思考一个问题&#xff1a;海量数据作为大多数企业发展不可避免的一个趋势之后&#xff0c;企业该怎么去应用这部分数据资产&#xff0c;会对其商业产生什么影响&#xff0c;如何使数据对企业产生正面的推动而不是成为…

mysql高级知识之集群

一、安装 源码编译MySQL,若需要MySQLtar包可私信我 #创建数据目录 mkdir /data/mysql -p#安装相关依赖 yum install libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm yum install cmake gcc-c++ openssl-devel ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen…

安防视频综合管理系统EasyCVR视频汇聚平台集群部署出现状态不同步的情况是什么原因?

随着视频监控技术的快速发展&#xff0c;各类视频资源的整合、管理与分发成为了安防行业的重要挑战。视频综合管理系统EasyCVR视频汇聚平台通过集群部署&#xff0c;实现了视频资源的高效整合与管理。集群部署不仅能够提升系统的处理能力和稳定性&#xff0c;还能有效避免单点故…

JVM面试(四)类加载器和双亲委派机制

什么是类加载器&#xff1f; 简单来说的话&#xff0c;是用于实现“类加载动作”的加载器 “通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现&#xff0c;以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器…

Ollama拉起本地模型以及rag系统部署。

什么是 Ollama &#xff1f; Ollama 是一个简明易用的本地大模型运行框架。能在本地启动并运行 Llama、qwen、Gemma 及其他大语言模型&#xff0c;没有GPU资源照样可以拉起模型&#xff0c;和LocalAI 比较类似&#xff0c;但是加载模型更容易。 1.安装 安装后运行&#xff0c…

解剖学上合理的分割:通过先验变形显式保持拓扑结构|文献速递--基于深度学习的医学影像病灶分割

Title 题目 Anatomically plausible segmentations: Explicitly preserving topology through prior deformations 解剖学上合理的分割&#xff1a;通过先验变形显式保持拓扑结构 01 文献速递介绍 进行环向应变或壁厚度的计算&#xff0c;这些测量通常用于诊断肥厚性心肌病…

Vue前端路由详解——以Ruoyi框架为案例学习

Vue路由 Vue路由详解_vue 页面路由-CSDN博客 路由模式 Vue 的路由模式&#xff1a;hash 模式和 history 模式的区别_vue路由history和hash的区别-CSDN博客 URL格式&#xff1a; Hash模式&#xff1a;URL中包含#号&#xff0c;用于区分页面部分&#xff0c;实际请求的页面地址…

【深度学习与NLP】——词嵌入Embedding技术

目录 1.词嵌入的作用 2.嵌入矩阵的计算 3.Embedding层的代码实验 词嵌入&#xff08;Embedding&#xff09;技术是一种将词汇映射到低维连续向量空间的方法。将离散的单词数据处理成连续且固定长度的向量&#xff0c;使模型可以学习和处理语义信息。 假设需要将["Are&…

【MySQL00】【 杂七杂八】

文章目录 一、前言二、MySQL 文件1. 参数文件2. 日志文件3. 套接字文件4. pid 文件5. 表结构定义文件6. InnoDB 存储引擎文件 二、BTree 索引排序三、InnoDB 关键特性1. 插入缓冲1.1 Insert Buffer 和 Change Buffer1.1 缓冲合并 2. 两次写2. 自适应哈希索引3. 异步IO4. 刷新邻…

关于武汉芯景科技有限公司的A/D转换芯片XJ3021开发指南(兼容MCP3021)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、时序&#xff08;IIC通信&#xff09; 四、程序代码 XJ3021.C /** XJ3021.c** Created on: 2024年8月23日* Author: Administrator*/ #include "softiic.h" #include "XJ3021.h" #inc…

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 09部署OSPF

本章的目的是帮助网络工程师确定网络的理想 OSPF 配置。本章将回答以下问题 应何时在数据中使用OSPF ?配置 OSPF 的关键设计原则是什么?OSPFv2 和 OSPFv3 之间有什么区别&#xff0c;应如何使用?如何在路由协议栈中配置 OSPF ?如何在服务器上配置 OSPF&#xff0c;例如为容…

【MySQL08】【死锁】

文章目录 一、前言二、查看事务加锁情况1. 使用 information_schema 数据库中表获取锁信息1.1 INNODB_TRX1.2 INNODB_LOCKS1.3 INNODB_LOCK_WAITS 2. 使用 SHOW ENGIN INNODB STATUS 获取锁信息 三、死锁四、参考内容 一、前言 最近在读《MySQL 是怎样运行的》、《MySQL技术内…

Android之Handler的post方法和sendMessage的区别

目录 post 方法方法特点 sendMessage 方法方法特点 使用场景区别总结 Handler 类在 Android 中用于在不同线程之间传递消息和执行代码。它提供了两种主要的方式来执行任务&#xff1a;通过 post 方法和通过 sendMessage 方法。这两种方法有不同的使用场景和特点。 post 方法 方…

浅谈架构实战

目录 背景 1 架构演变 2 如何实现高层的复用 2 中台产生案例 3 技术架构的核心要点 4 技术架构的高可用案例 背景 业务架构、数据架构、应用架构和技术架构它们是相互关联和相互支持的&#xff0c;共同构成了企业的总体架构&#xff0c;业务架构是源头&#xff0c;然后才…

自动生成对话视频!如何使用Captions的AI视频生成与编辑API工具?

Captions公司最近发布了一套AI驱动的视频生成和编辑API工具&#xff0c;为创作者和开发者提供了一个强大的视频创作生态系统。这个系统包含AI Creator、AI Twin、AI Edit、和AI Translate四大核心功能&#xff0c;每个工具都针对不同的创作需求进行优化。下面我们就一起来详细测…

第九周:机器学习

目录 摘要 Abstract 一、RNN 1、引入 2、RNN的分类 二、LSTM 1、基本结构 2、具体步骤 3、举例说明 4、原理理解 总结 摘要 本周主要围绕RNN进行探讨&#xff0c;从为什么需要这类”循环网络“入手&#xff0c;提到了”slot filling“技术&#xff0c;接着又对R…

AT3340:支持BDS/GPS双模授时板数据手册

AT3340采用ATGM331C-5T31授时模块&#xff0c;是高授时精度的BDS/GPS双模接收机板卡&#xff0c;包含32个跟踪通道&#xff0c;支持GPS和BDS的单系统授时定位和双系统联合授时定位&#xff0c;可以通过上位机命令切换。其中的射频前端芯片和基带芯片全部由杭州中科微独立研发&a…

RAG数据集自动构造探索, 附prompt

从文档中手动创建数百个 QA&#xff08;问题-上下文-答案&#xff09;样本可能非常耗时且劳动密集。此外&#xff0c;人工生成的问题可能难以达到全面评估所需的复杂程度&#xff0c;最终影响评估的质量。通过使用合成数据生成&#xff0c;开发人员在数据聚合过程中的时间可以减…

嵌入式Linux:常见信号的默认行为

信号是一种软件中断&#xff0c;用于通知进程发生了某种异步事件。信号可以由用户、其他进程或操作系统内核产生。进程可以选择捕获并处理这些信号&#xff0c;或者忽略它们&#xff0c;让系统执行默认操作。 不可靠信号&#xff08;非实时信号&#xff09;&#xff1a;编号为 …