Bootstrap

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

;