mysql高级sql

news2024/11/13 9:27:54

一,查询

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.coloradmin.cn/o/2102316.html

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

相关文章

【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况(2)

本示例是通过prometheus的node exporter收集主机的信息&#xff0c;然后在grafana的dashborad进行展示。本示例使用到的组件均是最新的&#xff0c;下文中会有具体版本说明&#xff0c;linux环境是centos。本示例分为四个部分&#xff0c;即prometheus、grafana、node exporter…

W25Q32驱动 基于HAL库的SPI

环境 芯片:STM32F103ZET6 库&#xff1a;来自HAL的STM32F1XX.H 原理图 cubeMX配置 W25Q32.h // // Created by seven on 2024/9/2. //#ifndef SPI_W25Q32_H #define SPI_W25Q32_H #include "spi.h"/*** 初始化W25Q32闪存芯片*/ void W25Q32_Init(void);/*** 停止…

P7492 [传智杯 #3 决赛] 序列

*原题链接* 一道类似势能线段树的题&#xff0c;区间按位或上k&#xff0c;不满足区间可合并的性质&#xff0c;只能暴力的单点修改。 但是考虑按位或的性质&#xff0c;一个数或上另一个数&#xff0c;只会变大或不变&#xff0c;如果我们能找到一个方法&#xff0c;能够判定…

Gitlab-ce upgrade 16.0.1 to 17.3.1【Gitlab-ce 16.0.1 升级 17.3.1】

文章目录 背景gitlab-ce 16.0.1 升级 17.3.1 失败gitlab-ce 16.0.1 升级 16.11.8 失败gitlab-ce 16.0.1 升级 16.7.9 失败gitlab-ce 16.0.1 升级 16.3.8 成功gitlab-ce 16.3.8 升级 16.11.8 失败gitlab-ce 16.3.8 升级 16.7.9 成功gitlab-ce 16.7.8 升级 16.11.8 成功gitlab-ce…

牛客(数字统计)

[NOIP2010]数字统计 题目题解(77)讨论(41)排行面经 new 时间限制&#xff1a;1秒 空间限制&#xff1a;128M 知识点NOIP复赛字符串 校招时部分企业笔试将禁止编程题跳出页面&#xff0c;为提前适应&#xff0c;练习时请使用在线自测&#xff0c;而非本地IDE。 描述 请统计…

【Day08】

目录 MySQL-多表查询-概述 MySQL-多表查询-内连接 MySQL-多表查询-外连接 MySQL-多表查询-[标量、列]子查询 MySQL-多表查询-[行、表]子查询 MySQL-多表查询-案例 MySQL-事务-介绍与操作 MySQL-事务-四大特性 MySQL-索引-介绍 MySQL-索引-结构 MySQL-索引-操作语法 …

【Qt】消息对话框 QMessageBox

消息对话框 QMessageBox QMessageBox 用于显示一个消息给用户&#xff0c;&#xff0c;并且让用户进行一个简单的选择。 消息对话框是应⽤程序中最常⽤的界⾯元素。消息对话框主要⽤于为⽤⼾提⽰重要信息&#xff0c;强制⽤⼾进⾏选择操作。 例子&#xff1a;创建一个消息对话…

【Datawhale X 李宏毅苹果书 AI夏令营】《深度学习详解》Task3 打卡

文章目录 前言学习目标一、优化策略二、模型偏差三、优化问题三、过拟合增加训练集给模型一些限制 四、交叉验证五、不匹配总结 前言 本文是【Datawhale X 李宏毅苹果书 AI夏令营】的Task3学习笔记打卡。 学习目标 李宏毅老师对应视频课程&#xff1a;https://www.bilibili.…

JMeter 安装使用

JMeter 安装使用 a.安装 下载链接:Apache JMeter - Download Apache JMeter 环境变量 打开 cmd 输入 jmeter&#xff0c;即可启动 b.使用 http请求接口 300 个线程设置 1 s 的预热时间 右键 start

B端:工作台页面放什么?不知道,这里告诉你10个常见内容。

工作台是B端系统的核心页面&#xff0c;也是最常用的页面&#xff0c;该页面的上通常放哪些内容了&#xff0c;是中说纷纭&#xff0c;本文把常放内容给大家列举下。 B端工作台页面是专门为企业用户设计的工作台&#xff0c;通常需要包含一些与企业工作相关的功能和信息。以下…

传知代码-让机器感受你的情绪!(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 让计算机理解你的情绪&#xff01; 随着近年来社交媒体的快速增长&#xff0c;社交媒体上的用户生成内容&#xff08;例如视频&#xff09;的量大幅增加。不同模态的自动情感分析有利于人机交互&#xff0c;并吸…

跟我一起学FPGA (二) 语法讲解

本章讲解 1 、Verilog 概述和基础知识&#xff1b; 2 、Verilog 程序框架和高级知识点&#xff1b; 3 、Verilog 编程规范。 1.Verilog 概述和基础知识 Verilog 是一种硬件描述语言&#xff0c;以文本形式来描述数字系统硬件的结构和行为的语言&#xff0c;用它可以表示逻辑电…

Vivado2018.3版本_将bit文件转化为bin文件

Vivado2018.3版本_将bit文件转化为bin文件 1、配置转换文件 2、下载到flash中

用 count(*)哪个存储引擎会更快?

InnoDB 引擎执行 count 函数的时候&#xff0c;需要通过遍历的方式来统计记录个数&#xff0c;而 MyISAM 引擎执行 count 函数只需要 0(1 )复杂度&#xff0c;这是因为每张 MyISAM 的数据表都有一个 meta 信息有存储了row_count值&#xff0c;由表级锁保证一致性&#xff0c;所…

[数据集][目标检测]鲜花检测数据集VOC+YOLO格式25215张106类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;25215 标注数量(xml文件个数)&#xff1a;25215 标注数量(txt文件个数)&#xff1a;25215 标…

给P人一点小小震撼!铁威马UI全新设计!更友好更美观~

开学了&#xff0c;小马居然发现有学校竟然玩起了新花样&#xff0c;通过MBTI来分宿舍&#xff0c;这脑洞大开的创意简直让人直呼内行&#xff01; 你是P人还是J人&#xff1f; 在MBTI人格分类中&#xff0c;J人喜欢条理清晰的计划&#xff0c;而P人则倾向于随性所欲。 想象…

第十五届北京青年相声节宣传片发布

第十五届北京青年相声节宣传片&#xff0c;围绕相声演员的四个基本功&#xff1a;说、学、逗、唱&#xff0c;搭建四个生活场景&#xff0c;编创四个微短故事&#xff0c;演绎四组人物关系&#xff0c;向大众普及“相声就在我们身边”的深刻内涵。

如何轻松的步入编程的第一课?相信你就是那个伟大的天才!

第一次编程&#xff0c;会让初学者感到既兴奋又有些紧张。以下是一些建议 明确学习目标&#xff1a;首先&#xff0c;思考你为什么想学编程。是为了职业发展、兴趣爱好、还是仅仅想了解新技术&#xff1f;明确的目标能帮你保持学习的动力。选择合适的编程语言&#xff1a;对于…

【持续更新】Solid Explorer premium2.8.48.200291文件管理器最新免费高级解锁版

Solid Explorer文件管理器高级版解锁&#xff0c;拥有诸多增强功能和额外特性&#xff0c;使其区别于标准版。 ▨ 解锁版主要特点 • 解锁高级功能&#xff1a;无限制地访问所有高级功能 • 无广告体验&#xff1a;享受无任何烦人广告的流畅用户界面 • 增强安全性&#xff1a…

软件性能测试重要性简析,好用的性能测试工具有哪些?

软件性能测试是软件开发和维护过程中一个至关重要的环节。通过性能测试&#xff0c;企业能够评估软件在不同负载下的表现&#xff0c;预测其在真实环境中的表现&#xff0c;以确保用户能获得优秀的使用体验。 软件性能测试可以被定义为一种评估软件系统的快速性、响应性、稳定…