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

相关推荐
异常君4 分钟前
MySQL 事务实现机制:从原理到实践的深度解析
后端·mysql
BIOS菜鸟工程师11 分钟前
UEFI Spec 学习笔记---12 - Protocols —CONSOLE SUPPORT(一)
人工智能·笔记·学习
MrsBaek12 分钟前
前端笔记-JavaScript部分(中)
前端·javascript·笔记
~卷心菜~13 分钟前
【Kubernetes基础--Service深入理解】--查阅笔记4
笔记·容器·kubernetes
pumpkin845141 小时前
学习笔记十六——Rust Monad从头学
笔记·学习·rust
王会举1 小时前
让SQL飞起来:搭建企业AI应用的SQL性能优化实战
数据库·人工智能·ai·性能优化
bing_1581 小时前
在 Spring Boot 项目中,如何进行高效的数据库 Schema 设计?
数据库·spring boot·后端·数据库schema设计
s_little_monster1 小时前
【Linux】线程互斥之线程加锁
linux·运维·经验分享·redis·笔记·学习·学习方法
听雪楼主.1 小时前
Oracle补丁安装工具opatch更新报错处理
数据库·oracle
不吃元西1 小时前
对于客户端数据存储方案——SQLite的思考
数据库·sqlite