您当前的位置:首页 > 电脑百科 > 数据库 > MYSQL

MySQL 数据库性能优化,看这篇就够了

时间:2020-07-09 15:28:02  来源:  作者:

无论是运维、开发、测试,还是架构师,数据库技术是一个必备加薪神器

MySQL 由于免费,而且性能强劲,是目前使用最广泛的数据库产品,同时也是入门门槛最低的数据库产品之一。更重要的是,掌握了 MySQL,会为你以后学习其他数据库产品打下坚实的基础。

今天给大家带来一门 MySQL 数据库的进阶实战教程,将重点讲解 MySQL 的一些高级特性,以及对数据库查询的性能优化。学习完本课程的同学会掌握数据库运维的相关知识,多表联合查询,日志的使用等数据库的进阶知识。

MySQL 数据库性能优化,看这篇就够了

 

课程地址:文章最下方“了解更多”

下面来学习一下 MySQL 数据库和数据表的基本操作:

实验介绍

在本节实验中,将会学习如何启动和连接服务器,如何对数据库进行操作,如何创建数据表和在表中添加数据,以及如何检索表中的数据。

知识点

  • MySQL 的安装与启动
  • MySQL 的连接与断开
  • 数据库的操作
  • 数据表的操作

MySQL 介绍

MySQL 是一个关系型数据库管理系统,由瑞典 MySQLAB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统,在 Web 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

由于配置不同,在安装 MySQL 的过程中可能会导致一些问题。所以,就不讲解安装过程了。需要在本地安装的同学,可以在 在 windows 下安装 和 在 linux 下安装的官方页面自行安装。

启动与连接服务器

在实验中使用的 IDE 已经为大家安装好 MySQL,无需自行安装。请同学们打开你们的桌面环境,点击桌面上的 Xfce 终端。

如果觉得终端窗口太小,可以在视图中设置全屏模式。在编辑中,大家可以根据自己的喜好设置字体大小,背景颜色和代码颜色等。

首先启动服务器,输入命令如下所示。

sudo service mysql start

运行结果如下图所示,说明服务器启动成功。

MySQL 数据库性能优化,看这篇就够了

 

然后连接服务器,为了连接服务器,当调用 mysql 时,通常需要提供一个 MySQL 用户名并且很可能需要一个密码。在这里我们使用 root 用户连接服务器(密码环境设置为空,无需我们输入密码),输入以下命令连接服务器。

mysql -u root

显示如下图,说明服务器启动成功。

MySQL 数据库性能优化,看这篇就够了

 

成功连接服务器后,可以在 mysql> 提示下输入 QUIT 或 EXIT 断开连接。

数据库的操作

首先创建数据库,其语法格式为 CREATE DATABASE <数据库名字>。

例如,我们创建一个名为 mysql_test 的数据库。

CREATE DATABASE mysql_test;

创建后的输出如下,说明创建成功。

MySQL 数据库性能优化,看这篇就够了

 

用 SHOW DATABASES 来查看当前存在的所有数据库。

SHOW DATABASES;

我们能够在数据库表中看到 mysql_test 这个数据库的名字。

MySQL 数据库性能优化,看这篇就够了

 

当创建成功后,我们需要让 USE <数据库名字> 这个命令执行后,才能够使用该数据库。

USE mysql_test
MySQL 数据库性能优化,看这篇就够了

 

若你不想要这个数据库了,可以使用 DROP DATABASE <数据库名字> 来删除指定数据库。

例如,删除刚才创建的名为 mysql_test 的数据库。

DROP DATABASE mysql_test;
MySQL 数据库性能优化,看这篇就够了

 

数据表的操作

数据库就像一个衣柜,而衣柜里的小隔间就像空的数据表,在每个小隔间中放入不同类型的衣物,就像我们在数据表中添加数据。接下来我们就学习一下,如何使用数据表吧。

现在,我们使用 CREATE TABLE <数据表名> 在数据库中创建数据表。

创建数据表的语法格式如下所示。

CREATE TABLE <表名>(
<字段名1> <数据类型>(<数据长度>),
<字段名2> <数据类型>(<数据长度>),
....
<字段名n> <数据类型>(<数据长度>)
);

例如,我们创建一个名为 gradesystem 的数据库,我们在该数据库中,创建名为student 的数据表,表中包括学号 ID、学生姓名、性别信息。

# 创建名为 student 的数据表,包含 id,stu_name,gender

CREATE TABLE student(id int(10),stu_name char(20),gender char(10));

显示如下图所示,说明创建成功。

MySQL 数据库性能优化,看这篇就够了

 

然后再创建一张名为 mark 的表,表中包含学生 id 、课程名字和分数,为了让代码看起来更加的整洁美观,您可以分行输入,如下所示。

# 创建名为 mark 的数据表

CREATE TABLE mark
(
    id int(10), # 学生 id
    name char(20), # 课程名
    grade int(10) # 课程分数
);
MySQL 数据库性能优化,看这篇就够了

 

创建数据表后,使用 SHOW TABLES 来查看一下,我们能够看到刚才创建的两张数据表的名字。

SHOW TABLES; # 查询所有数据表
MySQL 数据库性能优化,看这篇就够了

 

使用 DESCRIBE <数据表名字> 来查看创建数据表的完整信息。

例如,我们查看一下数据表 student 的完整信息。

DESCRIBE student;
MySQL 数据库性能优化,看这篇就够了

 

从上图中我们可以看到刚才创建的三个字段名,int 和 char 是 MySQL 的两种数据类型,MySQL 的数据类型有很多,不熟悉的同学,可以看一下 MySQL 的数据类型。

在图中 Null 全都为 YES,那是因为我们没有指定列名为非空。若我们指定列名为NOT NULL,则会显示 NO,如下所示。

MySQL 数据库性能优化,看这篇就够了

 

到此,我们已经在数据库中建立了两张数据表。接着我们需要在表中添加数据。在表中添加数据,有 LOAD DATA 和 INSERT 两种方式。

  • LOAD DATA 是一次可以添加多条数据,可以把文本文件中的数据直接加载到数据表中。
  • INSERT 是一次增加一条新的数据。

使用 LOAD DATA 加载数据,语句格式为:

LOAD DATA INFILE '加载数据文件的路径' INTO TABLE 表名;

使用 INSERT 语句向表中插入数据,语句格式为:

INSERT INTO 表的名字(字段名1,字段名2,字段名3) VALUES(值1,值2,值3);

例如,我们用 INSERT 语句向 student 和 mark 表中分别添加数据。

在 student 表中插入了四条完整的学生信息数据,如下所示。

INSERT INTO student(id,stu_name,gender) VALUES(01,'Jack','male');
INSERT INTO student(id,stu_name,gender) VALUES(02,'Candy','male');
INSERT INTO student(id,stu_name,gender) VALUES(01,'Rose','Female');
INSERT INTO student VALUES(04,'Ann','Famale');

值得注意的是,当我们插入的数据不完整时,列名对应位置会显示为 NULL。我们尽量不要在表格中留有空值,因为空值会降低查询的性能。我们可以使用数字 0 去代替 NULL,关于空值的处理在后面的实验中会讲解。

插入数据后,我们使用 SELECT 语句来查看表中的完整信息。语法格式为:SELECT * FROM <数据表名>。

MySQL 数据库性能优化,看这篇就够了

 

再向 mark 表中插入数据,如下所示。

INSERT INTO mark(id,name,grade) VALUES(01,'C++',90);
INSERT INTO mark VALUES(02,'C++',80);
INSERT INTO mark VALUES(03,'JAVA',90);
INSERT INTO mark VALUES(04,'JAVA',50);

从代码中我们可以知道,像名字这样 CHAR 类型的数据,我们需要用引号去修饰。除了 CHAR 类型,还有 VARCHAR,TEXT,DATE,TIME,ENUM等类型的数据也需要用单引号修饰。

MySQL 数据库性能优化,看这篇就够了

 

用 SELECT 语句查看一下数据是否成功添加到数据表中。

MySQL 数据库性能优化,看这篇就够了

 

数据表的查询操作

检索特定行的数据

检索特定行的数据是通过条件限制去查询符合设定条件的一行或者多行数据。

我们使用 SELECT * FROM <表名> WHERE <条件> 来查询特定行的数据。

例如,我们查询一下在 student 表中,学生姓名为 Ann 的学生信息。

SELECT * FROM student WHERE stu_name = 'Ann';
MySQL 数据库性能优化,看这篇就够了

 

检索特定列的数据

检索特定列的数据就是通过指定字段名来查询表中某些列的数据。我们可以使用SELECT <字段名> FROM <表名> 来查询,这里可以写入多个列名,用逗号隔开即可。

例如,我们查询一下在 student 表中,所有学生的姓名。

SELECT stu_name FROM student;
MySQL 数据库性能优化,看这篇就够了

 

同时检索特定行和列的数据

同时检索特定行和列的数据相当于前面两种的结合体,我们可以使用 SELECT <字段名> FROM <表名> WHERE <条件> 来同时进行特定行和列的数据选择。

例如,我们可以查询一下,在 mark 表中,学生分数小于 90 分的成绩。

SELECT grade FROM mark WHERE grade < 90;
MySQL 数据库性能优化,看这篇就够了

 

排序检索数据

我们可以对数据进行排序检索,例如在检索学生成绩时,我们可以对学生成绩进行排序,这样使得查询结果更加清晰。

使用 OREDER BY <字段名> 可实现对一列或者多列数据进行排序操作。该排序默认是升序,我们可以在其后添加关键字 DESC 变成降序。

例如,对 mark 表中,学生的成绩进行排序。

SELECT grade FROM mark ORDER BY grade;
MySQL 数据库性能优化,看这篇就够了

 

最后,我们可以把不想要的数据表给删除了。可以使用 DROP TABLE <表名> 来删除整个表,包括表中的数据和表的结构。

例如,我们将 student 表删除。

MySQL 数据库性能优化,看这篇就够了

 

如果想要保留表的结构,只是清空表中的数据,那么我们可以使用 TRUNCATE TABLE <表名>。

还可以使用 DELETE FROM <表名> WHERE <字段名> 来删除指定行的数据。

实验总结

在本节实验中,我们学习了 MySQL 服务器的启动与连接,创建并使用数据库,创建数据表并在表中添加数据,以及查询表中数据的一些 SELECT 语句,包括行检索、列检索、排序检索等操作。

后续课程中,你还可以学到:

MySQL 数据库性能优化,看这篇就够了

 

点击了解更多,学习完整课程内容~



Tags:MySQL   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  Tags: MySQL  点击:(7)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  Tags: MySQL  点击:(12)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  Tags: MySQL  点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  Tags: MySQL  点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  Tags: MySQL  点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  Tags: MySQL  点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  Tags: MySQL  点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  Tags: MySQL  点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  Tags: MySQL  点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Tags: MySQL  点击:(31)  评论:(0)  加入收藏
▌简易百科推荐
作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生...【详细内容】
2021-12-24  爱可生    Tags:MySQL   点击:(7)  评论:(0)  加入收藏
生成间隙(gap)锁、临键(next-key)锁的前提条件 是在 RR 隔离级别下。有关Mysql记录锁、间隙(gap)锁、临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文章...【详细内容】
2021-12-14  python数据分析    Tags:MySQL记录锁   点击:(18)  评论:(0)  加入收藏
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二...【详细内容】
2021-12-14  linux上的码农    Tags:mysql   点击:(13)  评论:(0)  加入收藏
为查询优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查...【详细内容】
2021-12-09  元宇宙iwemeta    Tags:mysql   点击:(15)  评论:(0)  加入收藏
测试的目的和原因,公司有很多程序员,每个程序员对数据库和表结构都有自己的理解。而且每个程序员的理解往往是以效率考虑。既然都是为了效率考虑,那么我就来测试一下究竟哪种使...【详细内容】
2021-12-08  吴彬的分享    Tags:Mysql数据库   点击:(14)  评论:(0)  加入收藏
当你们考虑项目并发的时候,我在部署环境,当你们在纠结使用ArrayList还是LinkedArrayList的时候,我还是在部署环境。所以啊,技术不止境,我在部环境。今天这篇文章缕一下在同一台服...【详细内容】
2021-12-08  秃头码哥    Tags:MySQL数据库   点击:(17)  评论:(0)  加入收藏
对于数据分析来说,MySQL使用最多的是查询,比如对数据进行排序、分组、去重、汇总及字符串匹配等,如果查询的数据涉及多个表,还需要要对表进行连接,本文就来说说MySQL中常用的查询...【详细内容】
2021-12-06  笨鸟学数据分析    Tags:MySQL   点击:(21)  评论:(0)  加入收藏
在学习SQL语句之前,首先需要区分几个概念,我们常说的数据库是指数据库软件,例如MySQL、Oracle、SQL Server等,而本文提到的数据库是指数据库软件中的一个个用于存储数据的容器。...【详细内容】
2021-11-24  笨鸟学数据分析    Tags:SQL语句   点击:(23)  评论:(0)  加入收藏
概述以前参加过一个库存系统,由于其业务复杂性,搞了很多个应用来支撑。这样的话一份库存数据就有可能同时有多个应用来修改库存数据。比如说,有定时任务域xx.cron,和SystemA域...【详细内容】
2021-11-05  Java云海    Tags:分布式锁   点击:(31)  评论:(0)  加入收藏
MySQL的进阶查询 一、 按关键字排序 使用ORDERBY语句来实现排序排序可针对一个或多个字段ASC:升序,默认排序方式 【升序是从小到大】DESC:降序 【降序是从大到小】ORDER BY的...【详细内容】
2021-11-05  Java热点    Tags:SQL语句   点击:(28)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条