当前位置: 首页 > news >正文

MySQL高阶语句(一)

一、常用查询

(增、删、改、查)

        对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。 例如只取 10 条数据、对查询结果进行排序或分组等等

1、按关键字排序

PS:类比于windows 任务管理器

        使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来,如果对查询的结果进行排序,可以使用 ORDER BY 语句来对语句实现排序,并最终将排序后的结果返回给用户。这个语句的排序不光可以针对某一个字段,也可以针对多个字段

order by

语法:

select  字段1,字段2,...  from  表名  order  by  字段1,字段2,...   asc|desc;

        ASC 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略。SELECT 语句中如果没有指定具体的排序方式,则默认按 ASC方式进行排序。(小到大排序

        DESC 是按降序方式进 行排列。当然 ORDER BY 前面也可以使用 WHERE 子句对查询结果进一步过滤。(大到小排序

建立模板表:

create database bank;
use bank;
create table school (id int not null primary key,name varchar(16),score decimal(5,2),hobby char(12));insert into school values (1,'ww',66,'2');
insert into school values (2,'ee',77,'3');
insert into school values (3,'aa',56,'5');
insert into school values (4,'ss',89,'2');
insert into school values (5,'dd',96,'3');
insert into school values (6,'ff',80,'4');
insert into school values (7,'gg',100,'6');mysql> select * from school;
+----+------+--------+-------+
| id | name | score  | hobby |
+----+------+--------+-------+
|  1 | ww   |  66.00 | 2     |
|  2 | ee   |  77.00 | 3     |
|  3 | aa   |  56.00 | 5     |
|  4 | ss   |  89.00 | 2     |
|  5 | dd   |  96.00 | 3     |
|  6 | ff   |  80.00 | 4     |
|  7 | gg   | 100.00 | 6     |
+----+------+--------+-------+
7 rows in set (0.00 sec)

按分数排序,默认不指定是升序排列

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

分数按降序排列

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

order by还可以结合where进行条件过滤,筛选 hobby 是 2 的学生按分数降序排列

select * from school where hobby='2' order by score desc;

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

① 查询学生信息先按 hobby 降序排列,id也按降序排列

select * from school order by hobby desc,id desc;

① 查询学生信息先按 hobby 降序排列,id按升序排列

select * from school order by hobby desc,id;

总结:按照关键字 或者字段进行 降序排列或者升序排列

2、区间判断及查询不重复记录

① AND/OR ——且/或

and 且

select * from school where score >70 and score <=96;

只会显示大于70且小于等于96的数据。

or 或

select * from school where score >70 or score <=96;

大于70 和 小于等于96的数据都会显示出来。

嵌套/多条件

select * from school where score <70 or (score > 80 and score <=96);

查询不重复记录 distinct

select distinct 字段 from 表名;

select distinct hobby from school;

3、对结果进行分组 group by

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

语法:

select 字段名,聚合函数(字段名) from 表名 where  字段名   运算符值  group by 字段名;

按 hobby 相同的分组,计算相同 hobby 的学生个数(基于id个数进行计数)

计算学生相同兴趣爱好的学生个数

select count(id),hobby from school group by hobby;

执行该查询后,返回的结果将是一个包含两列的列表,一列是每个 hobby 的人数,另一列是 hobby 的名称。

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

select count(id),hobby from school where score > 80 group by hobby;

全班同学成绩表
count(id):计数
score 分数 :
score>=80 :优秀
score >=60 and score <80 :优-

结合order by 把学生个数按降序排列

select count(id),hobby from school where score >=70 group by hoobby order by count(id) desc;

注意,若是 hobby 4 统计出有两个学生 那么其中一个学生的分数不会显示。

统计表中有多少行

select count(*) from school;

求班级里学生分数的平均数。

select avg(score) from school;

 求班级里学生的总分数

select sum(score) from school;

找出班级里最高分和最低分同理

select max(score) from school;

select min(score) from school;

4. 限制结果条目 limit

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

语法:

select 字段名1,字段名2,...  from  表名  limit  [offset,] number

        LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。 如果不设定第一个参数,将会从表中的第一条记录开始显示。

        需要注意的是,第一条记录的 位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。

示例:

查询所有信息显示前4行记录

select * from school limit 3;

第4行开始,往后显示3行内容

select * from school limit 3,3;

结合order by语句,按id的大小 降序 排列显示后三行

select * from school order by id desc limit 3;

输出前三行,怎么输出 : limit 3

limit 2 说的是前三行,limit 是做为位置偏移量的定义,他的起始是从0开始,而0表示的是字段

以后删除表中数据 可以先 查询再 删除。

select * from 表名 where  字段名='';

delete from 表名 where  字段名='';

5、设置别名

        在 MySQL 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者 多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性

语法:

对于列的别名:select  字段名 as 字段别名  from 表名;
对于表的别名:select  字段名...  from 表名 as 表别名;

        在使用 AS 后,可以用 alias_name 代替 table_name,其中 AS 语句是可选的(不写也行)。

        AS 之后的别名,主要是为表内的列或者表提供临时的名称,在查询过程中使用,库内实际的表名 或字段名是不会被改变的

列别名设置示例:

select name as 姓名,hobby as 爱好 from school;

        如果表的长度比较长,可以使用 AS 给表设置别名,在查询的过程中直接使用别名
        临时设置 school 的别名为 s

select  s.name as 姓名,s.hobby as 爱好 from school as s;

 

s.name 表示 school 表内的字段名。

查询school 表有多少行,以number显示

select count(*) as number from school;

不用as也可以,一样显示

使用场景:

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

此外,AS 还可以作为连接语句的操作符。

创建 qute1 表,将school表的查询记录全部插入qute1表

create table qute1 as select * from school;

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

#此处AS起到的作用:
1、创建了一个新表 qute1 并定义表结构,插入表数据(与 school 表相同)

2、但是”约束“没有被完全”复制“过来 #但是如果原表设置了主键,那么附表的:default字段会默认设置一个0

相似:
克隆、复制表结构

create table school2 like school;    #复制格式,通过LIKE方法,复制school表结构生成school2表

insert  into school2 select  *  from  school;    #备份内容

 

 

create table school3 (select * from school);    #复制school 表数据到 school3中

#也可以加入where 语句判断

create table asda as select * from school where score >=60;

#复制分数大于等于60的数据。

在为表设置别名时,要保证别名不能与数据库中的其他表的名称冲突
列的别名是在结果中有显示的,而表的别名在结果中没有显示,只在执行查询时使用。

6、通配符

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

        通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个,分别是:

        %:百分号表示零个、一个或多个字符        *
        _:下划线表示单个字符                               .

需求:查询名字是a开头的记录

select * from school where name like 'a%';

插入几条数据

insert into school values (8,'qaxukl',68,7);

insert into school values (9,'caixk',99,9);

insert into school values (10,'majiak',45,8);

查询名字里开头是q 结尾 l 中间有一个 xu 字符的记录

select * from school where name like 'q_xu_l';

查询名字中间有 i 的记录

select * from school where name like '%i%';

查询cai后面2个字符的名字记录

select * from school where name like 'cai__';

通配符“%”和“_”不仅可以单独使用,也可以组合使用

组合使用% _

查询名字以m开头的记录

select * from school where name like 'm%_';

相关文章:

MySQL高阶语句(一)

一、常用查询 &#xff08;增、删、改、查&#xff09; 对 MySQL 数据库的查询&#xff0c;除了基本的查询外&#xff0c;有时候需要对查询的结果集进行处理。 例如只取 10 条数据、对查询结果进行排序或分组等等 1、按关键字排序 PS:类比于windows 任务管理器 使用 SELECT 语…...

MySQL知识总结

一条 SQL 语句过来的流程是什么样的&#xff1f; ①当客户端连接到 MySQL 服务器时&#xff0c;服务器对其进行认证。可以通过用户名与密码认证&#xff0c;也可以通过 SSL 证书进行认证。登录认证后&#xff0c;服务器还会验证客户端是否有执行某个查询的操作权限。 ②在正式…...

Go-Gin-Example 第八部分 优化配置接口+图片上传功能

文章目录 前情提要本节目标 优化配置结构讲解落实修改配置文件优化配置读取及设置初始化顺序第一步 验证 抽离file 实现上传图片接口图片名加密封装image的处理逻辑编写上传图片的业务逻辑增加图片上传的路由 验证实现前端访问 http.FileServerr.StaticFS修改文章接口新增、更新…...

阿里云国际DDoS高防的定制场景策略

DDoS高防的定制场景策略允许您在特定的业务突增时段&#xff08;例如新业务上线、双11大促销等&#xff09;选择应用独立于通用防护策略的定制防护策略模板&#xff0c;保证适应业务需求的防护效果。您可以根据需要设置定制场景策略。 背景信息 定制场景策略提供基于业务场景…...

v4l2采集视频

Video4Linux2&#xff08;v4l2&#xff09;是用于Linux系统的视频设备驱动框架&#xff0c;它允许用户空间应用程序直接与视频设备&#xff08;如摄像头、视频采集卡等&#xff09;进行交互。 linux系统下一切皆文件&#xff0c;对视频设备的操作就像对文件的操作一样&#xff…...

Spring Cloud 八:微服务架构中的数据管理

Spring Cloud 一&#xff1a;Spring Cloud 简介 Spring Cloud 二&#xff1a;核心组件解析 Spring Cloud 三&#xff1a;API网关深入探索与实战应用 Spring Cloud 四&#xff1a;微服务治理与安全 Spring Cloud 五&#xff1a;Spring Cloud与持续集成/持续部署&#xff08;CI/C…...

Chrome/Edge 使用 Markdown Viewer 查看 Markdown 格式文件

Chrome/Edge 使用 Markdown Viewer 查看 Markdown 格式文件 0. 引言1. 安装 Markdown Viewer 插件2. 使用 Markdown Viewer 阅读 Markdown 格式文件 0. 引言 大部分程序员都喜欢 Markdown 格式的文件&#xff0c;这时给一些没有在电脑上安装 Markdown 编辑器的同事分享资料时&…...

flutter 弹窗之系列一

自定义不受Navigator影响的弹窗 class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;overrideState<MyHomePage> createState() > _MyHomePageState(); }class _MyHomePageState extends State<MyH…...

【Flink实战】Flink hint更灵活、更细粒度的设置Flink sql行为与简化hive连接器参数设置

文章目录 一. create table hints1. 语法2. 示例3. 注意 二. 实战&#xff1a;简化hive连接器参数设置三. select hints(ing) SQL 提示&#xff08;SQL Hints&#xff09;是和 SQL 语句一起使用来改变执行计划的。本章介绍如何使用 SQL 提示来实现各种干预。 SQL 提示一般可以…...

【python从入门到精通】-- 第二战:注释和有关量的解释

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…...

【手写AI代码目录】准备发布的教程

文章目录 1. tensorboard2. F.cross_entropy(input_tensor, target) F.log_softmax() F.nll_loss() 1. tensorboard from torch.utils.tensorboard import SummaryWriter# TensorBoard writer SummaryWriter(runs/mnist_experiment_1) ...if i % 100 99: # 每 100 个 b…...

2024.3.9|第十五届蓝桥杯模拟赛(第三期)

2024.3.9|十五届蓝桥杯模拟赛&#xff08;第三期&#xff09; 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 第九题 第十题 心有猛虎&#xff0c;细嗅蔷薇。你好朋友&#xff0c;这里是锅巴的C\C学习笔记&#xff0c;常言道&#xff0c;不积跬步无以至千里&…...

搭建PHP本地开发环境:看这一篇就够了

什么是PHP本地开发环境 PHP本地开发环境是指在个人计算机上模拟的服务器环境&#xff0c;这使得开发者能够在没有网络连接的情况下也能开发、测试和调试PHP应用程序。就像在你的电脑里装个小“服务器”&#xff0c;即使没网也能搞定PHP程序的开发和修修补补。这就是PHP本地开发…...

[蓝桥杯 2015]机器人数目

机器人数目 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 少年宫新近邮购了小机器人配件&#xff0c;共有3类。 A 类含有&#xff1a;8个轮子&#xff0c;1个传感器&#xff1b; B 类含有: 6个轮子&#xff0…...

Codeforces Round 935 (Div. 3)

A. Setting up Camp&#xff08;模拟&#xff09; #include<iostream> #include<algorithm> using namespace std; const int N 2e5 10;int main(){int t, n;scanf("%d", &t);int a, b, c;while(t--){scanf("%d%d%d", &a, &b, …...

自然语言处理下载nltk模块库

nltk安装 目录 nltk安装 1.官方下载 2.离线下载 2.1 下载nltk资料包 2.2 解压下载的资料包重命名 2.2.1 将解压后的packages文件夹重命名为nltk_data 2.2.2 查看将重命名的文件夹放在那个位置 2.2.3 将上述nltk_data 文件夹放在 2.2.2 打印的位置处 3.验证是否下载成…...

题解:CF1937B(Binary Path)

题解&#xff1a;CF1937B&#xff08;Binary Path&#xff09; 一、 理解题意 1. 题目链接 CodeForces&#xff1b; 洛谷。 2. 题目翻译 给定一个 由 0 0 0 和 1 1 1 组成的 2 2 2 行 n n n 列的网格上寻找一条路径&#xff0c;使得这条路径上所有的数串联起来形成的0…...

JS——9大陷阱

一、警惕A>X>B写法 3>2>1 返回值为false&#xff08;原因&#xff1a;3>2为true&#xff0c;会默认转成数字1&#xff0c;1>1为false&#xff09; 1<4<3 返回值为true&#xff08;原因&#xff1a;1<4为true&#xff0c;会默认转成数字1&#xff…...

USB - 通过configfs配置Linux USB Gadget

Linux USB gadget configured through configfs Overview USB Linux 小工具是一种具有 UDC&#xff08;USB 设备控制器&#xff09;的设备&#xff0c;可连接到 USB 主机&#xff0c;以扩展其附加功能&#xff0c;如串行端口或大容量存储功能。 A USB Linux Gadget is a device…...

迷宫与陷阱(蓝桥杯)

文章目录 迷宫与陷阱问题描述bfs解题思路代码 迷宫与陷阱 问题描述 小明在玩一款迷宫游戏&#xff0c;在游戏中他要控制自己的角色离开一间由 N x N 个格子组成的2D迷宫。 小明的起始位置在左上角&#xff0c;他需要到达右下角的格子才能离开迷宫&#xff0c;每一步&#xf…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

算术操作符与类型转换:从基础到精通

目录 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符&#xff1a;、-、*、/、% 赋值操作符&#xff1a;和复合赋值 单⽬操作符&#xff1a;、--、、- 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

【实施指南】Android客户端HTTPS双向认证实施指南

&#x1f510; 一、所需准备材料 证书文件&#xff08;6类核心文件&#xff09; 类型 格式 作用 Android端要求 CA根证书 .crt/.pem 验证服务器/客户端证书合法性 需预置到Android信任库 服务器证书 .crt 服务器身份证明 客户端需持有以验证服务器 客户端证书 .crt 客户端身份…...