一、创建数据库
创建数据库是使用 MySQL 的第一步,合理的创建语句能规范数据库的字符集、校验规则,避免后续使用出现乱码、查询匹配异常等问题
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...];
其中可选的create_specification用于指定数据库属性,核心配置为:
[DEFAULT] CHARACTER SET charset_name:指定数据库采用的字符集[DEFAULT] COLLATE collation_name:指定数据库字符集的校验规则
语法说明:
- 大写部分为 MySQL 关键字,实际使用中关键字大小写 不 敏感,推荐大写以提升可读性;
[]内为可选项 ,IF NOT EXISTS可避免创建已存在的数据库时报错;- 可同时指定字符集和校验规则,多个配置用逗号分隔。
本质上 , 就是在 /var/lib/mysql 下创建一个目录
案例:
1. 常见名为db1 的数据库
create database db1;

说明:当我们创建数据库没有指定字符集和校验规则时候 ,系统使用默认字符集,utf8 , 校验规则是 : utf8_general_ci
2 . 创建一个使用utf8字符集的db2数据库
create database db2 charset=utf8;

3. 创建一个使用utf字符集 , 并带对校验规则的db3数据库
create database db3 charset=utf8 collate utf8_general_ci;

二、字符集和校验集
字符集和校验规则是数据库的重要属性,字符集决定了数据库能存储的语言字符(如中文、英文、日文),校验规则则影响数据的查询匹配、排序等行为,二者需配合使用。

数据库无论对数据做任何操作 , 都必须保证操作 和 编码 保持一致 。
1. 查看系统默认字符集以及校验规则
-- 查看默认字符集
show variables like 'character_set_database';
-- 查看默认校验规则
show variables like 'collation_database';


2. 查看数据库支持的字符集
show charset;

关键说明:utf8字符集是日常开发的主流选择,支持多语言字符,也是 MySQL 的默认字符集,能满足中文、英文等绝大多数开发场景。字符集主要是控制用什么语言 , 比如utf8就可以使用中文。
3. 查看数据库支持的字符级校验规则
show collation;

校验规则命名有规律 , 通常以对应字符集开头 。 如utf8相关的校验规则有 utf8_general_ci , utf8_bin等。
4. 校验规则的实际影响
校验规则的核心差异体现在是否区分大小写 。 以下用过对比 utf8_general_ci (不分大小写 )和utf8_bin(区分大小写)的区别 。
- 不分大小写
创建一个数据库 , 校验规则使用 utf8_general_ci (不区分大小写)
-- 数据库1:校验规则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');

-
区分大小写
-- 数据库2:校验规则utf8_bin(区分大小写)
create database test2 collate utf8_bin;
use test2;
create table person(name varchar(20));
insert into person values('a'),('A'),('b'),('B');

- 进行查询
不区分大小写的查询以及结果

区分大小写的查询以及结果

- 结果排序
不区分大小写的排序以及结果

区分大小写的排序以及结果

三、数据库的操作
1. 查看数据库
(1)查看 MySQL 中所有的数据库
show databases;
执行后会列出 MySQL 中所有已创建的数据库,包括系统默认数据库(如mysql、information_schema)和自定义数据库。
(2)查看数据库的创建语句
通过该语句可查看指定数据库的详细创建配置,包括字符集、校验规则等,便于确认数据库属性。
show create database 数据库名;

- 数据库名的反引号`````:防止数据库名与 MySQL 关键字冲突,是推荐的命名写法;
/*!40100 DEFAULT CHARACTER SET utf8 */:非注释语句,含义为当 MySQL 版本大于 4.01 时,执行该配置语句,保证不同版本的兼容性
2. 修改数据库
MySQL 中对数据库的修改仅支持修改字符集和校验规则 ,不支持修改数据库名(若需修改库名,建议新建数据库后迁移数据)。

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

执行后可看到mytest的默认字符集已变为gbk。
3. 删除数据库
删除数据库是高危操作,执行后数据库对应的文件夹会被彻底删除,库内的所有表和数据也会级联删除,无法恢复,需谨慎操作。
DROP DATABASE [IF EXISTS] db_name;
IF EXISTS:可选,避免删除不存在的数据库时报错;- 无任何恢复机制,生产环境中禁止直接执行删除语句,需先备份。
执行结果
- MySQL 客户端中无法再看到该数据库;
- 服务器上对应的数据库物理文件夹被删除;
- 库内所有数据表、数据全部丢失。
4. 查看数据库连接情况
通过**show processlist可查看当前连接到 MySQL 的所有用户信息**,包括连接用户、连接地址、操作的数据库、连接状态等,是数据库运维和安全监控的常用语句。
show processlist;

Id:连接标识,可用于终止异常连接;User:连接 MySQL 的用户名;Host:连接的客户端地址,localhost为本地连接,若出现陌生 IP 需警惕数据库被入侵;db:当前操作的数据库,NULL表示未选择数据库;Command:连接状态,Sleep为空闲连接,Query为正在执行查询;Info:当前执行的 SQL 语句。应用场景:当数据库运行缓慢时,可通过该语句查看是否有慢查询、异常连接;若发现非授权用户的连接,可及时排查数据库安全问题。如果查出某个用户不是你正常登录的,很有可能你的数据库被人入侵了 。
四、数据库的备份与恢复
数据是数据库的核心,日常备份是防止数据丢失的关键手段,MySQL 提供了mysqldump工具实现数据库备份,配合source语句完成数据恢复,支持单库、单表、多库等多种备份场景。
1. 备份
# 基础语法:备份单个数据库
mysqldump -P端口号 -u用户名 -p密码 -B 数据库名 > 备份文件存储路径/备份文件名.sql
-P:指定 MySQL 端口号,默认 3306 可省略;-u:指定连接的 MySQL 用户名;-p:指定连接的 MySQL 密码,密码与 - p 之间无空格;-B:必选,用于指定备份数据库,保留数据库的创建语句;>:重定向符号,将备份内容写入指定的 sql 文件。
备份文件说明 :生成的**.sql文件是文本文件**,包含了数据库的创建语句、表的创建语句、数据的插入语句,可直接打开查看。
2.恢复
数据恢复需在MySQL 客户端内部 执行,通过source语句读取备份的.sql文件,执行其中的 SQL 语句,完成数据库、表、数据的恢复。
source 备份文件的绝对路径;
执行后,MySQL 会自动执行备份文件中的所有 SQL 语句,恢复对应的数据库和数据。
3.注意事项
(1)备份单个 / 多个表
若无需备份整个数据库,仅需备份其中的部分表,语法如下:
# 备份单个数据库中的多个表
mysqldump -u root -p 数据库名 表名1 表名2 > 备份文件路径.sql
示例 :备份mytest数据库中的person和student表
mysqldump -u root -p123456 mytest person student > D:/mytest_table.sql
(2)同时备份多个数据库
通过-B参数指定多个数据库名,实现多库批量备份:
mysqldump -u root -p -B 数据库名1 数据库名2 数据库名3 > 备份文件路径.sql
(3)无 - B 参数的备份与恢复
若备份时省略-B参数,备份文件中不会包含数据库的创建语句 ,恢复时需先手动创建空数据库,再选择该数据库,最后执行source恢复:
# 无-B参数备份
mysqldump -u root -p123456 mytest > D:/mytest_nob.sql
-- 无-B参数的恢复步骤
1. 创建空数据库:create database mytest;
2. 选择数据库:use mytest;
3. 执行恢复:source D:/mytest_nob.sql;