MySQL-基础篇-初识

89 阅读4分钟

MySQL-基础篇-初识

安装

进入 MySQL 的官网安装社区版本。

介绍

MySQL 采用客户端 / 服务器架构。用户通过客户端程序发送增删改查请求,服务器程序收到请求后处理,并且把处理结果返回给客户端,服务器程序默认端口为 3306。

启动

启动服务器程序

在类 UNIX 系统上启动 MySQL 服务器程序的可执行文件有很多,位于 MySQL 安装目录下的 bin 目录下。

  • mysqld:表示 MySQL 服务器程序,运行这个可执行文件,可以直接启动一个 MySQL 服务器进程。但这个并不常用;

  • mysqld_safe:这是一个启动脚本,它会间接调用 mysqld 并持续监控服务器的运行状态。当服务器进程出现错误时,它还可以帮助重启服务器程序。另外使用它启动时,还可以将服务器程序的出错信息和其他的诊断信息输出到错误日志,方便后期排查;

  • mysql.server:这也是一个启动脚本,它会间接调用 mysqld_safe。在执行 mysql.server 时,在后面添加 start 参数就可以启动服务器程序了,如下所示:

    # 启动
    mysqld.server start
    
    # 关闭
    mysqld.server stop
    
  • mysqld_multi:可以启动或停止多个服务器进程,也能报告它们的运行状态。

在 Windows 系统上启动 MySQL 服务器程序的方式有下面这些。

  • mysqld;

  • 将 mysqld 注册为 Windows 服务。

    "完整的可执行文件路径" --install [-manual] [服务名]
    
    # 启动
    net start 服务名
    
    # 关闭
    net stop 服务名
    

启动客户端程序

启动客户端程序使用的是 mysql 可执行文件,启动这个可执行文件时,一般需要一些参数,格式如下:

mysql -h主机名 -u用户名 -p密码
参数名含义
-h服务器进程所在的计算机的域名或者IP地址。如果服务器进程在本机的话,可以忽略这个参数
-u用户名
-p密码

最好不要在一行命令中输入密码,这样比较安全,就像下面这样:

mysql -uroot -p
Enter password: ***

连接成功后如下所示:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 402
Server version: 5.7.35-log MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

退出使用以下命令:

  • quit
  • exit
  • \q

服务器处理客户端请求

客户端可以向服务器发送增删改查等各类请求,这里比较复杂的查询请求为例,来展示一下大致的过程。

mysql-1-1-1

  • 连接管理:主要负责连接的建立与信息的认证;

  • 解析与优化:主要进行查询缓存、语法解析、查询优化;

    缓存的命中比较严格,如果两个查询请求中有任何字符串的不同,都会导致缓存不命中。从 MySQL 5.7.20 开始,不推荐使用查询缓存。在 MySQL 8.0 中直接将其删除。

    MySQL 的优化程序会对我们的语句做一些优化。优化的结果就是生成一个执行计划。我们可以使用 explain 语句来查看某个语句的执行计划。

  • 存储引擎:主要负责读取和写入底层表中的数据。

    MySQL 服务器处理请求的过程简单的划分为服务层和存储引擎层。连接管理、查询缓存、语法解析、查询优化,这些并不涉及真实数据的存取功能划分为服务层的功能,存取真实数据的功能划分为存储引擎层的功能。

    服务层与存储引擎层交互时,一般是以记录为单位的。

    服务层在判断某条记录符合要求之后,其实是先将其发送到一个缓冲区。待到缓冲区满了,才向客户端发送真正的记录。该缓冲区的大小由系统变量 net_buffer_length 控制。

常用存储引擎

存储引擎描述
ARCHIVE用于数据存档(记录插入后不能再修改)
BLACKHOLE丢弃写操作,读操作会返回空内容
CSV在存储数据时,以逗号分隔各个数据项
FEDERATED用来访问远程表
InnoDB支持事务、行级锁、外建
MEMORY数据只存储在内存,不存储在磁盘;多用于临时表
MERGE用来管理多个 MyISAM 表构成的表集合
MyISAM主要的非事务处理存储引擎
NDBMySQL 集群专用存储引擎

InnoDB 从 MySQL 5.5.5 版本开始作为 MySQL 的默认存储引擎,之前版本的默认存储引擎为 MyISAM。

存储引擎的相关操作

查看当前服务器程序支持的存储引擎

SHOW ENGINES;

例如:

mysql-1-1-2

创建表时指定表的存储引擎

CREATE TABLE 表名(
	建表语句
) ENGINE = 存储引擎名称;

例如:

CREATE TABLE engine_demo_table(
	i int
) ENGINE = MyISAM;

修改表的存储引擎

ALTER TABLE 表名 ENGINE = 存储引擎名称;

例如:

ALTER TABLE engine_demo_table ENGINE = InnoDb;

SHOW CREATE TABLE engine_demo_table;

CREATE TABLE `engine_demo_table` (
  `i` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8