当前位置: 首页 > 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…...

Temple of Doom靶场nodejs获取shellss-manager漏洞tcpdump提权

下载链接&#xff1a; Temple of Doom: 1 ~ VulnHub 下载完成后直接在vxbox中导入即可&#xff0c;网络链接模式根据自身情况而定&#xff08;我采用的桥接模式&#xff09; 正文&#xff1a; 先用nmap进行扫描靶机ip nmap -sn 192.168.1.1/24 对192.168.1.5进行端口探测&a…...

day03_mysql_课后练习 - 参考答案

文章目录 day03_mysql_课后练习mysql练习题第1题第2题第3题第4题第5题 day03_mysql_课后练习 mysql练习题 第1题 案例&#xff1a; 1、创建一个数据库&#xff1a;day03_test01_school 2、创建如下表格 表1 Department表的定义 字段名字段描述数据类型主键外键非空唯一D…...

creator-webview与Android交互

title: creator-webview与Android交互 categories: Cocos2dx tags: [cocos2dx, creator, webview, 交互] date: 2024-03-23 13:17:20 comments: false mathjax: true toc: true creator-webview与Android交互 前篇 Android&#xff1a;你要的WebView与 JS 交互方式 都在这里了…...

22.WEB渗透测试-BurpSuite(一)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;21.WEB渗透测试-HTTP协议&#xff08;下&#xff09;-CSDN博客 工具的使用需要先搭建靶场…...

前端性能优化:防抖与节流

一、防抖和节流主要是干什么的 防抖和节流主要用于控制函数执行的频率&#xff0c;通过限制函数的触发次数&#xff0c;避免函数被过度调用而引发的性能问题或产生不必要的副作用。 二、防抖 防抖是什么: 1、对于在事件被触发 n 秒后再执行的回调 --> 延迟执行 2、如果…...

Copilot 编程助手的介绍及使用

介绍 Copilot 是2021年由 GitHub 与 OpenAI 合作研发的一款编程助手&#xff0c;同时也是全球首款使用OpenAI Codex模型&#xff08;GPT-3后代&#xff09;打造的大规模生成式AI开发工具。 Copilot 底层模型目前经过了数十亿行公开代码的训练&#xff0c;与大多数代码辅助工具…...

数据库专题(oracle基础和进阶)

前言 本专题主要记录自己最近学的数据库&#xff0c;有兴趣一起补习的可以一起看看&#xff0c;有补充和不足之处请多多指出。希望专题可以给自己还有读者带去一点点提高。 数据库基本概念 本模块有参考&#xff1a;数据库基本概念-CSDN博客 数据库管理系统是一个由互相关联的…...

web蓝桥杯2022省赛真题:水果拼盘

代码及注释&#xff1a; /* TODO&#xff1a;待补充代码 */ #pond {display: flex; //flex布局flex-direction: column; //主轴方向从上到下flex-wrap: wrap; //子元素换行 } 知识点&#xff1a; flex弹性布局 父元素&#xff1a;diasplay: flex; flex-d…...

Web核心

目录 Web核心HTTP概念&#xff1a;协议特点&#xff1a;请求数据格式响应数据格式 Tomcat简介基本使用配置部署项目IDEA中创建 Maven Web 项目 IDEA使用Tomcat Servlet简介快速入门执行流程生命周期体系结构Servlet urlPattern配置一个Servlet&#xff0c;可以配置多个 urlPatt…...

iOS应用审核问题解决方案及优化方法 ✨

摘要 本文将针对iOS应用提交审核时可能遇到的问题&#xff0c;如“你必须在Xcode中添加com.apple.developer.game-center密钥”&#xff0c;以及突然间提交送审报错情况进行探讨。通过大量查询资料和尝试&#xff0c;结合案例分析&#xff0c;提供了解决方案和优化方法&#xf…...