MySQL Workbench 完整教程
MySQL Workbench 是一款由 MySQL 官方提供的,集数据库设计、开发、管理于一体的可视化工具,它极大地简化了数据库操作,是 MySQL 用户必备的利器。

本教程将分为以下几个部分:
-
第一部分:入门与环境准备
- 什么是 MySQL Workbench?
- 下载、安装与首次启动
- 界面概览
-
第二部分:核心功能详解
- 数据建模 - 可视化设计数据库
- SQL 开发 - 编写、执行和管理 SQL
- 服务器管理 - 用户、权限与数据导入导出
-
第三部分:实战演练
(图片来源网络,侵删)- 从零开始创建一个“学生-课程”数据库
- 使用 SQL 开发器进行增删改查
-
第四部分:进阶技巧与常见问题
- 常用快捷键
- 数据同步与迁移
- 常见问题与解决方案
第一部分:入门与环境准备
什么是 MySQL Workbench?
MySQL Workbench 就是为 MySQL 数据库准备的 "图形化界面",它让你无需记忆复杂的命令行指令,通过点击、拖拽和填写表单就能完成绝大多数数据库操作,主要功能包括:
- 数据建模: 像画图一样设计数据库表结构(EER图)。
- SQL 开发: 编写、执行 SQL 查询,管理数据。
- 服务器管理: 创建用户、分配权限、备份和恢复数据库。
下载、安装与首次启动
- 下载: 访问 MySQL 官网 https://dev.mysql.com/downloads/workbench/,选择与你操作系统匹配的版本进行下载。
- 安装: 按照安装向导的提示进行安装,过程非常简单,一直点击 "Next" 即可。
- 启动: 安装完成后,从开始菜单或启动台找到 MySQL Workbench 并打开。
界面概览
首次启动后,你会看到主界面,主要有三个区域:
- A. 导航栏: 包含文件、编辑、视图、数据库等菜单。
- B. 主页/仪表盘: 提供了快速连接到现有 MySQL 服务器的入口,以及创建新模型、导入等常用功能的快捷方式。
- C. 状态栏: 显示连接状态、服务器信息等。
当你成功连接到一个 MySQL 服务器后,界面会切换到 SQL 开发 界面,这是最常用的界面,主要由四个部分组成:

- 工具栏: 包含执行、解释、格式化等常用操作的快捷按钮。
- SQL 编辑器: 在这里编写你的 SQL 语句。
- 结果网格: 执行查询后,数据会以表格形式显示在这里。
- 对象浏览器: 显示当前连接的服务器、数据库、表、视图、存储过程等所有数据库对象,你可以在这里右键点击对象进行快速操作(如查询数据、编辑表结构等)。
第二部分:核心功能详解
数据建模 - 可视化设计数据库
这是 Workbench 的王牌功能,尤其适合在项目初期进行数据库设计。
-
创建新模型:
- 在主页点击 号,选择
Add Diagram。 - 或者,在菜单栏选择
Database->Reverse Engineer...(反向工程,从现有数据库生成模型图) 或Create EER Model from DDL...(从 SQL 文件创建)。
- 在主页点击 号,选择
-
创建表:
- 在右侧的 "Physical Schemas" 面板中,右键点击你的数据库,选择
Create Table。 - 在弹出的窗口中,填写表名、列名、数据类型、是否为主键、是否允许为空等。
- 你可以在下方的
Indexes和Foreign Keys选项卡中为表添加索引和外键。
- 在右侧的 "Physical Schemas" 面板中,右键点击你的数据库,选择
-
建立表关系:
- 从一个表的 主键 字段拖拽到另一个表的 外键 字段。
- 会弹出一个窗口让你设置关系的类型(一对一、一对多、多对多),确认后即可生成一条连接线。
- 一对多关系是最常见的,例如一个学生可以选多门课程,一个课程可以被多个学生选。
-
同步模型到数据库:
- 设计完成后,需要将模型应用到真实的数据库中。
- 在菜单栏选择
Database->Forward Engineer...。 - Workbench 会根据你的 EER 图自动生成
CREATE TABLE等SQL语句,并执行它们,在数据库中创建相应的表结构。
SQL 开发 - 编写、执行和管理 SQL
这是日常工作中最频繁使用的功能。
-
连接到服务器:
- 在主页,点击 号,创建一个新的 MySQL 连接。
- 填写连接名称、主机名(通常是
localhost)、端口号(默认3306)、用户名和密码。 - 点击 "Test Connection" 测试是否成功,"OK" 保存。
- 双击该连接即可进入 SQL 开发界面。
-
编写和执行 SQL:
- 在 SQL 编辑器中输入你的 SQL 语句,
SELECT * FROM students;。 - 点击工具栏上的 闪电图标 (Execute) 或按快捷键
Ctrl + Enter来执行当前选中的 SQL 语句。 - 如果没有选中任何语句,则会执行整个编辑器里的内容。
- 在 SQL 编辑器中输入你的 SQL 语句,
-
结果集操作:
- 查看数据: 执行
SELECT后,结果会显示在结果网格中。 - 编辑数据: 在结果网格中,直接点击单元格即可修改数据(仅对
SELECT ... FOR UPDATE或特定场景有效,更推荐使用UPDATE语句),右键点击行可以选择Delete Row。 - 导出数据: 右键点击结果网格的表头,选择
Export Resultset...,可以将数据导出为 CSV, Excel, JSON 等格式。
- 查看数据: 执行
-
对象浏览器操作:
- 查看表结构: 在对象浏览器中展开
Tables,右键点击一个表,选择Alter Table...可以修改表结构。 - 查询数据: 右键点击一个表,选择
Select Rows - Limit 1000,会自动生成一个SELECT * FROM table_name LIMIT 1000;的语句并执行,非常方便。 - 创建/删除对象: 可以右键点击数据库、表、视图等,进行创建、删除、重命名等操作。
- 查看表结构: 在对象浏览器中展开
服务器管理 - 用户、权限与数据导入导出
-
管理用户和权限:
- 在 SQL 开发界面的对象浏览器顶部,点击
Management标签页。 - 选择
Users and Privileges。 - 在这里你可以创建新用户、修改密码、为用户授予特定数据库或表的权限(如
SELECT,INSERT,UPDATE,DELETE,ALL等)。
- 在 SQL 开发界面的对象浏览器顶部,点击
-
数据导入/导出:
- 导出: 在
Management标签页,选择Data Export,你可以选择要导出的数据库或表,选择导出格式(SQL, CSV, etc.),并设置是否包含CREATE TABLE语句和INSERT语句,最后点击 "Start Export"。 - 导入: 在
Management标签页,选择Data Import,你可以选择一个.sql文件或一个.zip压缩包进行导入,它还提供了一个非常有用的功能 "Migration",可以让你从其他数据库(如 SQL Server, PostgreSQL)迁移数据到 MySQL。
- 导出: 在
第三部分:实战演练
从零开始创建一个“学生-课程”数据库
假设我们要设计一个简单的选课系统,包含学生表和课程表,一个学生可以选多门课,一门课也可以被多个学生选。
- 创建新模型: 打开 Workbench,点击 ->
Add Diagram。 - 创建学生表:
- 右键点击
sakila(或其他默认数据库),选择Create Table。 - 表名填入
students。 - 添加两列:
id: INT, 勾选PK(主键),NN(非空),AI(自增)。name: VARCHAR(50), 勾选NN。
- 右键点击
- 创建课程表:
- 同样方法创建
courses表。 - 添加两列:
id: INT,PK,NN,AI。course_name: VARCHAR(100),NN。
- 同样方法创建
- 创建选课表 (关联表):
- 创建一个名为
student_course_selection的表。 - 添加三列:
student_id: INT,NN。course_id: INT,NN。selection_date: DATE。
- 选中
student_id和course_id,在下方Indexes选项卡,点击 号创建一个 主键,因为一个学生选一门课是唯一的。
- 创建一个名为
- 建立关系:
- 从
students表的id字段拖拽到student_course_selection表的student_id字段,在弹窗中选择One to many。 - 从
courses表的id字段拖拽到student_course_selection表的course_id字段,同样选择One to many。
- 从
- 同步到数据库:
- 点击菜单
Database->Forward Engineer...。 - 按照向导操作,它会提示你输入连接信息(如果还没连接),然后执行生成的 SQL,创建这三个表。
- 你可以去 SQL 开发器里刷新一下,就能看到这三个新表了。
- 点击菜单
使用 SQL 开发器进行增删改查
继续上面的例子,我们向表中添加一些数据并进行查询。
-
连接数据库 并打开 SQL 编辑器。
-
插入数据:
-- 向学生表插入数据 INSERT INTO students (name) VALUES ('张三'); INSERT INTO students (name) VALUES ('李四'); INSERT INTO students (name) VALUES ('王五'); -- 向课程表插入数据 INSERT INTO courses (course_name) VALUES ('数据库原理'); INSERT INTO courses (course_name) VALUES ('计算机网络'); INSERT INTO courses (course_name) VALUES ('操作系统');执行这些语句。
-
查询数据:
-- 查询所有学生 SELECT * FROM students; -- 查询所有课程 SELECT * FROM courses;
执行并查看结果。
-
通过关联表插入选课记录:
-- 张三 选了 数据库原理 和 计算机网络 INSERT INTO student_course_selection (student_id, course_id, selection_date) VALUES (1, 1, '2025-10-01'); INSERT INTO student_course_selection (student_id, course_id, selection_date) VALUES (1, 2, '2025-10-02'); -- 李四 选了 数据库原理 INSERT INTO student_course_selection (student_id, course_id, selection_date) VALUES (2, 1, '2025-10-01');
执行这些语句。
-
多表查询 (JOIN): 这是查询的核心,查询“张三”选了哪些课程。
SELECT s.name AS student_name, c.course_name FROM students s JOIN student_course_selection scs ON s.id = scs.student_id JOIN courses c ON scs.course_id = c.id WHERE s.name = '张三';执行此查询,你将得到张三所选的课程列表。
第四部分:进阶技巧与常见问题
常用快捷键
Ctrl + Enter: 执行当前选中的 SQL 语句或全部语句。Ctrl + /: 注释/取消注释选中的行。Ctrl + Shift + /: 注释/取消注释选中的块。Ctrl + D: 复制选中的行。Ctrl + Up/Down: 在 SQL 语句间快速移动。F5: 刷新对象浏览器。
数据同步与迁移
- 同步差异: 在数据建模界面,菜单
Database->Synchronize Model...,它会比较你的 EER 模型和当前数据库结构的差异,然后生成ALTER TABLE等语句来同步数据库,这是一个安全且高效的方式。 - 数据库迁移:
Management->Migration,这是一个强大的工具,可以引导你完成从其他数据库到 MySQL 的整个迁移过程,包括数据类型转换、数据迁移等。
常见问题与解决方案
-
Q: 无法连接到服务器,报错 "Can't connect to MySQL server on 'localhost' (10061)"
- A: 通常是因为 MySQL 服务没有启动,请检查你的 MySQL 服务是否正在运行。
- Windows: 在服务列表中找到 "MySQL80" (或你的版本) 并启动。
- macOS (使用 Homebrew):
brew services start mysql - Linux (Ubuntu/Debian):
sudo systemctl start mysql
- A: 通常是因为 MySQL 服务没有启动,请检查你的 MySQL 服务是否正在运行。
-
Q: 忘记 root 密码怎么办?
- A: 需要以跳过权限验证的方式启动 MySQL,然后重置密码,具体步骤请查阅官方文档,因为不同版本的 MySQL 操作略有不同。
-
Q: 中文乱码问题
- A: 这通常是由于数据库、表的字符集设置不正确导致的,确保你的数据库、表和所有相关字段的字符集都设置为
utf8mb4(推荐,支持 Emoji 和完整的 Unicode 字符)。 - 在创建数据库和表时,指定字符集:
CREATE DATABASE my_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- A: 这通常是由于数据库、表的字符集设置不正确导致的,确保你的数据库、表和所有相关字段的字符集都设置为
MySQL Workbench 是一个功能强大且易于使用的工具,通过本教程,你已经掌握了它的核心功能:
- 使用 数据建模 功能进行可视化的数据库设计。
- 使用 SQL 开发 功能进行日常的数据操作和查询。
- 使用 服务器管理 功能进行用户和权限的维护。
建议你多加练习,将这些知识应用到你的实际项目中,熟练使用 Workbench 将会大大提高你的数据库工作效率。
