当前位置: 首页 > news >正文

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=utf8charset=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,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。所以以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。 

http://www.xdnf.cn/news/469909.html

相关文章:

  • 【笔记】CosyVoice 模型下载小记:简单易懂的两种方法对比
  • vacuum、vacuum full的使用方法及注意事项
  • “禁塑行动·我先行”环保公益项目落地宁夏,共筑绿色生活新篇章
  • 4、前后端联调文生文、文生图事件
  • 趋势跟踪策略的回测
  • AI Agent开发第67课-彻底消除RAG知识库幻觉-文档分块全技巧(1)
  • pgsql14自动创建表分区
  • SpringBoot 自动装配流程
  • [Java实战]Spring Boot 3实现 RBAC 权限控制(二十五)
  • SpringBoot项目使用POI-TL动态生成Word文档
  • 去年开发一款鸿蒙Next Os的window工具箱
  • 软考软件评测师——软件工程之系统维护
  • ADS1220高精度ADC(TI)——应用 源码
  • 采用sherpa-onnx 实现 ios语音唤起的调研
  • 每周靶点:NY-ESO-1、GPC3、IL27分享
  • Linux操作
  • Oracle APEX IR报表列宽调整
  • [ctfshow web入门] web75
  • 运维实施30-FTP服务
  • 欧拉计划 Project Euler 73(分数有范围计数)题解
  • ABP User Interface-Angular UI中文详解
  • Loki的部署搭建
  • JS手写代码篇---手写 Object.create
  • 哈夫曼树完全解析:从原理到应用
  • 接口测试知识详解
  • 亚马逊运营中评论体系构建与高效索评策略解析!
  • 4寸工业三防手持机PDA,助力仓储高效管理
  • 【在qiankun模式下el-dropdown点击,浏览器报Failed to execute ‘getComputedStyle‘ on ‘Window‘: parameter 1 is not o
  • 亚马逊,temu测评采购低成本养号策略:如何用一台设备安全批量管理买家账号
  • 英语学习笔记