MySQL: MySQL数据库操作与字符集配置

最后更新:2026-08-26

数据库是存储数据的容器——操作数据库是使用 MySQL 的第一步。

本课带你掌握数据库的增删改查和字符集配置。

100%
graph TB
    A[数据库操作] --> B[CREATE DATABASE<br/>创建数据库]
    A --> C[SHOW DATABASES<br/>查看数据库]
    A --> D[USE<br/>选择数据库]
    A --> E[ALTER DATABASE<br/>修改字符集]
    A --> F[DROP DATABASE<br/>删除数据库]
    B --> B1[指定字符集 utf8mb4]
    E --> E1[修改字符集/排序规则]

1. 你将学到


2. 一个多语言网站的真实故事

(1) 痛点:中文乱码

一个开发者创建了电商数据库,插入中文商品名:

SQL
INSERT INTO products (name) VALUES ('苹果手机');
SELECT * FROM products;

结果:name 显示为 ??? 或乱码。

原因:数据库默认字符集是 latin1,不支持中文。

(2) utf8mb4 的解法

SQL
-- 创建数据库时指定 utf8mb4 字符集
CREATE DATABASE ecommerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

收益: 支持中文、日文、韩文、Emoji 表情等所有 Unicode 字符。

字符集 支持范围 推荐度
latin1 西欧字符
utf8 基本多语言(不支持 4 字节) ⚠️
utf8mb4 完整 Unicode(含 Emoji) ⭐⭐⭐

3. 创建数据库

(1) 基本语法

SQL
CREATE DATABASE [IF NOT EXISTS] database_name
[CHARACTER SET charset_name]
[COLLATE collation_name];

▶ 示例:创建数据库

SQL
-- 最简单的创建
CREATE DATABASE mydb;

-- 如果不存在才创建(推荐)
CREATE DATABASE IF NOT EXISTS mydb;

-- 指定字符集(推荐)
CREATE DATABASE IF NOT EXISTS mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- 创建电商数据库
CREATE DATABASE IF NOT EXISTS ecommerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci
COMMENT '电商系统数据库';
▶ 试一试

输出:

TEXT 📖 仅展示
Query OK, 1 row affected (0.01 sec)

4. 查看数据库

▶ 示例:查看所有数据库

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

-- 查看创建数据库的语句
SHOW CREATE DATABASE mydb;

-- 查看当前使用的数据库
SELECT DATABASE();
▶ 试一试

输出:

TEXT 📖 仅展示
+--------------------+
| Database           |
+--------------------+
| ecommerce          |
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

5. 选择数据库

▶ 示例:USE 命令

SQL
-- 选择数据库
USE ecommerce;

-- 验证当前数据库
SELECT DATABASE();
▶ 试一试

输出:

TEXT 📖 仅展示
+------------+
| DATABASE() |
+------------+
| ecommerce  |
+------------+

6. 修改数据库

▶ 示例:修改字符集

SQL
-- 修改数据库字符集
ALTER DATABASE mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- 验证修改
SHOW CREATE DATABASE mydb;
▶ 试一试

输出:

TEXT 📖 仅展示
+----------+------------------------------------------------------------------------------------------+
| Database | Create Database                                                                          |
+----------+------------------------------------------------------------------------------------------+
| mydb     | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ |
+----------+------------------------------------------------------------------------------------------+

7. 删除数据库

▶ 示例:删除数据库

SQL
-- 删除数据库
DROP DATABASE mydb;

-- 安全删除(如果存在)
DROP DATABASE IF EXISTS mydb;
▶ 试一试
⚠️ 注意: 删除数据库会永久删除其中所有表和数据,无法恢复!操作前务必确认或备份。


8. 字符集与排序规则

(1) 常用字符集

字符集 字节长度 支持字符 使用场景
ascii 1 英文+数字 纯英文场景
latin1 1 西欧字符 旧系统兼容
utf8 1-3 基本多语言 旧版兼容
utf8mb4 1-4 完整 Unicode 推荐默认

(2) 排序规则

排序规则决定字符串的比较和排序方式。

排序规则 说明 区分大小写
utf8mb4_general_ci 通用,速度快 不区分
utf8mb4_unicode_ci 准确,支持多语言 不区分
utf8mb4_bin 二进制比较 区分
💡 提示: _ci 表示 Case Insensitive(不区分大小写),_bin 表示二进制比较(区分大小写)。

▶ 示例:查看字符集

SQL
-- 查看所有字符集
SHOW CHARACTER SET;

-- 查看所有排序规则
SHOW COLLATION LIKE 'utf8mb4%';

-- 查看服务器默认字符集
SHOW VARIABLES LIKE 'character_set_server';

-- 查看数据库字符集
SHOW VARIABLES LIKE 'character_set_database';
▶ 试一试

输出:

TEXT 📖 仅展示
+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_server     | utf8mb4                                       |
+--------------------------+-----------------------------------------------+

9. 数据库备份与恢复

▶ 示例:mysqldump 备份

BASH
# 备份单个数据库
mysqldump -u root -p mydb > mydb_backup.sql

# 备份所有数据库
mysqldump -u root -p --all-databases > all_backup.sql

# 只备份表结构
mysqldump -u root -p --no-data mydb > mydb_schema.sql

# 备份指定表
mysqldump -u root -p mydb users orders > tables_backup.sql

▶ 示例:恢复数据库

BASH
# 从备份文件恢复
mysql -u root -p mydb < mydb_backup.sql

# 在 MySQL 命令行中恢复
mysql> SOURCE /path/to/mydb_backup.sql;

❓ 常见问题

Q utf8 和 utf8mb4 有什么区别?
A utf8 最多 3 字节,不支持 Emoji 等 4 字节字符。utf8mb4 是完整的 UTF-8,推荐始终使用 utf8mb4。
Q 数据库名可以改吗?
A MySQL 不支持直接重命名数据库。可以创建新数据库,把表迁移过去,然后删除旧库。
Q 如何查看数据库大小?
A 查询 information_schemaSELECT table_schema, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS size_mb FROM information_schema.tables GROUP BY table_schema;
Q DROP DATABASE 和 TRUNCATE DATABASE 区别?
A DROP 删除整个数据库(结构+数据),TRUNCATE 只清空数据保留结构(MySQL 没有 TRUNCATE DATABASE,需逐表 TRUNCATE)。
Q 字符集设置错了怎么改?
A 用 ALTER DATABASE 修改库字符集,用 ALTER TABLE 修改表字符集,用 CONVERT TO 转换已有数据。

📖 小节


📝 作业

  1. 基础题(难度⭐):创建一个名为 school 的数据库,字符集为 utf8mb4,排序规则为 utf8mb4_unicode_ci

  2. 进阶题(难度⭐⭐):查看 school 数据库的创建语句,确认字符集配置正确。然后创建一个测试表,插入包含 Emoji 的数据验证支持。

  3. 挑战题(难度⭐⭐⭐):编写一个备份脚本,备份 school 数据库到 backup/ 目录,文件名包含日期(如 school_20260703.sql)。

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏