【MySQL】库的操作

目录

创建数据库

数据库编码问题

查看系统默认字符集以及校验规则

指定创建的数据库的编码集

校验规则对数据库的影响

删除数据库

查看数据库

显示创建语句

修改数据库

库的备份与恢复

备份

恢复

注意事项

查看链接情况


创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]

create_specification:

DEFAULT\] CHARACTER SET charset_name \[DEFAULT\] COLLATE collation_name

\]里的是可选项,\[IF NOT EXISTS\]就是只有当前数据库不存在时,才去创建 ![](https://i-blog.csdnimg.cn/direct/5ae5b4685f0e4310959daf0db1819bb2.png) 我们现在来创建一个数据库 ![](https://i-blog.csdnimg.cn/direct/6b8cb4eab45f445c81c8fd807d5663fc.png) ![](https://i-blog.csdnimg.cn/direct/8238937762274b22a24f36b0da6207c2.png) 创建了一个数据库后可以看到就在/var/lib/mysql下创建了一个目录 ![](https://i-blog.csdnimg.cn/direct/225dd5e989cd4585b7fbc7b9280d1359.png) 我们也可以反过来,在/var/lib/mysql下创建一个目录,这样也相当于创建一个数据库。但最后不要这样做。同样的,我们在这个目录里面删除一个目录,数据库中也会少一个数据库。 使用可选项 ![](https://i-blog.csdnimg.cn/direct/5f44391f466f4e07aad8ade0b16fe156.png) ### 数据库编码问题 只要是数据,就一定会有编码格式。数据库是与数据打交道的,就一定要有编码集,且存、取时采用的编码集一定是统一的。 > 创建数据库时有两个编码集 > > 1. 数据库字符集:数据库未来存储数据、检索数据、显示数据所采用的编码集 > > 2. 数据库校验集:数据库未来进行字符串比较、排序操作时所采用的编码集 #### 查看系统默认字符集以及校验规则 在一个数据库中,我们一定要保证这两个编码集是相同的 我们来看一下系统在创建数据库时默认的字符集 ![](https://i-blog.csdnimg.cn/direct/ff1f74010d9141d69dc7573cc1d7d4b5.png)可以看到,默认使用的字符集是utf8 再来看看系统在创建数据库时默认的校验集 ![](https://i-blog.csdnimg.cn/direct/9beca545954b46d0949709f6b4689ace.png)可以看到,默认使用的校验集也是utf8 我们可以使用show charset来查看一个数据库中支持的字符集及其对应的校验集 之所以我们创建数据库时默认的编码集是utf8,是因为我们在配置文件中已经指定了编码集,当然,我们也可以在创建数据库时自己指定编码集 新建的数据库里默认的文件中是可以看到这个数据库的字符集、校验集 ![](https://i-blog.csdnimg.cn/direct/ab01fd1dedb044638d0b711afff50e1d.png) #### 指定创建的数据库的编码集 ![](https://i-blog.csdnimg.cn/direct/b261c285b7da478faaf0ce4e39948495.png) #### 校验规则对数据库的影响 校验集的一个功能就是进行字符串比较,利用不同校验集的特性,可以来查看校验集对数据库的影响。校验集utf8_general_ci是不区分大小写的,校验集utf8_bin是区分大小写的。另外,数据库中表的编码规则继承于其所在的数据库。 创建两个数据库,校验集分别是utf8_general_ci和utf8_bin ![](https://i-blog.csdnimg.cn/direct/7ed365e224454c31bf46774c43fe1f89.png) ![](https://i-blog.csdnimg.cn/direct/87163cd2771440b09d7e791f6b629334.png) 我们现在test1这个数据库中创建一个表,并向这个表中插入一些数据 ![](https://i-blog.csdnimg.cn/direct/0f1df35a18ee4062ac76bdea04b224a3.png) ![](https://i-blog.csdnimg.cn/direct/392b92fc221040a8a09ded5cd11ad0c1.png) ![](https://i-blog.csdnimg.cn/direct/28cd14a9188e4f08a651cc7c3b2332fb.png) ![](https://i-blog.csdnimg.cn/direct/bc19edda0970435e8f2620973ec7e4ca.png) select是从这个表中查(此时使用的就是校验集),\*是指所有的意思,所以会显示这个表中所有的数据 此时可以发现校验集utf8_general_ci是不区分大小写的 再使用同样的方法,在test2这个数据库中创建一个表,并向这个表中插入一些数据 ![](https://i-blog.csdnimg.cn/direct/a71d56a17ae2477aaeb123ca45d18f31.png) ![](https://i-blog.csdnimg.cn/direct/477358b360014389972f366edd62415b.png) 此时可以发现校验集utf8_bin是不区分大小写的 结论:校验集会影响比较 ![](https://i-blog.csdnimg.cn/direct/5adbc3e9409c45558689c10f1f77d3ac.png) ### 删除数据库 > DROP DATABASE \[IF EXISTS\] db_ name; 执行删除之后的结果: 数据库内部看不到对应的数据库; 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删 **一定不要随意删除数据库** ### 查看数据库 > show databases; 也可以show databases(); ### 显示创建语句 > show create database 数据库名; 作用是查看创建数据库时的指令 ![](https://i-blog.csdnimg.cn/direct/593eebb4f4834f738d150819e53197bd.png) 说明: MySQL 建议我们关键字使用大写,但是不是必须的 数据库名字的反引号\`\`,是为了防止使用的数据库名刚好是关键字 /\*!40100 default.... \*/ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话 (也就是说,前面半句是一定执行的,但是后面半句是否执行需要看版本) ### 修改数据库 > ALTER DATABASE db_name > \[alter_spacification \[,alter_spacification\]...

alter_spacification:

DEFAULT\] CHARACTER SET charset_name \[DEFAULT\] COLLATE collation_name

对数据库的修改主要指的是修改数据库的字符集,校验规则

select database();是查看自己当前在那个数据库里面

修改后就可通过显示创建语句来查看

库的备份与恢复

备份

备份时最容易想到的是将这个数据库的存储目录直接拷贝一份,这样会有问题,若当前数据库版本是5.7,保存的是从5.0上保存的,可能会出错。并且MySQL是不允许对数据库进行重命名的(因为上层应用都是只认数据库名字的)。所以,需要使用MySQL自带的备份工具来备份。

mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

数据库test1中有一个表person,现在对其进行备份

我们使用vim打开备份的文件test1.sql看看

可以看到不仅仅备份了数据,还将所有的有效操作都备份了,这是因为备份时带了-B后,就会把创建数据库的操作也备份过去。

恢复

我们先将数据库test1删掉


注意事项

如果备份的不是整个数据库,而是其中的一张表,怎么做?

mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

同时备份多个数据库

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原

查看链接情况

show processlist

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

相关推荐
luckys.one1 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
言之。3 小时前
Django中的软删除
数据库·django·sqlite
汇能感知4 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun4 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao4 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾4 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
阿里嘎多哈基米4 小时前
SQL 层面行转列
数据库·sql·状态模式·mapper·行转列
抠脚学代码5 小时前
Ubuntu Qt x64平台搭建 arm64 编译套件
数据库·qt·ubuntu
jakeswang5 小时前
全解MySQL之死锁问题分析、事务隔离与锁机制的底层原理剖析
数据库·mysql
DKPT5 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习