目录
(一)库的操作
1、 创建数据库
2、字符集和校验规则
1️⃣ 查看系统默认字符集以及校验规则
2️⃣ 查看数据库支持的字符集
3️⃣ 查看数据库支持的字符集校验规则
4️⃣ 创建数据库案例
5️⃣ 校验规则对数据库的影响
(二)操纵数据库
1、查看数据库
2 、显示创建语句
3、修改数据库
4、数据库删除
5、查看连接情况
6、备份和恢复
1️⃣备份
2️⃣注意事项
总结
(一)库的操作
1、 创建数据库
在上篇文章中我带大家简单的看了一下数据库的创建过程,本期我们便具体展开来谈谈其中的细节。
在MySQL中,可以使用 CREATE DATABASE
语句来创建数据库。下面是创建数据库的基本语法:
- 其中,
db_name 及
database_name 是要创建的数据库的名称; - IF NOT EXISTS
- CHARACTER SET: 指定数据库采用的字符集
- COLLATE: 指定数据库字符集的校验规则
例如,要创建一个名为 "mydatabase" 的数据库,可以使用以下命令:
create database mydatabase;
当我们重新另起一个页面进入【/var/lib/mysql】目录下时,我们可以发现此时目录下多出了一个【mydatabase】的目录:
此时,假设由于创建的数据库太多了,导致自己创建的数据库名字忘掉了。此时,我们可以添加一些设置操作:
【分析】
- 这条语句将检查数据库是否已经存在。如果数据库尚未存在,则会创建名为 "mydatabase" 的数据库;
- 如果数据库已经存在,则不执行任何操作。很明显,上述我们床架了一个名为【mydatabase】的数据库,因此不会被重新创建
紧接着,当我们想删除掉这个数据库时,应该怎么做呢?此时,我们像下述这样:
- 要删除名为 "mydatabase" 的数据库,可以使用以下命令:
drop database mydatabase;
因此,我们不难发现,在mysql 环境下创建数据库相当于在【/var/lib/mysql】增加一个文件而已。那么,我们也可以直接在【/var/lib/mysql】下创建一个文件是不是就相当于在 mysql 环境下创建一个数据库呢? 具体如下:
结果显而易见,我们可以进行这样的操作,但是此时会有一个问题,那就是当我们我们在【/var/lib/mysql】想删除时,我们却无法进行 相关操作:
- 而当我们在 mysql 环境下使用指令删除时,我们是可以正确的删除的:
2、字符集和校验规则
- 创建名为 db1 的数据库
create database db1;
说明:
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci
在MySQL中创建数据库时,常用的两个字符集编码:
- 数据库编码集:数据库未来存储数据;
- 数据库校验集:支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据采用的编码格式;
1️⃣ 查看系统默认字符集以及校验规则
要查看MySQL数据库系统的默认字符集和校对规则,可以使用以下查询语句:
- 查询结果将会返回类似下面的信息:
- 第一条查询语句将显示与字符集相关的系统变量
- 第二条查询语句将显示与校对规则(排序规则)相关的系统变量。
2️⃣ 查看数据库支持的字符集
show charset;
当使用 SHOW CHARSET;
命令时,MySQL会显示当前数据库中可用的字符集,并提供相关信息,例如字符集名称、默认排序规则和描述。
- 以下是执行
SHOW CHARSET;
查询的示例输出:
3️⃣ 查看数据库支持的字符集校验规则
show collation;
SHOW COLLATION;
命令时,MySQL将显示当前数据库中可用的校对规则(排序规则),并提供相关信息,例如校对规则名称、字符集、ID和描述。
- 以下是执行
SHOW COLLATION;
查询的示例输出的一部分:
查询结果将列出可用的校对规则及其相关信息,如校对规则名称、字符集、ID、是否为默认校对规则(Default)、是否已编译(Compiled)以及排序长度(Sortlen)。
4️⃣ 创建数据库案例
💨 创建一个使用utf8字符集的 db2 数据库
create database db2 charset=utf8;
- 显示如下:
💨 创建一个使用utf字符集,并带校对规则的 db3 数据库
create database db3 charset=utf8 collate utf8_general_ci;
- 显示如下:
5️⃣ 校验规则对数据库的影响
- 不区分大小写
创建一个数据库,校验规则使用 utf8_ general_ ci [不区分大小写]
create database test1 collate utf8_general_ci;
显示如下:
紧接着进入表中,在进行建表操作:
进行查询:
结果排序:
- 区分大小写
创建一个数据库,校验规则使用 utf8_ bin [区分大小写]
create database test2 collate utf8_bin;
显示如下:
紧接着进入表中,在进行建表操作:
进行查询:
结果排序:
(二)操纵数据库
1、查看数据库
show databases;
这个就不过多介绍了,在之前我们一直再用。
此外,我在给大家介绍一个新的东西:
-
SELECT DATABASE();
是一个MySQL查询,用于获取当前正在使用的数据库的名称。
当你执行这个查询时,它将返回当前正在使用的数据库的名称作为结果。例如,如果当前正在使用的数据库是"test2",那么执行 SELECT DATABASE();
将返回如下结果:
- 请注意,这是一个只返回结果的查询,不会对数据库进行任何修改或操作。
2 、显示创建语句
show create database 数据库名;
示例:
【分析】
- MySQL 建议我们关键字使用大写,但是不是必须的。
- 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
- /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
3、修改数据库
语法:
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
- 对数据库的修改主要指的是修改数据库的字符集,校验规则
实例: 将 test2 数据库字符集改成 gbk
4、数据库删除
语法:
DROP DATABASE [IF EXISTS] db_ name;
示例:删除test1
执行删除之后的结果:
- 数据库内部看不到对应的数据库
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
💨 注意:不要随意删除数据库
5、查看连接情况
语法:
show processlist
输出显示:
可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。
6、备份和恢复
1️⃣备份
在MySQL中,可以使用多种方法进行数据库的备份和恢复。以下是两种常用的方法:
- 使用
mysqldump
工具进行备份和恢复:
备份数据库:可以使用以下命令来备份整个数据库:
# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
例如,要备份名为"db1"的数据库,使用以下命令:
mysqldump -P3306 -u root -p123456 -B db1> db1.sql
- 这将把整个数据库保存到名为"db1.sql"的SQL文件中。
恢复数据库:可以使用以下命令来还原数据库:
mysql -u 用户名 -p 数据库名 < 备份文件.sql
例如,要还原名为"db1"的数据库,使用以下命令:
mysql -u root -p db1< db1.sql
- 这将从"db1.sql"文件中读取SQL语句,并还原数据库。
- 使用物理文件拷贝进行备份和恢复:
备份数据库:可以直接拷贝MySQL数据目录来备份数据库。首先停止MySQL服务,然后复制MySQL数据目录到备份位置即可。
恢复数据库:要恢复数据库,只需将备份的数据目录拷贝回MySQL数据目录的原始位置,并确保相应的权限和所有权设置正确。然后重新启动MySQL服务即可。
无论使用哪种方法,都建议定期备份数据库以确保数据的安全性,并根据需要进行恢复。
2️⃣注意事项
如果备份的不是整个数据库,而是其中的一张表,怎么做?
# mysqldump -u root -p 数据库名 表名1 表名2 > db1.sql
同时备份多个数据库
# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
- 如果备份一个数据库时,没有带上【-B】 参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原