MySQL库的操作
目录
一、创建数据库
1. 创建数据库基础语法
2. 创建数据库实战案例
二、字符集和校验规则
1. 查看系统默认字符集和校验规则
2. 查看数据库支持的字符集和校验规则
3. 校验规则对数据库的影响
三、操纵数据库
1. 查看数据库
2. 修改数据库
3. 删除数据库(慎用!)
四、数据备份与恢复
1. 数据库级备份与恢复
🌻数据库备份
🌻数据库恢复
2. 表级备份与恢复
🌵指定表备份
🌵表数据恢复
五、连接状态监控
一、创建数据库
1. 创建数据库基础语法
创建数据库是使用MySQL进行数据管理的第一步。在MySQL中,创建数据库的基本语法为:
CREATE DATABASE [IF NOT EXISTS] db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name];
-
CREATE DATABASE
:创建数据库的关键字。 -
IF NOT EXISTS
:避免重复创建同名库。 -
db_name
:数据库的名称。 -
CHARACTER SET
:指定字符集(如utf8
) -
COLLATE
:指定校验规则(如utf8_general_ci
)
2. 创建数据库实战案例
🌵案例1:创建默认配置的数据库
例如:创建一个名为db1
的数据库,不指定字符集和校验规则
CREATE DATABASE db1;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci。
🌵案例2:明确指定字符集
例如:创建一个使用utf8
字符集的数据库db2
CREATE DATABASE db2 CHARACTER SET utf8;
说明: SQL中的 character set utf8,也可以写成 character set=utf8 或 charset=utf8。
🌵案例3:指定字符集与校验规则
例如:创建一个使用utf8
字符集并带utf8_general_ci
校验规则的数据库db3
CREATE DATABASE db3 CHARACTER SET utf8 COLLATE utf8_general_ci;
注意: SQL中的collate utf8_general_ci,也可以写成collate=utf8_general_ci。
二、字符集和校验规则
字符集和校验规则是数据库操作中不可忽视的重要部分。字符集决定了数据库能够存储的语言字符范围,而校验规则则影响字符的比较和排序方式。
1. 查看系统默认字符集和校验规则
-- 查看默认字符集
SHOW VARIABLES LIKE 'character_set_database'; -- 查看默认校验规则
SHOW VARIABLES LIKE 'collation_database';
2. 查看数据库支持的字符集和校验规则
-- 查看所有字符集
SHOW CHARSET; -- 查看所有校验规则
SHOW COLLATION;
3. 校验规则对数据库的影响
校验规则的不同会影响查询和排序的结果。
🌴不区分大小写的校验规则:
使用utf8mb4_unicode_ci校验规则创建的数据库,进行查询时,不会区分大小写。如下所示:
-- 创建数据库 test1,使用 utf8mb4_unicode_ci 排序规则
CREATE DATABASE test1 COLLATE utf8mb4_unicode_ci;-- 使用 test1 数据库
USE test1;-- 创建 person 表,包含一个 name 列(VARCHAR 类型)
-- 未显式指定字符集和排序规则,将继承数据库的 utf8mb4 和 utf8mb4_unicode_ci
CREATE TABLE person(name VARCHAR(20));-- 插入4条记录,包含大小写字母
INSERT INTO person VALUES('a'), ('A'), ('b'), ('B');-- 查询 name='a' 的记录
-- 由于使用 utf8mb4_unicode_ci 排序规则(不区分大小写)
-- 会返回 'a' 和 'A' 两条记录
SELECT * FROM person WHERE name='a';
查询结果:
排序结果:
🌴区分大小写的校验规则:
若使用utf8mb4_bin校验规则创建数据库,查询时将严格区分大小写。以相同的插入数据为例:
-- 创建一个名为test2的数据库,并设置字符集为utf8mb4,使用二进制(bin)校对规则(区分大小写)
CREATE DATABASE test2 COLLATE utf8mb4_bin;-- 使用test2数据库
USE test2;-- 创建person表,包含一个name字段,类型为VARCHAR(20)
CREATE TABLE person(name VARCHAR(20));-- 向person表插入4条数据:'a', 'A', 'b', 'B'
INSERT INTO person VALUES('a'), ('A'), ('b'), ('B');-- 查询person表中name字段等于'a'的记录(由于使用utf8mb4_bin校对规则,区分大小写)
SELECT * FROM person WHERE name='a';
查询结果:
排序结果:
在排序方面,不区分大小写的排序结果会将大小写字母视为相同,而区分大小写的排序则会根据字母的ASCII值进行严格排序。
三、操纵数据库
1. 查看数据库
SHOW DATABASES; -- 列出所有数据库
SHOW CREATE DATABASE db_name; -- 查看创建语句
说明:
- MySQL 建议我们关键字使用大写,但是不是必须的。
- 数据库名字的反引号 ``,是为了防止使用的数据库名刚好是关键字。
- /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话 。
2. 修改数据库
ALTER DATABASE db_name
CHARACTER SET gbk
COLLATE gbk_chinese_ci;
注:对数据库的修改主要指的是修改数据库的字符集,校验规则 。
3. 删除数据库(慎用!)
DROP DATABASE [IF EXISTS] db_name;
执行删除之后的结果:
- 数据库内部看不到对应的数据库
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
注意:不要随意删除数据库
四、数据备份与恢复
1. 数据库级备份与恢复
🌻数据库备份
核心命令:
# 备份整个库
mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名1 数据库名2 ... > 数据库备份存储的文件路径
注意:如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
参数解析:
参数 | 说明 |
---|---|
-P | 指定MySQL服务端口(默认3306可省略) |
-B | 包含CREATE DATABASE语句 |
> | 输出重定向到指定文件 |
创建测试环境:
-- 创建数据库
CREATE DATABASE mytest;-- 使用数据库
USE mytest;-- 创建角色表
CREATE TABLE hero (id INT PRIMARY KEY,name VARCHAR(30) NOT NULL COMMENT '武侠角色名'
);-- 创建门派表
CREATE TABLE sect (sect_id INT PRIMARY KEY,sect_name VARCHAR(30) COMMENT '门派名称'
);-- 插入经典武侠角色
INSERT INTO hero VALUES
(1, '郭靖'),
(2, '黄蓉'),
(3, '杨过'),
(4, '小龙女'),
(5, '张无忌'),
(6, '赵敏');-- 插入经典武侠门派
INSERT INTO sect VALUES
(101, '丐帮'),
(102, '全真教'),
(103, '古墓派'),
(104, '武当派'),
(105, '明教'),
(106, '峨眉派');
执行备份命令(退出连接):
这时,我们可以打开看看 wuxia_demo.sql 文件里的内容,其实我们把整个创建数据库,建表,导入数据的语句都装载到这个文件中了。
🌻数据库恢复
核心命令 :
source 数据库备份存储的文件路径
恢复流程演示 :
1. 先将刚才建的数据库删除。
2. 执行恢复操作。
验证恢复结果:
2. 表级备份与恢复
🌵指定表备份
核心命令:
# 备份单张表
mysqldump -P 端口号 -u 用户名 -p 密码 数据库名 表名1 表名2 ... > 表备份存储的文件路径
执行备份命令:
备份文件 :
🌵表数据恢复
核心命令:
source 表备份存储的文件路径
恢复流程:
1. 删除刚才的数据库
2. 创建纯净数据库环境
3. 执行恢复操作
验证恢复结果:
五、连接状态监控
为了查看当前MySQL服务器上的连接情况,可以使用以下命令:
SHOW PROCESSLIST;
这样可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。所以以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。