【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就是只有当前数据库不存在时,才去创建

我们现在来创建一个数据库

创建了一个数据库后可以看到就在/var/lib/mysql下创建了一个目录

我们也可以反过来,在/var/lib/mysql下创建一个目录,这样也相当于创建一个数据库。但最后不要这样做。同样的,我们在这个目录里面删除一个目录,数据库中也会少一个数据库。

使用可选项

数据库编码问题

只要是数据,就一定会有编码格式。数据库是与数据打交道的,就一定要有编码集,且存、取时采用的编码集一定是统一的。

创建数据库时有两个编码集

  1. 数据库字符集:数据库未来存储数据、检索数据、显示数据所采用的编码集

  2. 数据库校验集:数据库未来进行字符串比较、排序操作时所采用的编码集

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

在一个数据库中,我们一定要保证这两个编码集是相同的

我们来看一下系统在创建数据库时默认的字符集
可以看到,默认使用的字符集是utf8

再来看看系统在创建数据库时默认的校验集
可以看到,默认使用的校验集也是utf8

我们可以使用show charset来查看一个数据库中支持的字符集及其对应的校验集

之所以我们创建数据库时默认的编码集是utf8,是因为我们在配置文件中已经指定了编码集,当然,我们也可以在创建数据库时自己指定编码集

新建的数据库里默认的文件中是可以看到这个数据库的字符集、校验集

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

校验规则对数据库的影响

校验集的一个功能就是进行字符串比较,利用不同校验集的特性,可以来查看校验集对数据库的影响。校验集utf8_general_ci是不区分大小写的,校验集utf8_bin是区分大小写的。另外,数据库中表的编码规则继承于其所在的数据库。

创建两个数据库,校验集分别是utf8_general_ci和utf8_bin

我们现在test1这个数据库中创建一个表,并向这个表中插入一些数据



select是从这个表中查(此时使用的就是校验集),*是指所有的意思,所以会显示这个表中所有的数据

此时可以发现校验集utf8_general_ci是不区分大小写的

再使用同样的方法,在test2这个数据库中创建一个表,并向这个表中插入一些数据

此时可以发现校验集utf8_bin是不区分大小写的

结论:校验集会影响比较

删除数据库

DROP DATABASE IF EXISTS db_ name;

执行删除之后的结果:

数据库内部看不到对应的数据库;

对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

一定不要随意删除数据库

查看数据库

show databases;

也可以show databases();

显示创建语句

show create database 数据库名;

作用是查看创建数据库时的指令

说明:

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

相关推荐
kisy夏14 分钟前
多千帆运营平台
大数据·爬虫·mysql
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
yyuuuzz6 小时前
独立站的技术基础与常见运维问题
大数据·运维·服务器·网络·数据库·aws
東雪木8 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
Oll Correct8 小时前
实验二十九:TCP的运输连接管理
网络·笔记
键盘上的猫头鹰9 小时前
【MySQL 教程(八)】索引、事务、用户管理、导入导出与分页查询
数据库·python·mysql
Royzst9 小时前
数据库知识点
数据库
飞翔中文网10 小时前
Java学习笔记之抽象类与接口(设计思想)
java·笔记·学习
雪的季节10 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt
宋浮檀s10 小时前
应急响应——Web漏洞:命令执行+SSRF+弱口令
运维·数据库·sql·网络安全·oracle·应急响应