跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
SQL

MySQL 数据库核心操作:创建、修改与备份恢复

MySQL 数据库操作涵盖创建、字符集配置、查看修改删除及备份恢复。创建时需指定字符集与校验规则,推荐使用 utf8_general_ci。日常操作包括 show databases 查看库列表,alter database 修改属性,drop database 删除库需加 IF EXISTS 防错。数据备份使用 mysqldump 工具,生产环境建议定时自动备份并存储异地。连接排查通过 show processlist 监控慢 SQL 与非法入侵。掌握这些基础操作是后续表操作与索引优化的前提,规范编码与权限管理保障数据安全。

Kubernet发布于 2026/3/22更新于 2026/4/265 浏览
MySQL 数据库核心操作:创建、修改与备份恢复

一、创建数据库:基础语法与个性化配置

创建数据库是操作 MySQL 的第一步,看似简单的一句命令,背后却藏着字符集、校验规则的关键配置,选对配置能让后续的开发和数据管理少走很多弯路。

1. 核心创建语法

MySQL 中创建数据库的官方语法如下,其中大写部分为关键字,中括号 [] 内的为可选项,也是实际开发中需要重点关注的部分:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]; 

其中 create_specification 用于配置数据库的核心属性,主要包含两项:

[DEFAULT] CHARACTER SET charset_name; -- 指定数据库字符集
[DEFAULT] COLLATE collation_name; -- 指定字符集的校验规则

这里有两个关键的小细节需要注意:

IF NOT EXISTS:可选但建议必加,避免创建已存在的数据库时抛出错误,让 SQL 语句更健壮; DEFAULT 关键字:可省略,不影响功能,写出来会让语法更清晰,明确是设置默认属性。

2. 实战创建案例

结合语法,我们分三种常见场景演示数据库的创建,覆盖从简单到个性化配置的全部情况。

场景 1:基础创建,使用系统默认配置

如果创建时不指定字符集和校验规则,MySQL 会使用默认的字符集 utf8,校验规则 utf8_general_ci,这也是开发中最常用的默认配置:

-- 创建名为 db1 的数据库,使用默认字符集和校验规则
create database db1;
场景 2:指定字符集,使用默认校验规则

如果需要自定义字符集,可通过 charset 关键字指定,校验规则会沿用该字符集的默认值:

-- 创建名为 db2 的数据库,指定字符集为 utf8
create database db2 charset=utf8;
场景 3:同时指定字符集和校验规则

针对有特殊需求的场景(比如区分大小写查询),可以同时指定字符集和对应的校验规则:

-- 创建名为 db3 的数据库,指定 utf8 字符集和 utf8_general_ci 校验规则
create database db3 charset=utf8 collate utf8_general_ci;

二、字符集与校验规则:MySQL 库的灵魂配置

字符集和校验规则是 MySQL 数据库的核心属性,字符集决定了数据库能存储哪些语言的字符(比如 utf8 支持中文,latin1 不支持中文),校验规则则决定了数据的查询、排序规则(比如是否区分大小写)。很多开发中的乱码、查询结果不符合预期问题,根源都是这两个配置出了问题。

1. 查看系统默认配置

想要知道当前 MySQL 的默认字符集和校验规则,可通过以下两条 SQL 语句查询,这是开发前的必备操作,避免因默认配置不符导致问题:

-- 查看系统默认字符集
show variables like 'character_set_database';
-- 查看系统默认校验规则
show variables like 'collation_database';

2. 查看 MySQL 支持的所有字符集和校验规则

MySQL 支持多种字符集和对应的校验规则,可通过以下语句查看完整列表,根据需求选择:

-- 查看 MySQL 支持的所有字符集
show charset;
-- 查看 MySQL 支持的所有校验规则
show collation;

关键提醒:utf8 是目前开发中的主流字符集,支持多语言字符,也是 MySQL 的默认选择,除非有特殊历史需求,否则不建议使用 latin1 等不支持中文的字符集。

3. 校验规则的实际影响:区分 / 不区分大小写

校验规则的核心作用体现在 数据查询 和 结果排序 上,最典型的就是 utf8_general_ci(不区分大小写)和 utf8_bin(区分大小写)的区别,我们通过实战案例直观感受。

案例 1:使用 utf8_general_ci(不区分大小写)
-- 创建数据库 test1,指定校验规则为 utf8_general_ci
create database test1 collate utf8_general_ci;
use test1;
-- 创建测试表并插入数据
create table person(name varchar(20));
insert into person values('a'),('A'),('b'),('B');
-- 查询 name='a' 的数据
select * from person where name='a';
-- 按 name 排序
select * from person order by name;

查询结果:查询 name='a' 时,会同时返回 a 和 A;排序时不区分大小写,按字母顺序排列。

案例 2:使用 utf8_bin(区分大小写)
-- 创建数据库 test2,指定校验规则为 utf8_bin
create database test2 collate utf8_bin;
use test2;
-- 创建测试表并插入相同数据
create table person(name varchar(20));
insert into person values('a'),('A'),('b'),('B');
-- 查询 name='a' 的数据
select * from person where name='a';
-- 按 name 排序
select * from person order by name;

查询结果:查询 name='a' 时,只返回 a;排序时区分大小写,大写字母会排在前面(A、B 在前,a、b 在后)。

核心结论:如果是用户信息、用户名等需要区分大小写的场景,可使用 utf8_bin;如果是普通业务数据,建议使用 utf8_general_ci,提升查询的灵活性。

三、操纵数据库:查看、修改、删除的全套操作

创建数据库后,日常的操纵操作主要包括 查看数据库信息、修改数据库配置、删除无用数据库,这部分操作语法简单,但需要注意操作的安全性(尤其是删除)。

1. 查看数据库:掌握当前 MySQL 的库信息

场景 1:查看 MySQL 中所有的数据库

这条语句是最常用的,能快速获取当前 MySQL 服务中存在的所有数据库,包括系统库和自定义库:

show databases;
场景 2:查看指定数据库的创建语句

想要知道某个数据库的详细配置(比如字符集、校验规则),可通过该语句查询,能看到数据库的完整创建语法,包括 MySQL 的版本兼容配置:

-- 查看 mytest 数据库的创建语句
show create database mytest;

查询结果示例:

| Database | Create Database |
|----------|-----------------|
| mytest   | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */ |

这里有两个关键细节需要理解:

数据库名的反引号 `:用于防止数据库名与 MySQL 关键字重复,是良好的编码习惯; /*!40100 DEFAULT CHARACTER SET utf8 */:这不是注释!表示当前 MySQL 版本大于 4.01 时,自动执行该语句,实现版本兼容。

2. 修改数据库:仅修改字符集和校验规则

MySQL 中对数据库的修改 仅支持字符集和校验规则的修改,不支持修改数据库名(如果需要修改库名,建议新建库后迁移数据),核心语法如下:

ALTER DATABASE db_name [alter_spacification [,alter_spacification]...];
-- 其中 alter_spacification 与创建时一致
[DEFAULT] CHARACTER SET charset_name;
[DEFAULT] COLLATE collation_name;
实战案例:修改数据库的字符集

将 mytest 数据库的字符集从默认的 utf8 修改为 gbk,并验证修改结果:

-- 修改 mytest 的字符集为 gbk
alter database mytest charset=gbk;
-- 验证修改结果
show create database mytest;

修改后结果:

| Database | Create Database |
|----------|-----------------|
| mytest   | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET gbk */ |

3. 删除数据库:谨慎操作,避免数据丢失

删除数据库是高危操作,执行后数据库对应的文件夹会被彻底删除,库内的所有表和数据也会被级联删除,且无法恢复,核心语法如下:

DROP DATABASE [IF EXISTS] db_name;

关键提醒:

IF EXISTS:必加!避免删除不存在的数据库时抛出错误;生产环境中,禁止直接执行删除数据库的语句,如需删除,需先做数据备份,且经过审批;开发环境中,删除前确认数据库无用,避免误删开发数据。

执行结果:

MySQL 中无法再查询到该数据库;数据库对应的物理文件夹被删除;库内的所有表、数据被级联删除。

四、数据库的备份与恢复:数据安全的最后一道防线

数据是项目的核心资产,无论是开发环境还是生产环境,数据库的备份都是必备操作。MySQL 提供了 mysqldump 工具实现备份,通过 source 命令实现恢复,支持单库、单表、多库等多种备份场景,我们逐一讲解。

1. 备份的核心工具:mysqldump

mysqldump 是 MySQL 自带的备份工具,基于命令行执行(需退出 MySQL 连接,在 bash/CMD 中操作),核心语法如下:

# 基础语法:备份单个数据库
mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名 > 备份文件存储路径/备份文件名.sql

参数说明:

-P:指定 MySQL 的端口号,默认 3306,可省略; -u:指定连接 MySQL 的用户名; -p:指定连接 MySQL 的密码,密码与 -p 之间无空格; -B:关键参数,用于备份数据库,包含数据库的创建语句; >:重定向符号,将备份的内容写入指定的 sql 文件。

2. 多场景备份实战

场景 1:备份单个完整数据库

将 mytest 数据库备份到 D 盘根目录,备份文件名为 mytest.sql(MySQL 端口 3306,用户名 root,密码 123456):

# bash/CMD 中执行,退出 MySQL 连接
mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql

备份后的 sql 文件包含了 数据库创建语句、表创建语句、数据插入语句,相当于保存了数据库的完整镜像。

场景 2:备份数据库中的单个 / 多个表

如果不需要备份整个数据库,仅需备份部分表,可在数据库名后指定表名,多个表名用空格分隔:

# 备份 mytest 数据库中的 person 表和 user 表
mysqldump -u root -p123456 mytest person user > D:/mytest_tables.sql
场景 3:同时备份多个数据库

通过 -B 参数后跟多个数据库名,可实现多库批量备份,适合整库迁移的场景:

# 同时备份 mytest、db1、db2 三个数据库
mysqldump -u root -p123456 -B mytest db1 db2 > D:/multi_db.sql

3. 数据库恢复实战:source 命令

恢复数据库需在 MySQL 连接中执行,核心命令是 source,通过读取备份的 sql 文件,自动执行其中的 SQL 语句,实现数据库、表、数据的恢复,语法如下:

-- MySQL 中执行,恢复指定备份文件
source 备份文件的绝对路径;
实战案例:恢复 mytest 数据库
-- 登录 MySQL 后执行
source D:/mytest.sql;

4. 备份与恢复的关键注意事项

这部分是避坑重点,很多小伙伴恢复失败都是因为忽略了这些细节:

-B 参数的重要性:如果备份时未加 -B 参数,备份文件中会缺少数据库的创建语句,恢复时需要 先手动创建空数据库,并使用 use 数据库名; 指定数据库,再执行 source 命令; 路径问题:备份和恢复时建议使用 绝对路径,避免相对路径导致的文件找不到问题; 权限问题:执行 mysqldump 的用户需要有数据库的查询权限,恢复时的用户需要有数据库的创建、插入权限; 编码问题:备份文件的编码与数据库字符集保持一致,避免恢复后出现乱码; 生产环境备份策略:生产环境建议采用 定时自动备份(比如 crontab 定时任务),并将备份文件存储在独立的服务器,避免原服务器故障导致备份文件丢失。

五、查看数据库连接情况:排查数据库卡顿与入侵

在实际开发和运维中,经常会遇到数据库卡顿、响应慢的问题,甚至可能出现数据库被非法入侵的情况,MySQL 提供了 show processlist 命令,能实时查看当前的数据库连接情况,快速定位问题。

1. 核心语法

-- 查看当前所有的 MySQL 连接
show processlist;

2. 结果解析

执行后会返回当前所有的连接信息,核心字段说明:

字段含义
Id连接的唯一标识
User连接数据库的用户名
Host连接的客户端 IP 和端口
db该连接正在使用的数据库
Command连接的当前状态(Sleep/Query 等)
Time状态持续的时间(秒)
State连接的详细状态
Info该连接正在执行的 SQL 语句

3. 实战应用场景

排查数据库卡顿:如果数据库响应慢,执行 show processlist 后,若发现大量 Query 状态的连接,且 Time 数值很大,说明有慢 SQL 正在执行,可通过 Info 字段查看具体 SQL,进行优化; 排查非法入侵:如果发现 User 和 Host 字段中有陌生的用户名或非内网的 IP 地址,说明数据库可能被非法入侵,需立即修改数据库密码,关闭高危端口; 释放无效连接:如果发现大量 Sleep 状态的连接,且 Time 数值很大,说明存在大量无效连接,可通过 kill 连接 Id; 命令释放,也可通过配置 MySQL 的超时参数自动释放。

示例:杀死 Id 为 2 的无效连接

kill 2;

六、MySQL 库操作的核心避坑指南与最佳实践

通过以上内容,我们掌握了 MySQL 库的全套操作,最后总结一些实战中的避坑指南和最佳实践,让你的操作更规范、更安全。

1. 核心避坑点

创建数据库必加 IF NOT EXISTS:避免重复创建抛出错误,让 SQL 更健壮; 禁止直接删除生产库:删除前先备份,生产环境建议做删除权限管控; 备份必加 - B 参数:避免恢复时缺少库创建语句,导致恢复失败; 字符集优先选择 utf8:避免中文乱码,不建议使用 latin1 等小众字符集; 查看连接时关注陌生 IP:及时发现数据库的非法入侵行为。

2. 最佳实践

关键字大写,库名 / 表名小写:符合 MySQL 的编码规范,提升 SQL 的可读性; 库名 / 表名使用反引号:防止与 MySQL 关键字重复; 定时备份数据库:生产环境采用 '本地备份 + 异地备份' 的双重策略; 限制数据库用户权限:遵循最小权限原则,开发用户仅赋予查询、插入、更新权限,不赋予删除、创建库的权限; 定期查看数据库连接:及时释放无效连接,优化慢 SQL,保证数据库性能。

总结

MySQL 库的操作是 MySQL 入门的基础,也是后续表、数据、索引操作的前提,本文从 创建数据库 入手,讲解了字符集和校验规则的核心配置,再到 查看、修改、删除 的日常操纵,最后重点讲解了 备份恢复 和 连接排查 的实战技巧,覆盖了开发和运维中最常用的所有场景。

其实 MySQL 的库操作并不复杂,关键在于把 字符集、校验规则、-B 参数 这些细节掌握到位,同时养成 规范编码、定时备份、谨慎删除 的良好习惯。掌握这些内容后,你就能轻松应对日常的数据库管理工作,为后续的 MySQL 进阶学习打下坚实的基础。

目录

  1. 一、创建数据库:基础语法与个性化配置
  2. 1. 核心创建语法
  3. 2. 实战创建案例
  4. 场景 1:基础创建,使用系统默认配置
  5. 场景 2:指定字符集,使用默认校验规则
  6. 场景 3:同时指定字符集和校验规则
  7. 二、字符集与校验规则:MySQL 库的灵魂配置
  8. 1. 查看系统默认配置
  9. 2. 查看 MySQL 支持的所有字符集和校验规则
  10. 3. 校验规则的实际影响:区分 / 不区分大小写
  11. 案例 1:使用 utf8generalci(不区分大小写)
  12. 案例 2:使用 utf8_bin(区分大小写)
  13. 三、操纵数据库:查看、修改、删除的全套操作
  14. 1. 查看数据库:掌握当前 MySQL 的库信息
  15. 场景 1:查看 MySQL 中所有的数据库
  16. 场景 2:查看指定数据库的创建语句
  17. 2. 修改数据库:仅修改字符集和校验规则
  18. 实战案例:修改数据库的字符集
  19. 3. 删除数据库:谨慎操作,避免数据丢失
  20. 四、数据库的备份与恢复:数据安全的最后一道防线
  21. 1. 备份的核心工具:mysqldump
  22. 基础语法:备份单个数据库
  23. 2. 多场景备份实战
  24. 场景 1:备份单个完整数据库
  25. bash/CMD 中执行,退出 MySQL 连接
  26. 场景 2:备份数据库中的单个 / 多个表
  27. 备份 mytest 数据库中的 person 表和 user 表
  28. 场景 3:同时备份多个数据库
  29. 同时备份 mytest、db1、db2 三个数据库
  30. 3. 数据库恢复实战:source 命令
  31. 实战案例:恢复 mytest 数据库
  32. 4. 备份与恢复的关键注意事项
  33. 五、查看数据库连接情况:排查数据库卡顿与入侵
  34. 1. 核心语法
  35. 2. 结果解析
  36. 3. 实战应用场景
  37. 六、MySQL 库操作的核心避坑指南与最佳实践
  38. 1. 核心避坑点
  39. 2. 最佳实践
  40. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Stable Diffusion 文生图保姆级入门指南
  • CVE-2026-21962 Oracle WebLogic 代理插件未授权 RCE 检测与利用
  • 2025 上海市人工智能训练师高级/三级考试介绍与复习
  • 企业级供应商管理系统开发实践与技术选型总结
  • 系统开发成本高企?低代码的工程化降本路径
  • 渗透测试之电脑(PC)端小程序抓包教程
  • Neo4j 图数据库实战:从数据建模到 Python 应用
  • Copilot vs Claude Code终极对决哪个会更好用呢?
  • 各无人机厂家对 RemoteID 支持情况汇总
  • PostgreSQL 模式(Schema)详解:数据库对象命名空间管理
  • 数据结构:树、森林与二叉树的转换详解
  • Windows 10/11 下 WSL2 安装 Ubuntu 20.04 至 D 盘全流程指南
  • Python 环境搭建指南:从下载到运行 Hello World
  • 使用 wechat-need-web 插件实现浏览器访问微信网页版
  • Selenium Web 自动化测试框架入门与实战
  • Openclaw 连接本地 Ollama 与 Qwen WebUI 无响应问题排查
  • Web 开发技术全景:从基础原理到全栈架构与未来趋势
  • Java 中的 CAS 机制详解
  • CentOS 下定时执行 Python 邮件任务的五种方案
  • DCT-Net 线稿上色与云端 GPU 双模型协作流程

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online