MySQL 是目前最流行的开源关系型数据库管理系统之一,广泛应用于各类 Web 应用和软件开发项目中。本教程将从零开始,依次介绍数据库的基础概念、MySQL 在 Windows 环境下的安装流程、SQL 语言的基本使用,以及如何通过 Python 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(数据定义语言):定义数据库结构,如创建/修改/删除表和数据库。关键字:CREATEALTERDROP
  • DML(数据操作语言):操作表中的数据,如增删改查。关键字:INSERTUPDATEDELETESELECT
  • DCL(数据控制语言):控制访问权限。关键字:GRANTREVOKE

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 中,因此需要手动配置才能直接在终端中使用 mysqlmysqld 命令。

2.4.2 添加 MySQL 到系统 PATH

方式一:命令行添加(推荐,需管理员权限)

[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\Program Files\MySQL\MySQL Server 8.4\bin", "Machine")

执行后必须关闭当前终端并重新打开,环境变量才能生效。

方式二:图形界面添加

  1. Win + X 键,选择 "系统"
  2. 在右侧点击 "高级系统设置"
  3. 点击 "环境变量"
  4. "系统变量" 中找到 Path 变量,双击编辑
  5. 点击 "新建",添加以下路径:
    C:\Program Files\MySQL\MySQL Server 8.4\bin
    
  6. 依次点击 "确定" 保存所有对话框
  7. 重新打开终端 使配置生效

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;

注意:; 不可省略;安装后默认包含 mysqlsysperformance_schemainformation_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 安装版安装步骤

运行下载的安装程序,按向导完成安装:

  1. 选择安装语言(支持简体中文)
  2. 选择安装路径(默认即可)
  3. 勾选"创建桌面快捷方式"
  4. 完成安装

4.3 使用 HeidiSQL 连接 MySQL

4.3.1 新建会话连接

打开 HeidiSQL 后,在"会话管理器"窗口中点击 "新建",填写以下信息:

字段 填写值 说明
网络类型 MySQL (TCP/IP) 保持默认
主机名 / IP 127.0.0.1 本地连接可填 127.0.0.1localhost
用户 root MySQL 的 root 用户
密码 之前设置的密码 第 2.6 节设置的密码
端口 3306 MySQL 默认端口

使用 HeidiSQL 连接 MySQL示意图

4.3.2 保存并打开连接

填写完成后,可给会话命名(如"本地 MySQL"),便于以后识别。点击 "打开" 按钮,即可连接到本机 MySQL 服务。

连接成功后,HeidiSQL 界面分为三个区域:

  • 左侧导航树:显示所有数据库、表、视图、存储过程等对象
  • 右侧上方:数据显示区或 SQL 编辑区
  • 右侧下方:查询结果或消息区

4.4 通过 HeidiSQL 管理数据库

4.4.1 查看和选择数据库

在左侧导航树中展开数据库列表,可以看到所有数据库。右键单击数据库即可进行 创建数据库删除数据库修改字符集 等操作。双击数据库名称或单击展开,即可查看其中的数据表。

4.4.2 创建和管理数据表

右键单击某个数据库,选择 "创建新的" -> "表",在右侧的建表界面中:

  1. 在"名称"选项卡中填写表名(如 users
  2. 切换到"列"选项卡,依次添加字段:
  • id,类型 INT,勾选"A_I"(AUTO_INCREMENT)和" NN"(NOT NULL),点击"主键"按钮设为主键
  • name,类型 VARCHAR(50),勾选" NN"
  • email,类型 VARCHAR(100),勾选" NN"和" UQ"(UNIQUE)
  • age,类型 INT,默认值填 0
  • created_at,类型 DATETIME,默认值填 CURRENT_TIMESTAMP 3. 点击 "保存" 按钮

建表完成后,可以在左侧导航树中看到新建的表,右键选择 "编辑数据" 即可像 Excel 一样直接编辑行数据。

4.4.3 数据浏览与编辑

  • 浏览数据:在左侧导航树中双击表名,右侧自动显示表中所有数据
  • 编辑数据:直接在右侧数据表格中点击单元格即可修改,修改后点击 "保存更改"(或按 Ctrl + Enter
  • 新增行:在数据表格最后空行直接输入,或右键选择 "插入行"
  • 删除行:选中行后按 Delete 键,或右键选择 "删除行"

HeidiSQL 的数据编辑功能让用户可以在不必手写 SQL 的情况下完成数据操作,非常适合快速查看和调试数据。

4.4.4 执行 SQL 查询

  1. 在菜单栏点击 "查询" 选项卡(或按 Ctrl + F9),打开 SQL 编辑窗口
  2. 在编辑区输入 SQL 语句,例如:
SELECT * FROM users WHERE age >= 25 ORDER BY age DESC;
  1. 点击 "执行" 按钮(或按 F9)运行 SQL
  2. 查询结果在下方区域展示,支持导出为 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 前端页面实现完整的数据库应用链路。