MySQL 是目前最流行的开源关系型数据库管理系统之一,广泛应用于各类 Web 应用和软件开发项目中。本教程将从零开始,依次介绍数据库的基础概念、MySQL 在 Windows 环境下的安装流程、SQL 语言的基本使用,以及如何通过 Python FastAPI 构建前后端服务来访问 MySQL 数据库。
前置教程
- Python+FastAPI在Windows环境下创建一个基础后端服务教程,本教程将在此基础上扩展,增加MySQL数据库访问能力。
资源下载
- HeidiSQL 官网下载地址
- HeidiSQL 网盘下载地址-解决网络环境不佳下载过慢的问题
- 示例项目fastapi-mysql源码下载地址
1. 数据库基础概念
1.1 数据库与数据库管理系统
数据库(Database) 是按照特定数据结构组织、存储和管理数据的仓库。可以将它理解为一个电子化的文件柜,能够高效地存储、检索、修改和管理数据。
数据库管理系统(DBMS,Database Management System) 是用于管理数据库的软件系统,负责数据的存储、访问、安全控制和并发管理。用户通过DBMS操作数据库,而不需要直接处理底层的数据文件。
常见的数据库管理系统分为两类:
| 类型 | 特点 | 代表产品 |
|---|---|---|
| 关系型数据库(RDBMS) | 数据以表(Table)形式存储,表之间通过主外键关联,使用SQL操作 | MySQL、PostgreSQL、Oracle、SQL Server |
| 非关系型数据库(NoSQL) | 数据以键值对、文档、列族或图形式存储,灵活可扩展 | Redis、MongoDB、Cassandra、Neo4j |
1.2 关系型数据库的核心概念
关系型数据库以 关系(Relation) 即 表(Table) 为核心组织形式,包含以下基本概念:
- 表(Table):数据的集合,由行和列组成。一个数据库通常包含多张表。
- 行(Row)/ 记录(Record):表中的一条完整数据,代表一个实体。
- 列(Column)/ 字段(Field):数据的一个属性,定义了数据类型和约束。
- 主键(Primary Key):唯一标识表中每一行记录的字段或字段组合。
- 外键(Foreign Key):指向另一张表主键的字段,用于建立表之间的关联。
- 索引(Index):加速数据查询的数据结构。
以下是一个典型的关系型数据库表结构示例:
users 表
+----+----------+---------------------+---------------------+
| id | name | email | created_at |
+----+----------+---------------------+---------------------+
| 1 | 张三 | zhangsan@example.com | 2026-07-20 10:00:00 |
| 2 | 李四 | lisi@example.com | 2026-07-20 10:05:00 |
+----+----------+---------------------+---------------------+
1.3 SQL 语言简介
SQL(Structured Query Language,结构化查询语言) 是操作关系型数据库的标准语言,主要包括:
- DDL(数据定义语言):定义数据库结构,如创建/修改/删除表和数据库。关键字:
CREATE、ALTER、DROP - DML(数据操作语言):操作表中的数据,如增删改查。关键字:
INSERT、UPDATE、DELETE、SELECT - DCL(数据控制语言):控制访问权限。关键字:
GRANT、REVOKE
1.4 为什么选择 MySQL
MySQL 的主要优势:
- 开源且免费:社区版完全免费,可商用。
- 跨平台:支持 Windows、Linux、macOS。
- 性能优秀:查询速度快,支持高并发。
- 生态丰富:广泛用于 Web 开发(如 LAMP/LEMP 架构),与 Python、Java、PHP、Node.js 等主流语言均有成熟的驱动支持。
2. 安装与配置 MySQL
2.1 安装方式选择
Windows环境下安装MySQL主要有以下两种安装方式,可根据实际需求选择:
| 安装方式 | 适用场景 | 推荐度 |
|---|---|---|
| Winget 命令行安装 | 快速安装,无需手动下载安装包 | 首选推荐 |
| MSI 图形化安装 | 需要自定义组件和详细配置 | 备选 |
本教程采用 Winget 命令行 方式安装, Windows 10/11 系统默认自带 Winget 工具,无需额外安装。
2.2 安装前准备
2.2.1 检查 Winget 可用性
在 PowerShell 中执行以下命令,确认 Winget 工具可用:
winget --version
如有版本号输出(如 v1.7.10582),说明 Winget 可用。
2.2.2 确认管理员权限
必须以管理员身份运行 PowerShell,否则后续安装和服务操作会因权限不足而失败。
打开方式:
- 按
Win + X键,选择 "终端(管理员)" 或 "Windows PowerShell(管理员)" - 或通过搜索找到PowerShell 窗口,右键点击窗口,选择 "以管理员身份运行"
2.3 安装 MySQL
2.3.1 查看可用版本(可选)
如需了解当前可安装的 MySQL 版本,可先执行搜索:
winget search mysql
输出中会列出 Oracle.MySQL 及其版本号。
2.3.2 执行安装命令
winget install Oracle.MySQL
安装过程会自动下载 MSI 安装包并静默安装,通常需要 3-5 分钟,等待完成即可。
如需指定特定版本,可在命令中加入版本参数:
winget install Oracle.MySQL --version 8.4.9
安装完成后,MySQL 默认安装到 C:\Program Files\MySQL\MySQL Server 8.4\ 目录下。
2.4 配置环境变量
2.4.1 问题说明
Winget 安装后默认不会将 MySQL 的 bin 目录添加到系统环境变量 PATH 中,因此需要手动配置才能直接在终端中使用 mysql 和 mysqld 命令。
2.4.2 添加 MySQL 到系统 PATH
方式一:命令行添加(推荐,需管理员权限)
[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\Program Files\MySQL\MySQL Server 8.4\bin", "Machine")
执行后必须关闭当前终端并重新打开,环境变量才能生效。
方式二:图形界面添加
- 按
Win + X键,选择 "系统" - 在右侧点击 "高级系统设置"
- 点击 "环境变量"
- 在 "系统变量" 中找到
Path变量,双击编辑 - 点击 "新建",添加以下路径:
C:\Program Files\MySQL\MySQL Server 8.4\bin - 依次点击 "确定" 保存所有对话框
- 重新打开终端 使配置生效
2.4.3 验证环境变量
在新打开的终端中执行:
mysql --version
预期输出类似:
mysql Ver 8.4.9 for Win64 on x86_64 (MySQL Community Server - GPL)
如能正常显示版本信息,说明环境变量配置成功。
2.5 初始化数据库
2.5.1 初始化数据目录
MySQL 安装后需要初始化数据目录并生成临时密码:
mysqld --initialize --console
执行后,输出日志中的最后一行会显示 root@localhost 的临时密码:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ,pV8-f:p/?b&
立即复制并保存这个临时密码,后续首次登录时必须使用。
2.5.2 安装 Windows 服务
将 MySQL 注册为 Windows 系统服务,以便自动管理启动和停止:
mysqld --install MySQL84
- 提示
Service successfully installed.-- 表示安装成功
2.5.3 启动 MySQL 服务
net start MySQL84
看到 MySQL84 服务已经启动成功。 即表示 MySQL 服务正常运行。
2.6 登录并修改密码
2.6.1 使用临时密码登录
mysql -u root -p
提示 Enter password: 时,粘贴前文提到的临时密码并回车。
2.6.2 修改 root 密码
登录成功后,在 mysql> 提示符下执行以下 SQL 语句修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
FLUSH PRIVILEGES;
EXIT;
建议密码设置满足强度要求,包含大小写字母、数字和特殊符号。示例密码
root仅用于演示,实际使用请替换为安全密码。
2.6.3 验证新密码
mysql -u root -p
输入新密码,看到 mysql> 提示符即表示安装和配置全部成功。
2.7 配置字符集(中文支持)
2.7.1 创建配置文件
为避免中文内容出现乱码,建议在 MySQL 的数据目录下创建 my.ini 配置文件。MySQL 8.4 的数据目录默认位于 C:\ProgramData\MySQL\MySQL Server 8.4\。
使用管理员权限打开记事本,写入以下内容:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
另存至:C:\ProgramData\MySQL\MySQL Server 8.4\ 目录下,名为:my.ini
2.7.2 重启服务使配置生效
net stop MySQL84
net start MySQL84
2.7.3 验证字符集
登录 MySQL 后执行:
SHOW VARIABLES LIKE 'character_set_%';
确认各字符集变量均显示为 utf8mb4。
3. MySQL 基础使用
3.1 启动 MySQL 客户端
MySQL 安装完成后,可通过命令行客户端连接数据库服务:
# 启动 MySQL 服务
net start MySQL84
# 登录 MySQL 数据库
mysql -u root -p
输入密码后进入 mysql> 交互式提示符,后续所有 SQL 语句都在此环境下执行。
3.2 数据库的创建与查看
3.2.1 查看已有数据库
SHOW DATABASES;
注意:
;不可省略;安装后默认包含mysql、sys、performance_schema和information_schema四个系统数据库,不要随意修改或删除。
3.2.2 创建新数据库
CREATE DATABASE mydb;
3.2.3 选择/切换数据库
USE mydb;
执行后提示 Database changed,后续操作均在 mydb 中进行。
3.3 数据表的创建与管理
3.3.1 创建表
以用户表为例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
age INT DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
字段类型说明:
| 类型 | 说明 | 示例 |
|---|---|---|
INT |
整数 | id INT |
VARCHAR(N) |
可变长度字符串,N 为最大长度 | name VARCHAR(50) |
DATETIME |
日期时间 | created_at DATETIME |
TEXT |
长文本 | description TEXT |
DECIMAL(M,D) |
定点小数 | price DECIMAL(10,2) |
字段约束说明:
| 约束 | 含义 |
|---|---|
PRIMARY KEY |
主键,唯一标识一行 |
NOT NULL |
不允许为空 |
UNIQUE |
值必须唯一 |
DEFAULT 值 |
未指定时使用默认值 |
AUTO_INCREMENT |
自动递增(仅整数) |
CURRENT_TIMESTAMP |
自动填入当前时间 |
这里出现一些专有名词,不必担心,我们会在后续的教程中逐一介绍。
3.3.2 查看表结构
DESC users;
查看建表语句:
SHOW CREATE TABLE users;
3.3.3 查看当前数据库中的表
SHOW TABLES;
3.4 数据的增删改查(CRUD)
3.4.1 插入数据(INSERT)
单条插入:
INSERT INTO users (name, email, age) VALUES ('张三', 'zhangsan@example.com', 25);
多条插入:
INSERT INTO users (name, email, age) VALUES
('李四', 'lisi@example.com', 30),
('王五', 'wangwu@example.com', 28),
('赵六', 'zhaoliu@example.com', 22);
3.4.2 查询数据(SELECT)
查询所有列:
SELECT * FROM users;
查询指定列:
SELECT name, email FROM users;
带条件查询:
SELECT * FROM users WHERE age >= 25;
排序查询:
SELECT * FROM users ORDER BY age DESC;
分页查询:
SELECT * FROM users LIMIT 2 OFFSET 0;
LIMIT 指定返回条数,OFFSET 指定跳过多少条(第 2 页为 OFFSET 2)。
3.4.3 更新数据(UPDATE)
UPDATE users SET age = 26 WHERE name = '张三';
更新时务必带上 WHERE 条件,否则会更新表中所有行。
3.4.4 删除数据(DELETE)
DELETE FROM users WHERE name = '赵六';
同样需要 WHERE 条件,否则会清空整张表。
3.5 删除表与数据库
删除表(表结构和数据全部移除):
DROP TABLE users;
删除数据库:
DROP DATABASE mydb;
3.6 LIKE 模糊查询
SELECT * FROM users WHERE name LIKE '张%'; -- 以"张"开头的所有记录
SELECT * FROM users WHERE email LIKE '%@example.com'; -- 特定域名邮箱
退出 MySQL
EXIT;
4. 可视化应用管理数据库
通过命令行学习和操作 MySQL 能帮助理解 SQL 语法本质,但在日常开发和数据库管理中,使用可视化图形界面工具能大幅提升效率。
4.1 可视化工具概述
常用的 MySQL 图形化管理工具对比如下:
| 工具 | 特点 | 适用场景 |
|---|---|---|
| HeidiSQL | 免费开源,轻量绿色,功能完整,仅限 Windows | 日常开发管理,推荐首选 |
| MySQL Workbench | MySQL 官方出品,支持设计、开发、管理全功能 | 企业级管理和数据库建模 |
| DBeaver | 跨平台,支持多种数据库,社区版免费 | 需要同时管理多种数据库 |
| Navicat | 功能强大,界面精美,商业收费 | 商业项目和专业 DBA |
本教程以 HeidiSQL 为例,因其免费、轻量、开箱即用的特点,非常适合开发环境中使用。
4.2 下载与安装 HeidiSQL
4.2.1 下载方式
前往HeidiSQL官网或网盘(可解决网络环境不佳下载过慢的问题) 下载安装程序。
4.2.2 安装版安装步骤
运行下载的安装程序,按向导完成安装:
- 选择安装语言(支持简体中文)
- 选择安装路径(默认即可)
- 勾选"创建桌面快捷方式"
- 完成安装
4.3 使用 HeidiSQL 连接 MySQL
4.3.1 新建会话连接
打开 HeidiSQL 后,在"会话管理器"窗口中点击 "新建",填写以下信息:
| 字段 | 填写值 | 说明 |
|---|---|---|
| 网络类型 | MySQL (TCP/IP) | 保持默认 |
| 主机名 / IP | 127.0.0.1 | 本地连接可填 127.0.0.1 或 localhost |
| 用户 | root | MySQL 的 root 用户 |
| 密码 | 之前设置的密码 | 第 2.6 节设置的密码 |
| 端口 | 3306 | MySQL 默认端口 |

4.3.2 保存并打开连接
填写完成后,可给会话命名(如"本地 MySQL"),便于以后识别。点击 "打开" 按钮,即可连接到本机 MySQL 服务。
连接成功后,HeidiSQL 界面分为三个区域:
- 左侧导航树:显示所有数据库、表、视图、存储过程等对象
- 右侧上方:数据显示区或 SQL 编辑区
- 右侧下方:查询结果或消息区
4.4 通过 HeidiSQL 管理数据库
4.4.1 查看和选择数据库
在左侧导航树中展开数据库列表,可以看到所有数据库。右键单击数据库即可进行 创建数据库、删除数据库、修改字符集 等操作。双击数据库名称或单击展开,即可查看其中的数据表。
4.4.2 创建和管理数据表
右键单击某个数据库,选择 "创建新的" -> "表",在右侧的建表界面中:
- 在"名称"选项卡中填写表名(如
users) - 切换到"列"选项卡,依次添加字段:
id,类型INT,勾选"A_I"(AUTO_INCREMENT)和" NN"(NOT NULL),点击"主键"按钮设为主键name,类型VARCHAR(50),勾选" NN"email,类型VARCHAR(100),勾选" NN"和" UQ"(UNIQUE)age,类型INT,默认值填0created_at,类型DATETIME,默认值填CURRENT_TIMESTAMP3. 点击 "保存" 按钮
建表完成后,可以在左侧导航树中看到新建的表,右键选择 "编辑数据" 即可像 Excel 一样直接编辑行数据。
4.4.3 数据浏览与编辑
- 浏览数据:在左侧导航树中双击表名,右侧自动显示表中所有数据
- 编辑数据:直接在右侧数据表格中点击单元格即可修改,修改后点击 "保存更改"(或按
Ctrl + Enter) - 新增行:在数据表格最后空行直接输入,或右键选择 "插入行"
- 删除行:选中行后按
Delete键,或右键选择 "删除行"
HeidiSQL 的数据编辑功能让用户可以在不必手写 SQL 的情况下完成数据操作,非常适合快速查看和调试数据。
4.4.4 执行 SQL 查询
- 在菜单栏点击 "查询" 选项卡(或按
Ctrl + F9),打开 SQL 编辑窗口 - 在编辑区输入 SQL 语句,例如:
SELECT * FROM users WHERE age >= 25 ORDER BY age DESC;
- 点击 "执行" 按钮(或按
F9)运行 SQL - 查询结果在下方区域展示,支持导出为 CSV、HTML、JSON 等格式
4.5 实用功能列举
HeidiSQL 还包含以下常用功能:
| 功能 | 操作方式 |
|---|---|
| 导出数据 | 右键数据库或表,选择"导出数据库为 SQL" 或 "导出行" |
| 导入数据 | 右键数据库,选择"导入 SQL 文件" |
| 查看表结构 | 右键表 -> "编辑" -> "列" 选项卡 |
| 复制表结构/数据 | 右键表 -> "将数据库复制到" |
5. 通过前后端服务访问 MySQL
本节将使用 Python FastAPI 构建后端 RESTful API,配合简单的 HTML 前端页面,实现对 MySQL 中数据的增删改查操作。
5.1 准备工作
5.1.1 安装 Python 依赖
在项目目录下创建 requirements.txt:
fastapi
uvicorn
mysql-connector-python
创建环境:
# 创建环境
conda create -n fastapi-mysql python=3.10
# 激活环境
conda activate fastapi-mysql
pip install -r requirements.txt
mysql-connector-python是 MySQL 官方提供的 Python 数据库驱动,用于在 Python 中连接和操作 MySQL。
5.1.2 准备测试数据
登录 MySQL 后执行以下 SQL,创建示例数据库和表:
CREATE DATABASE IF NOT EXISTS ai_ml_tutorial DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE ai_ml_tutorial;
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
age INT DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO users (name, email, age) VALUES
('张三', 'zhangsan@example.com', 25),
('李四', 'lisi@example.com', 30),
('王五', 'wangwu@example.com', 28);
你也可以在 HeidiSQL 中执行以上 SQL 语句,创建数据库和表。
5.2 后端 API 服务
在 fastapi-mysql/ 目录下创建 main.py,限于篇幅,你可以前往网盘下载查看完整代码。
5.3 前端页面
在 fastapi-mysql/ 目录下创建 index.html,提供浏览器端交互界面,你可以前往网盘下载查看完整代码。
5.4 运行并测试
步骤一:启动后端服务
在 fastapi-mysql/ 目录下执行:
python main.py
看到以下输出表示服务启动成功:
INFO: Uvicorn running on http://0.0.0.0:8000
INFO: Application startup complete.
启动后,后端服务除了提供 API 接口外,还会自动挂载当前目录下的静态文件。直接访问 http://localhost:8000 即可看到前端管理页面。
步骤二:打开前端页面
在浏览器中访问 http://localhost:8000,即可看到用户管理界面。
后端服务同时承载了静态文件服务和 API 服务。访问根路径
/时返回index.html前端页面,页面中的 JavaScript 通过/api/*路径调用后端 API,后端再将 SQL 语句发送到 MySQL 执行,形成完整的 "浏览器 -> 后端服务 -> MySQL 数据库" 数据链路。
5.5 项目结构一览
完成后的项目目录结构如下:
MySQL的安装与基本使用教程/
├── MySQL的安装与基本使用教程.md # 本教程文件
└── examples/
└── fastapi-mysql/
├── main.py # FastAPI 后端服务
├── index.html # 前端管理页面
└── requirements.txt # Python 依赖
6. 总结
- 基础概念:关系型数据库以表为核心组织形式,使用 SQL 进行操作。MySQL 是主流的关系型数据库管理系统。
- 安装与配置:通过 Winget 可一行命令安装 MySQL,安装后需手动配置环境变量、初始化数据库、修改密码和配置字符集。
- 基础使用:通过 SQL 语句完成数据库和数据表的创建管理,以及数据的增删改查(CRUD)。
- 可视化工具:通过 HeidiSQL 等图形界面工具,可以更直观地管理数据库、编辑数据和执行查询,显著提升开发效率。
- 前后端集成:使用 Python FastAPI 作为后端 API 服务,通过
mysql-connector-python连接 MySQL 数据库,结合 HTML 前端页面实现完整的数据库应用链路。
举手提问