MySQL数据库基础篇(三):MySQL 数据库库级操作全解:创建、字符集、管理与备份恢复实战
前言刚接触 MySQL 的开发者大多会直接上手建表写 SQL却忽略数据库库层面的基础操作。数据库作为数据表、视图、存储过程等对象的容器字符集配置、库的增删改查、数据备份恢复都会直接影响项目中文乱码、数据丢失、查询排序异常等线上问题。本文结合实操命令完整梳理 MySQL 数据库全流程操作从创建库、字符集校验规则到修改删除、备份还原、连接查看覆盖开发运维日常全部高频场景。1.数据库的操作1.创建数据库语法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: 指定数据库字符集的校验规则1.最简创建create database 数据库名;2.兼容安全写法不存在再创建create database if not exists 数据库名;出现 1 条警告原因test2 这个数据库早就已经存在了。3.创建时指定字符集与校验规则解决中文乱码核心用法create database db3 charsetutf8mb3 collate utf8_general_ci;CHARSET(字符集)COLLATE(排序规则/校对规则)说明当我们创建数据库没有指定字符集和校验规则时系统使用默认字符集utf8校验规则是utf8_general_ci2.查看数据库1.查看内容show databases;如果在数据库中创建了表还可以use 数据库名; show tables;//查看表里面的内容desc person;//查看详细内容2.查看当前在哪一个数据库中select database();3.显示创建语句show create database 数据库名;4.查看数据库连接情况show processlist;该操作可以查询当前所有连接到MySQL的用户如果排查发现存在非自身正常登录的陌生用户大概率说明数据库已经被入侵。后续如果遇到数据库运行卡顿的场景也可以通过这条指令来查看数据库的实时连接状态辅助定位性能问题。3.修改数据库说明对数据库的修改主要指的是修改数据库的字符集校验规则语法:ALTER DATABASE db_name [alter_spacification [,alter_spacification]...] alter_spacification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_namealter database tets2 charsetgbk collate gbk_chinese_ci;为什么不建议轻易修改数据库数据库的修改主要指对其字符集、校验规则进行调整这类操作不建议轻易执行因为随意变更不仅可能引发不可逆的数据乱码、丢失问题还会破坏多表关联的业务数据一致性导致上层依赖的应用、报表出现兼容性故障甚至引发数据库服务崩溃同时还会大幅提升后续运维排查的难度带来额外的安全隐患整体改动成本极高。4.删除数据库drop database 数据库名;5.数据库的备份与恢复直接拷贝数据库文件极易产生脏数据、损坏数据表InnoDB 引擎文件绑定实例 ID跨机器 / 版本拷贝大概率无法使用还无法同步权限、存储过程等对象一致性与兼容性都很差远不如官方备份工具可靠因此不推荐。1.备份语法mysqldump -P3306 -u root -p 密码 -B 数据库名 数据库备份存储的文件路径;示例将test1库备份到文件先退出数据库mysqldump -P3306 -u root -p -B test1 test1.sql如果备份的不是整个数据库而是其中的一张表怎么做对应操作命令如果备份的不是整个数据库而是其中的一张表怎么做对应操作命令mysqldump -u root -p 数据库名 表名1 表名2 D:/mytest.sql存放路径2.恢复source 备份文件的路径;2.字符集和校验规则字符集和校验集是数据库处理文字的基础规则。字符集如 utf8mb4定义了数据的“存储标准”决定了能存哪些字比如是否支持 Emoji以及底层编码方式而校验集如 _unicode_ci定义了数据的“比较与排序规则”决定了搜索时是否区分大小写、多语言如何排列等逻辑。简单来说字符集解决的是“能不能存”的问题校验集解决的是“怎么比对”的问题两者配合才能确保数据存得进、查得准。1.查看数据库支持的字符集show charset;2.查看数据库支持的字符集校验规则show collation;字符集校验规则远多于字符集所以不一样的字符集 校验集匹配方式 会有不一样的效果3.查看系统默认字符集以及校验规则//字符集 show variables like character_set_database; //字符集校验规则 show variables like collation_database;4.校验规则对数据库的影响1.不区分大小写创建一个数据库校验规则使用utf8_general_ci [不区分大小写]-- 创建一个名为 test1 的数据库并设置字符集排序规则为 utf8_general_ci不区分大小写 create database test1 collate utf8_general_ci; -- 切换到名为 test1 的数据库后续操作将在该数据库中进行 use test1; -- 在 test1 数据库中创建一张名为 person 的表包含一个名为 name 的字段类型为 varchar(20)最大长度 20 个字符 create table person(name varchar(20)); -- 向 person 表中插入一条记录name 值为小写字母 a insert into person values(a); -- 向 person 表中插入一条记录name 值为大写字母 A insert into person values(A); -- 向 person 表中插入一条记录name 值为小写字母 b insert into person values(b); -- 向 person 表中插入一条记录name 值为大写字母 B insert into person values(B);select * from person;// 查看数据1.查找//进行查找 use test1; select * from person where namea;2.排序select * from person order by name;2.区分大小写创建一个数据库校验规则使用utf8_bin [区分大小写]//同上 create database test1 collate utf8_general_ci; use test1; create table person(name varchar(20)); insert into person values(a); insert into person values(A); insert into person values(b); insert into person values(B);select * from person;// 查看数据1.查找//进行查找 use test2; select * from person where namea;2.排序select * from person order by name;