呕心沥血写了三天3两夜24k字的MySQL详细教程(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 呕心沥血写了三天3两夜24k字的MySQL详细教程(三)

第四章 DQL语句


4.1条件查询


4.1.1 比较运算符


>大于 <小于 <=小于等于 >=大于等于 =等于 <>、!=不等于


具体操作:查询math分数大于80分的学生


SELECT * FROM student3 WHERE math>80;

微信图片_20220524223100.png

查询english分数小于或等于80分的学生

SELECT * FROM student3 WHERE english<=80;

微信图片_20220524222818.png

查询english分数小于或等于80分的学生

SELECT * FROM student3 WHERE english<=80;


微信图片_20220524222841.png

查询age等于20岁的学生

SELECT * FROM student3 WHERE age=20;

微信图片_20220524222902.png


查询age不等于20岁的学生

SELECT * FROM student3 WHERE age!=20;
SELECT * FROM student3 WHERE age<>20;

微信图片_20220524222908.png

   4.1.2 逻辑运算符


and(&&) 多个条件同时满足 or(||) 多个条件其中一个满足 not(!) 不满足

具体操作:查询age大于35且性别为男的学生(两个条件同时满足)

SELECT * FROM student3 WHERE age>35 AND sex='男';

微信图片_20220524224044.png

查询age大于35或性别为男的学生(两个条件其中一个满足)

SELECT * FROM student333 WHERE age>35 OR sex='男';


查询id是1或3或5的学生

SELECT * FROM student3 WHERE id=1 OR id=3 OR id=5;

微信图片_20220524222926.png

in关键字 语法格式:SELECT 字段名 FROM 表名 WHERE 字段 in (数据1, 数据2...); in里面的每个数据都会作为一次条件,只要满足条件的就会显示

具体操作:查询id是1或3或5的学生

SELECT * FROM student3 WHERE id IN (1,3,5);

查询id不是1或3或5的学生

SELECT * FROM student3 WHERE id NOT IN (1,3,5);


微信图片_20220524222932.png


4.1.3 范围


BETWEEN 值1 AND 值2 表示从值1到值2范围,包头又包尾 比如:age BETWEEN 80 AND 100 相当于: age>=80 &&age<=100

具体操作:查询english成绩大于等于75,且小于等于90的学生

SELECT * FROM student3 WHERE english>=75 AND english<=90;
SELECT * FROM student3 WHERE english BETWEEN 75 AND 90;

微信图片_20220524222938.png

4.1.4 like


LIKE表示模糊查询 SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串'; 满足通配符字符串规则的数据就会显示出来 所谓的通配符字符串就是含有通配符的字符串 MySQL通配符有两个: %: 表示0个或多个字符(任意个字符) _: 表示一个字符

具体操作:查询姓马的学生

SELECT * FROM student3 WHERE NAME LIKE '马%';

微信图片_20220524222944.png

查询姓名中包含'德'字的学生

SELECT * FROM student3 WHERE NAME LIKE '%德%';

查询姓马,且姓名有三个字的学生

SELECT * FROM student3 WHERE NAME LIKE '马__';

微信图片_20220524222952.png 4.2排序


通过ORDER BY子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序) SELECT字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名 [ASC|DESC]; ASC: 升序, 默认是升序 DESC: 降序

 4.2.1单列排序


单列排序就是使用一个字段排序

具体操作:查询所有数据,使用年龄降序排序

SELECT * FROM student3 ORDER BY age DESC;



微信图片_20220524222958.png

4.2.2组合排序


组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。 上面的例子中,年龄是有相同的。当年龄相同再使用math进行排序 SELECT 字段名 FROM 表名 WHERE 字段=值 ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];

具体操作:查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序

SELECT * FROM student3 ORDER BY age DESC, math DESC;


微信图片_20220524223011.png


4.3 聚合函数


之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值。另外聚合函数会忽略空值

五个聚合函数: count: 统计指定列记录数,记录为NULL的不统计 sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0 max: 计算指定列的最大值 min: 计算指定列的最小值 avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0

聚合函数的使用:写在 SQL语句SELECT后 字段名的地方 SELECT 字段名... FROM 表名; SELECT COUNT(age)FROM 表名;

具体操作:查询学生总数

SELECT COUNT(english) FROM student3;


微信图片_20220524223019.png

我们发现对于NULL的记录不会统计

微信图片_20220524223026.png

image.png

我们可以利用IFNULL()函数,如果记录为NULL,给个默认值,这样统计的数据就不会遗漏

ELECT COUNT(IFNULL(english,0)) FROM student3;

image.png

SELECT COUNT(*) FROM student3;


image.png

查询年龄大于40的总数

SELECT COUNT(*) FROM student3 WHERE age>40;

image.png

查询数学成绩总分

SELECT SUM(math) FROM student3;

微信图片_20220524230200.png

查询数学成绩平均分

SELECT AVG(math) FROM student3;

微信图片_20220524230228.png查询数学成绩最高分

SELECT MAX(math) FROM student3;



微信图片_20220524230234.png

查询数学成绩最低分

SELECT MIN(math) FROM student3;

微信图片_20220524230239.png

  4.4 分组


分组查询是指使用 GROUP BY语句对查询信息进行分组,相同数据作为一组 SELECT 字段1,字段2... FROM 表名GROUP BY 分组字段 [HAVING 条件];GROUP BY怎么分组的?将分组字段结果中相同内容作为一组 SELECT * FROM student3 GROUP BY sex;这句话会将sex相同的数据作为一组微信图片_20220524230919.png

GROUP BY将分组字段结果中相同内容作为一组,并且返回每组的第一条数据,所以单独分组没什么用处。分组的目的就是为了统计,一般分组会跟聚合函数一起使用。分组后聚合函数的作用/?不是操作所有数据,而是操作一组数据。 SELECT SUM(math), sex FROM student3 GROUPBY sex; 效果如下:

微信图片_20220524230927.png

实际上是将每组的math进行求和,返回每组统计的结果 微信图片_20220524230932.png

注意事项:当我们使用某个字段分组,在查询的时候也需要将这个字段查询出来,否则看不到数据属于哪组的查询的时候没有查询出分组字微信图片_20220524230940.png

查询的时候查询出分组字段

微信图片_20220524230946.png

具体步骤:按性别分组

SELECT sex FROM student3 GROUP BY sex;

微信图片_20220524230950.png微信图片_20220524230950.png

查询男女各多少人

.查询所有数据,按性别分组。 2.统计每组人数SELECT sex, COUNT(*) FROM student3 GROUP BY sex;

微信图片_20220524231006.png

查询年龄大于25岁的人,按性别分组,统计每组的人数


//

1.先过滤掉年龄小于25岁的人。2.再分组。3.最后统计每组的人数SELECT sex, COUNT(*) FROM student3 WHERE age > 25 GROUP BY sex;

微信图片_20220524231013.png查询年龄大于25岁的人,按性别分组,统计每组的人数,并只显示性别人数大于2的数据 有很多同学可能会将SQL语句写出这样:


SELECT sex, COUNT(*) FROM student3 WHERE age > 25 GROUP BY sex WHERE COUNT(*) >2;


注意: 并只显示性别人数>2的数据属于分组后的条件,对于分组后的条件需要使用having子句


SELECT sex, COUNT(*) FROM student3 WHERE age > 25 GROUP BY sex HAVING COUNT(*) >2;只有分组后人数大于2的`男`这组数据显示出来

微信图片_20220524231020.png

having与where的区别


       having是在分组后对数据进行过滤.


       where是在分组前对数据进行过滤


       having后面可以使用聚合函数


       where后面不可以使用聚合函数


准备数据:


INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (9,'唐僧',25,'男','长安',87,78),(10,'孙悟空',18,'男','花果山',100,66),(11,'猪八戒',22,'男','高老庄',58,78),(12,'沙僧',50,'男','流沙河',77,88),(13,'白骨精',22,'女','白虎岭',66,66),(14,'蜘蛛精',23,'女','盘丝洞',88,88);

 4.5 limit语句


LIMIT是限制的意思,所以LIMIT的作用就是限制查询记录的条数。 SELECT *|字段列表 [as 别名] FROM 表名[WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句]; 思考:limit子句为什么排在最后? 因为前面所有的限制条件都处理完了,只剩下显示多少条记录的问题了!


LIMIT语法格式: LIMIT offset,length; 或者limit length; offset是指偏移量,可以认为是跳过的记录数量,默认为0 length是指需要显示的总记录数


具体步骤:查询学生表中数据,从第三条开始显示,显示6条


我们可以认为跳过前面2条,取6条数据
SELECT * FROM student3 LIMIT 2,6;

微信图片_20220524232128.png

LIMIT的使用场景:分页 比如我们登录京东,淘宝,返回的商品信息可能有几万条,不是一次全部显示出来。是一页显示固定的条数。 假设我们一每页显示5条记录的方式来分页,SQL语句如下:


‐ 每页显示5条
‐‐ 第一页: LIMIT 0,5; 跳过0条,显示5条
‐‐ 第二页: LIMIT 5,5; 跳过5条,显示5条
‐‐ 第三页: LIMIT 10,5; 跳过10条,显示5条
SELECT * FROM student3 LIMIT 0,5;SELECT * FROM student3 LIMIT 5,5;SELECT * FROM student3 LIMIT 10,5;

微信图片_20220524232137.png

注意:


       如果第一个参数是0可以简写:


       SELECT * FROM student3 LIMIT 0,5;


       SELECT * FROM student3 LIMIT 5;


LIMIT 10,5; -- 不够5条,有多少显示多少


第五章 数据库备份


5.1 备份应用场景


在服务器进行数据传输、数据存储和数据交换,就有可能产生数据故障。比如发生意外停机或存储介质损坏。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据的丢失,造成的损失是无法弥补与估量的。


5.2 source命令备份与还原



备份格式: mysqldump -u用户名 -p密码 数据库 > 文件的路径


还原格式: SOURCE 导入文件的路径;


注意:还原的时候需要先登录MySQL,并选中对应的数据库


具体操作:备份day22数据库中的数据


mysqldump ‐uroot ‐proot day22 > C:\work\课改\MYSQL课改资料\Day02‐MYSQL多表查询\code\bak.sql

微信图片_20220524232456.png

数据库中的所有表和数据都会导出成SQL语句

微信图片_20220524232501.png

还原day22数据库中的数据

删除day22数据库中的所有表 微信图片_20220524232506.png登录MySQL

mysql ‐uroot ‐proot

选中数据库

use day22;
select database();

微信图片_20220524232512.png

使用SOURCE命令还原数据

source C:\work\课改\MYSQL课改资料\Day02‐MYSQL多表查询\code\bak.sql

 5.3 图形化界面备份与还原


备份day22数据库中的数据微信图片_20220524232518.png

包含创建数据库的语句

微信图片_20220524232523.png

微信图片_20220524232530.png

还原day22数据库中的数据

删除day22数据库

数据库列表区域右键“执行SQL脚本”, 指定要执行的SQL文件,执行即可 微信图片_20220524232536.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
28天前
|
存储 Ubuntu 关系型数据库
Ubuntu 20.04 卸载与安装 MySQL 5.7 详细教程
该文档提供了在Ubuntu上卸载和安装MySQL 5.7的步骤。首先,通过`apt`命令卸载所有MySQL相关软件包及配置。然后,下载特定版本(5.7.32)的MySQL安装包,解压并安装所需依赖。接着,按照特定顺序安装解压后的deb包,并在安装过程中设置root用户的密码。安装完成后,启动MySQL服务,连接数据库并验证。最后,提到了开启GTID和二进制日志的配置方法。
|
1月前
|
存储 关系型数据库 MySQL
【MySQL】在 Centos7 环境安装 MySQL -- 详细完整教程
【MySQL】在 Centos7 环境安装 MySQL -- 详细完整教程
|
5天前
|
关系型数据库 MySQL 数据库
MySQL8.0.36 安装配置教程(保姆级,包含图文讲解,环境变量的配置)适合小白
MySQL8.0.36 安装配置教程(保姆级,包含图文讲解,环境变量的配置)适合小白
|
9天前
|
SQL 关系型数据库 MySQL
Windows 10安装MySQL 5.7完整教程
Windows 10安装MySQL 5.7完整教程
40 2
|
11天前
|
关系型数据库 MySQL 数据库
Mysql—8.0.21下载安装配置教程
该教程介绍了MySQL的下载与安装步骤。建议从官网下载MySQL 8.0及以上版本,也可通过提供的百度网盘链接获取。解压后,在指定目录创建my.ini配置文件,并替换basedir和datadir为自己实际的安装路径。接着,将MySQL安装目录的bin文件夹添加到系统环境变量Path中。以管理员模式运行CMD,进入bin目录,使用`mysqld --initialize --console`初始化数据库,记下生成的临时密码。最后,用`net start mysql`启动服务,`mysql -u root -p`登录并使用ALTER指令修改初始密码。
76 1
|
18天前
|
SQL 存储 关系型数据库
MySQL数据库案例实战教程:数据类型、语法与高级查询详解
MySQL数据库案例实战教程:数据类型、语法与高级查询详解
35 3
|
3天前
|
存储 关系型数据库 MySQL
CentOS上安装MySQL 8.0的详细教程
CentOS上安装MySQL 8.0的详细教程
|
1月前
|
存储 安全 关系型数据库
MySQL中使用percona-xtrabackup工具 三种备份及恢复 (超详细教程)
MySQL中使用percona-xtrabackup工具 三种备份及恢复 (超详细教程)
|
1月前
|
SQL 关系型数据库 MySQL
MySQL最新版8.1.0安装配置教程
本文章,是对自己在安装最新版MySQL最新版8.1.0安装配置的一个详细过程吧,中间也有很多不清楚的地方,但是经过自己的多次对,工具环境以及软件环境的配置,现在对于这个的安装也算得心应手吧,不仅仅是一种总结,更是对自己经验的一种积累.
|
2天前
|
存储 关系型数据库 MySQL
关系型数据库mysql日志和临时文件
【6月更文挑战第15天】
20 4