前言
在日常开发或数据管理中,与 MySQL 数据库打交道时,我们最常遇到的需求往往不是复杂的架构设计,而是 “如何创建一个数据库”“怎么查看字符集是否正确”“备份的数据该怎么恢复” 这类基础操作。这些看似简单的步骤,却是保证数据安全、避免乱码或误删风险的关键 —— 比如没设置正确的校验规则可能导致中文排序异常,误删数据库前没备份会直接造成数据丢失,连不上数据库时不知道如何查看连接情况则会卡住业务进度。
为了帮大家系统掌握这些 “高频基础操作”,这篇博客会围绕 MySQL 数据库的核心日常管理展开:从最基础的 “查看已有数据库”“创建新数据库” 讲起,到如何安全删除数据库、如何配置字符集与校验规则避免乱码,再到数据库的基本操纵逻辑,最后重点拆解备份与恢复的具体步骤,以及如何查看数据库连接情况排查问题。
查看和创建数据库代码语言:javascript复制show databases;代码语言:javascript复制CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name 说明:
大写的表示关键字
[] 是可选项
CHARACTER SET: 指定数据库采用的字符集
COLLATE: 指定数据库字符集的校验规则
创建数据库案例
创建名为 bd 的数据库
代码语言:javascript复制create database bd; 说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则
是:utf8_ general_ ci
创建一个使用 utf8 字符集的 bd 2 数据库
代码语言:javascript复制create database bd2 charset=utf8; 创建一个使用 utf 字符集,并带校对规则的 bd 3 数据库。
代码语言:javascript复制create database bd3 charset=utf8 collate utf8_bin;三个数据库的创建结果
数据库删除代码语言:javascript复制DROP DATABASE [IF EXISTS] db_ name; 执行删除之后的结果:
数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
注意:不要随意删除数据库
创建数据库:create database db_name;---本质就是在/var/lib/mysql 创建一个目录(小编的Linux云主机上,大家可能不同)
删除数据库:drop database db_name;----删除目录
所以在上面那个路径下直接mkdir ,rm进行命令操作也能成功,但是别这么做,毕竟是不规范的操作。
字符集和校验规则 查看系统默认字符集以及校验规则
代码语言:javascript复制show variables like 'character_set_database';
show variables like 'collation_database'; 查看数据库支持的字符集
代码语言:javascript复制show charset; 字符集主要是控制用什么语言。比如 utf8 就可以使用中文。
查看数据库支持的字符集校验规则
代码语言:javascript复制show collation; 创建数据库的时候,有两个编码集:
1.数据库编码集--数据库未来存储数据
2.数据库校验集--支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式
综上:数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的!!!
校验规则对数据库的影响
不区分大小写
创建一个数据库,校验规则使用 utf8_ general_ ci[ 不区分大小写 ]
create database test1 collate utf8_general_ci;
use test1;
create table name(name varchar(20));
insert into num values('a');
insert into num values('A');
insert into num values('b');
insert into num values('B');
select *from num;
区分大小写
创建一个数据库,校验规则使用 utf8_ bin[ 区分大小写 ]
create database test2 collate utf8_general_ci;
use test2;
create table name(name varchar(20));
insert into num values('a');
insert into num values('A');
insert into num values('b');
insert into num values('B');
不区分大小写的排序以及查询结果
区分大小写的排序和查询结果
操纵数据库查看数据库
代码语言:javascript复制show databases;显示创建语句
代码语言:javascript复制show create database 数据库名;代码语言:javascript复制mysql> show create database test2;
+----------+--------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------------------------------------------------------------------+
| test2 | CREATE DATABASE `test2` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_bin */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+--------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec) 说明:
MySQL 建议我们关键字使用大写,但是不是必须的。
数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
/*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
修改数据库
语法:
代码语言:javascript复制ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name 说明:
对数据库的修改主要指的是修改数据库的字符集,校验规则
实例: 将 hellomysql 数据库字符集改成 gbk
代码语言:javascript复制mysql> show create database hellomysql;
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
| hellomysql | CREATE DATABASE `hellomysql` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> alter database hellomysql charset=gbk;
Query OK, 1 row affected (0.02 sec)
mysql> show create database hellomysql;
+------------+-------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+------------+-------------------------------------------------------------------------------------------------------+
| hellomysql | CREATE DATABASE `hellomysql` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+------------+-------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> 备份和恢复备份
代码语言:javascript复制# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径在系统终端执行正确的 mysqldump 命令
将test2库备份文件
代码语言:javascript复制# Linux 系统示例(直接在 [root@xxx ~]# 提示符下执行)
mysqldump -P3306 -u root -p -B test2 > /root/test2_backup.sql 这时,可以打开看看 test2_backup.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。
还原
代码语言:javascript复制mysql> source 路径; 注意事项
如果备份的不是整个数据库,而是其中的一张表,怎么做?
代码语言:javascript复制mysqldump -u root -p 数据库名 表名1 表名2 > 。。。mysql+系统级命令
代码语言:javascript复制# 1. 先登录 MySQL 客户端创建数据库(若已存在可跳过)
mysql -u root -p
Enter password: 你的密码
mysql> CREATE DATABASE IF NOT EXISTS test2; # 创建数据库
mysql> exit; # 退出客户端
# 2. 执行还原命令,指定数据库
mysql -u root -p test2 < /root/test2_backup.sql同时备份多个数据库
代码语言:javascript复制mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径 MYSQL客户端执行:
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
查看连接情况代码语言:javascript复制show processlist 可以告诉我们当前有哪些用户连接到我们的 MySQL ,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。
结束语 到这里,MySQL 数据库的核心基础操作就梳理完毕了。我们从数据库的 “查看与创建” 入手,掌握了如何安全删除数据库、如何通过字符集与校验规则规避乱码问题,也了解了数据库的基本操纵逻辑,最后重点学会了备份与恢复的两种常用方式,以及如何通过查看连接情况排查异常 —— 这些操作看似基础,却是保障数据安全、稳定使用 MySQL 的 “基石”。
比如备份与恢复,很多人会在数据丢失后才意识到其重要性;字符集配置则容易被忽略,直到出现中文排序错误才回头排查。希望这篇内容能帮你把这些基础操作内化为 “习惯”,而不是等到出问题才临时补救。
如果在实际操作中遇到了特殊场景(比如超大数据库备份、多用户连接冲突),或者对某一步操作有疑问,欢迎在评论区交流。后续我们还会针对 MySQL 的进阶操作(如 SQL 优化、事务管理)展开分享,让大家从 “会用” 到 “用好” MySQL,持续提升数据管理能力。