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 5.7.20 开始,不推荐使用查询缓存。在 MySQL 8.0 中直接将其删除。
MySQL 的优化程序会对我们的语句做一些优化。优化的结果就是生成一个执行计划。我们可以使用 explain 语句来查看某个语句的执行计划。
-
存储引擎:主要负责读取和写入底层表中的数据。
MySQL 服务器处理请求的过程简单的划分为服务层和存储引擎层。连接管理、查询缓存、语法解析、查询优化,这些并不涉及真实数据的存取功能划分为服务层的功能,存取真实数据的功能划分为存储引擎层的功能。
服务层与存储引擎层交互时,一般是以记录为单位的。
服务层在判断某条记录符合要求之后,其实是先将其发送到一个缓冲区。待到缓冲区满了,才向客户端发送真正的记录。该缓冲区的大小由系统变量 net_buffer_length 控制。
常用存储引擎
| 存储引擎 | 描述 |
|---|---|
| ARCHIVE | 用于数据存档(记录插入后不能再修改) |
| BLACKHOLE | 丢弃写操作,读操作会返回空内容 |
| CSV | 在存储数据时,以逗号分隔各个数据项 |
| FEDERATED | 用来访问远程表 |
| InnoDB | 支持事务、行级锁、外建 |
| MEMORY | 数据只存储在内存,不存储在磁盘;多用于临时表 |
| MERGE | 用来管理多个 MyISAM 表构成的表集合 |
| MyISAM | 主要的非事务处理存储引擎 |
| NDB | MySQL 集群专用存储引擎 |
InnoDB 从 MySQL 5.5.5 版本开始作为 MySQL 的默认存储引擎,之前版本的默认存储引擎为 MyISAM。
存储引擎的相关操作
查看当前服务器程序支持的存储引擎
SHOW ENGINES;
例如:
创建表时指定表的存储引擎
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