【MySQL】库的操作

废话不多说,直接上操作:


目录

一、查看数据库

二、创建数据库

[2.1 数据库的字符集及校验规则](#2.1 数据库的字符集及校验规则)

[2.1.1 查看系统默认字符集](#2.1.1 查看系统默认字符集)

[2.1.2 查看系统默认校验规则](#2.1.2 查看系统默认校验规则)

[2.1.3 查看数据库支持的字符集](#2.1.3 查看数据库支持的字符集)

[2.1.4 查看数据库支持的校验规则](#2.1.4 查看数据库支持的校验规则)

[2.2 创建数据库时设置字符集和校验规则](#2.2 创建数据库时设置字符集和校验规则)

[2.2.1 创建数据库时设置字符集](#2.2.1 创建数据库时设置字符集)

[2.2.2 创建数据库时设置校验规则](#2.2.2 创建数据库时设置校验规则)

三、验证不同的校验规则对数据库的影响

四、删除数据库

五、查看自己所处数据库

六、修改数据库

七、显示创建语句

八、数据库的备份与恢复

九、查看数据库连接情况


一、查看数据库

sql 复制代码
show databases;

我们可以使用上述sql语句来查看自己的数据库中有那些库(要注意database后面有字母s):

现在有一个问题:这些库是以什么方式存储在自己的Linux系统中的呢?

我们可以查看mysql的配置文件/etc/my.cnf

这里面我们可以看到有一个datadir,其后面就是mysql默认存储数据的目录

我们进去看看:

我们可以发现一个特点我们在mysql下查看到的库在保存数据的目录下都相对应一个目录!

那库和目录之间有什么关系呢?

我们在该数据目录下创建一个目录试试看:

创建完,我们再去mysql下查看一下库:

我们发现库中多了一个我们刚刚创建的目录名!

现在我们来删除这个目录:

删除完后我们发现mysql下刚刚存在相对应的库也不见了:

从上述过程中我们可以得出一个结论:在Linux环境下mysql所创建的库就是在存储数据的目录下创建相对应的目录

但是这样直接创建目录来创建数据库是不合理的,我们还是要使用标准的sql语句在mysql下创建:

二、创建数据库

sql 复制代码
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表示如果数据库不存在就创建,在使用时可以不添加) db_name表示要创建数据库的库名 CHARACTER SET: 指定数据库采用的字符集 COLLATE: 指定数据库字符集的校验规则

我们下面来用最简单的语法来创建一个数据库:

可以看到我们成功的创建了一个名为data1的数据库

接下来我们要讲解一下创建数据库时的字符集及校验规则:

2.1 数据库的字符集及校验规则

数据库作为存储数据的工具,存储和读取数据时使用的编码格式就很显得重要。

数据库字符集 可以决定所创建的数据库存储数据时使用什么样的编码格式

数据库校验规则可以决定所创建的数据库对比字段、读取数据所使用的编码格式

2.1.1 查看系统默认字符集

我们可以用下面的sql指令来查看系统默认的编码集

sql 复制代码
show variables like 'character_set_database';

由于我们在环境搭建时将配置文件中让server端的编码格式为utf8,所以系统默认使用utf8来作为默认的字符集

2.1.2 查看系统默认校验规则

我们可以用下面的sql指令来查看系统默认的校验集

sql 复制代码
show variables like 'collation_database';

由于我们在环境搭建时将配置文件中让server端的编码格式为utf8,所以系统默认使用utf8来作为默认的校验规则

2.1.3 查看数据库支持的字符集

sql 复制代码
show charset;

2.1.4 查看数据库支持的校验规则

sql 复制代码
show collation;

2.2 创建数据库时设置字符集和校验规则

2.2.1 创建数据库时设置字符集

创建数据库时设置字符集在mysql中有两种语法格式:

sql 复制代码
create database db_name charset=所要设置的字符集;

创建后我们可以到所创建库的对应的目录中查看其编码说明文件db.opt:

我们可以看到其使用的字符集为utf8

还有一种设置格式为:

sql 复制代码
create database db_name character set 所要设置的字符集;

创建后查看其编码说明文件db.opt:

我们可以看到其使用的字符集为gbk

2.2.2 创建数据库时设置校验规则

sql 复制代码
create database db_name collate 想要设置的校验规则;

创建后查看其编码说明文件db.opt:

我们可以看到其使用的校验规则为gbk_chinese_ci

当然我们也可以在创建数据库时字符集和校验规则一起设置:

创建后查看其编码说明文件db.opt:

我们可以看到其使用的字符集为utf8,校验规则为utf8_general_ci

三、验证不同的校验规则对数据库的影响

我们现在分别创建两个数据库,一个校验规则使用utf8_ general_ ci(不区分大小写),另一个校验规则使用utf8_ bin(区分大小写):

再向两个库中插入相同的表,并且添加相同的数据(对于表的操作我们在后面会详细讲解):

现在我们可以看到这两个数据库都有着相同的一份表,并且表的数据都相同

下面我们分别对其进行筛选查询(在表中查找name为a的数据):

我们可以看到使用utf8_ general_ ci(不区分大小写)校验规则的库查询结果有A和a,另一个校验规则使用utf8_ bin(区分大小写)的库查询结果只有a。

在这里我们可以看到校验规则的不同对数据库的影响

四、删除数据库

删除数据库很简单:

sql 复制代码
DROP DATABASE [IF EXISTS] db_ name;

例如:

但是要注意:对应的数据库目录被删除,里面的数据表也会全部被删

所以这里不推荐对数据库进行删除操作

五、查看自己所处数据库

我们今后要对表进行操作需要进入到某个数据库中,经过一系列操作我们有可能忘了我们在那个数据库中,这时我们可以使用下面语句来查看自己所处的数据库:

sql 复制代码
select database();

可以看到现在处于test2这个数据库中

六、修改数据库

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

sql 复制代码
ALTER DATABASE db_name [alter_spacification [,alter_spacification]...] alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

我们现在来对test2这个数据库做影响修改,在修改前其编码集为utf8:

下面对其进行修改:

再来查看其字符集和校验规则:

七、显示创建语句

sql 复制代码
show create database db_name;

上面该指令可以查看数据库的创建语句:

我们可以看到test2这个数据库创建时的语句为CREATE DATABASE 'test2'

数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字

后面加了/* 的语句不是注释,表示当前mysql版本大于4.01版本,就执行这句话(也就是字符集使用gbk编码)

八、数据库的备份与恢复

如果我们想要备份一个数据库,我们可以对其所在的目录直接继续拷贝。但是这样是不推荐的,这样拷贝下来的目录可能在不同的版本的mysql下不能识别。

最好的方式是使用mysqldump工具(在我们安装mysql时已经下载好了)来进行备份:

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

我们来实操一下:

下面我们来备份一下test2这个数据库:

我们现在已经备份一份test2数据库到test2.sql这个文件中,我们来看看这个文件里存了些什么:

我们可以看到这个文件里不仅仅留有库中表的数据,还有创建库和表的指令

现在我们将test2这个数据库删了,试试看能不能从备份文件中恢复:

恢复时会使用source语句:

sql 复制代码
source 备份文件的路径;

我们可以看到test2这个数据库又回来了,我们查看一下该数据库中的数据:

完璧归赵~

注意了:

如果备份的不是整个数据库,而是其中的几张表,我们可以这样子:

mysqldump -u root -p 数据库名 表名1 表名2 > 备份存储的文件路径

同时备份多个数据库可以这样子:

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 备份存储的文件路径

下面解释一下:-B选项是在备份时加上数据库的创建指令,以便在恢复时直接指向该这里创建和原数据库一样的库。所以如果备份数据库时没有带上-B参数, 在恢复数据库时,需要先创建空数据库,再在该数据库下使用source来还原。

九、查看数据库连接情况

sql 复制代码
show processlist;

上面语句可以让我们看到谁在连接我们的数据库,以及连接人在干什么:

如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看。


本期博客到这里就结束了,下期再见~

更多MySQL技能请看:http://t.csdn.cn/W9dQl

博主努力更新中~

相关推荐
杨云龙UP1 分钟前
ODA服务器RAC节点2/u01分区在线扩容操作记录及后续处理流程(Linux LVM + ext4 文件系统在线扩容操作手册)_20260307
linux·运维·服务器·数据库·ubuntu·centos
parafeeee7 小时前
程序人生-Hello’s P2P
数据库·后端·asp.net
欲买桂花同载酒5827 小时前
程序人生-Hello’s P2P
运维·服务器·数据库
iPadiPhone7 小时前
流量洪峰下的数据守护者:InnoDB MVCC 全实现深度解析
java·数据库·mysql·面试
NineData7 小时前
AI时代的数据对比:DBA还需要盯着屏幕看差异吗?
运维·数据库
jyfool7 小时前
Ubuntu 远程桌面配置踩坑实录:从 TightVNC 到 x11vnc 的折腾之旅
linux·运维·ubuntu
Javatutouhouduan7 小时前
SpringBoot整合reids:JSON序列化文件夹操作实录
java·数据库·redis·html·springboot·java编程·java程序员
安当加密8 小时前
基于 RADIUS 的 Linux 服务器双因子认证:从 FreeRADIUS 到轻量级 ASP 方案的演进
linux·运维·服务器
QWQ___qwq8 小时前
Spring Security + MyBatis-Plus 实现自定义数据库用户认证
数据库·spring·mybatis
66清小风8 小时前
服务器安装操作系统报X or window manager startup failed, falling back to mode
linux·kylin