Skip to content

第七章 MySQL 详解


1. MySQL 概述与架构

MySQL 是目前世界上使用最广泛的开源关系型数据库管理系统之一,由瑞典 MySQL AB 公司开发,现归属于 Oracle 公司。MySQL 以其高性能、高可靠性和易用性著称,被广泛应用于 Web 应用、企业信息系统和大规模互联网服务中。学习 MySQL 是掌握关系型数据库实践的重要环节。

1.1 MySQL 的诞生与发展

MySQL 的名称来源于创始人 Michael Widenius 的女儿 "My"。1995 年,MySQL 1.0 首次发布。2000 年,MySQL 采用 GPL 协议开源,迅速在开源社区中获得广泛 adoption。2008 年 Sun 公司收购 MySQL AB,2009 年 Oracle 收购 Sun,MySQL 遂成为 Oracle 旗下产品。为避免商业收购带来的不确定性,MySQL 的原始开发者基于 MySQL 5.5 创建了 MariaDB 分支,二者在语法和接口上保持高度兼容。

1.2 MySQL 的核心特性

  • 开源免费:社区版遵循 GPL 协议,可免费用于商业和非商业场景。
  • 跨平台:支持 Windows、Linux、macOS 等多种操作系统。
  • 存储引擎架构:采用可插拔存储引擎设计,InnoDB、MyISAM 等引擎各有适用场景。
  • 标准化:支持 SQL 标准,与第三章所学的 SQL 语言高度兼容。
  • 主从复制与集群:支持主从复制、组复制等高可用架构。

1.3 MySQL 体系结构

MySQL 采用经典的客户端/服务器架构。服务器端主要包括以下层次:

  1. 连接层:负责客户端连接管理、身份认证、权限校验。
  2. SQL 层:负责 SQL 解析、查询优化、执行计划生成、缓存管理。
  3. 存储引擎层:负责数据的物理存储和检索。InnoDB 是 MySQL 5.5 之后的默认引擎,支持事务、行级锁和外键。

理解 MySQL 时,有一个特别重要的视角:它不是一套从上到下完全单一的实现,而是把通用 SQL 能力与可插拔存储引擎结合起来的平台。对用户来说,写的仍然是统一的 SQL;但对系统内部来说,事务、索引组织、锁粒度和崩溃恢复等关键行为,很大程度上由底层引擎决定。也正因为如此,学习 MySQL 不能只记住语法,还要知道某种行为究竟是 SQL 标准带来的,还是 InnoDB 这类引擎实现带来的。把这一层边界看清楚,后续学习索引、事务和恢复时会轻松很多。


2. MySQL 安装与配置

2.1 安装方式概述

MySQL 的安装方式因操作系统而异:

  • Linux:可通过包管理器(如 aptyum)安装,或从官网下载二进制包解压使用。
  • Windows:推荐使用官方 MSI 安装包,提供图形化安装向导。
  • macOS:可使用 Homebrew (brew install mysql) 或官方 DMG 安装包。

安装完成后,需要启动 MySQL 服务并设置 root 用户的初始密码。

安装环节看似偏操作,实际是在为后续全部实践建立基础环境。教学中容易忽视的一点是,数据库软件不是装完就能放心使用,还必须在安装阶段就确定字符集、时区、端口、数据目录、日志目录和认证方式等关键默认项。尤其在中文环境和多系统协作环境中,若初始字符集和排序规则没有统一,后续会在导入导出、接口交换和模糊查询中反复出现问题。数据库的很多长期稳定性,往往从安装配置阶段就已经埋下伏笔。

2.2 连接 MySQL

使用命令行客户端连接:

bash
mysql -h 主机地址 -u 用户名 -p
  • h:指定服务器主机,省略时默认 localhost
  • u:指定登录用户名。
  • p:提示输入密码,也可直接写 -p密码(不推荐,密码可能被记录)。

连接成功后,将进入 MySQL 命令行提示符 mysql>

2.3 基础管理命令

sql
-- 查看所有数据库
SHOW DATABASES;

-- 查看当前 MySQL 版本
SELECT VERSION();

-- 查看当前用户
SELECT USER();

-- 退出
EXIT;

3. 数据库操作

3.1 创建数据库

3.2 选择数据库

3.3 删除数据库

4. 数据类型与表操作

4.1 常用数据类型

4.2 创建表

4.3 修改表结构 (ALTER TABLE)

4.4 删除表

5. 数据操纵 (DML)

5.1 插入数据 (INSERT)

5.2 更新数据 (UPDATE)

5.3 删除数据 (DELETE)

5.4 查询数据 (SELECT) 基础

6. 查询进阶

6.1 WHERE 子句与运算符

6.2 ORDER BY 排序

6.3 LIMIT 分页

6.4 聚合函数与 GROUP BY

6.5 连接查询 (JOIN)

6.6 子查询

6.7 UNION 合并结果集

7. 约束与索引

7.1 约束类型

7.2 索引的创建与使用

8. 视图、存储过程与触发器

8.1 视图

8.2 存储过程

8.3 触发器

9. 事务与锁

9.1 事务控制

9.2 隔离级别

9.3 锁机制

10. 备份、导入导出与安全

10.1 逻辑备份

10.2 用户与权限

10.3 安全建议