数据库的操作
- 1. 创建数据库
- 2. 创建数据库的案例
- 3. 字符集和校验规则
- 3.1 查看系统默认字符集以及校验规则
- 3.2 查看数据库支持的字符集
- 3.3 查看数据库支持的字符集校验规则
- 3.4 校验规则对数据库的影响
- 4. 操纵数据库
- 4.1 查看数据库
- 4.2 显示创建语句
- 4.3 修改数据库
- 4.4 删除数据库
- 5. 备份和恢复数据库
- 5.1 作用
- 5.1.1 备份数据库的作用
- 5.1.2 恢复数据库的作用
- 5.2 备份数据库
- 5.3 恢复数据库
- 5.4 -B 的作用
- 6. 备份和恢复数据库中的表
- 6.1 备份表
- 6.2 恢复表
- 7. 查看连接情况
1. 创建数据库
语法:
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] …]create_specification:
[DEFAULT]CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
- 大写的表示关键字
- [] 是可选项
- CHARACTER SET: 指定数据库采用的字符集
- COLLATE: 指定数据库字符集的校验规则
2. 创建数据库的案例
-
创建名为 study_1 的数据库(当创建数据库时不设置字符集时,会使用mysql默认的字符集)
命令:create database stuty_1
查看数据库:
命令:show databases;
我们查看一下Linux中相应的目录有什么?
命令:ls /var/lib/mysql
此时,在 Linux 目录中,mysqld会创建一个目录,这个study_1的创建是 mysqld 服务端的操作
在mysql中创建数据库,在linux文件/var/lib/mysql目录下会新增一个目录,把该目录删除,mysql中的新建的数据库也会被删除。所以,我们可以子啊/var/lib/mysql中创建数据库吗(目录)?no,绝对不可以。
-
创建一个使用utf8字符集的 study_2 数据库
命令:create datebasee student_2 charset=utf8 ;
-
创建一个使用utf8字符集,并带校对规则的 study_3 数据库。
命令:create datebasee student_3 charset=utf8 collate utf8_general_ci;
说明:
创建数据的时候,有字符集和校验集的设置:
-
字符集:定义了数据库中可以存储的字符及其编码方式。字符集决定了每个字符在计算机中如何表示,即每个字符占用多少字节以及具体的二进制编码。
-
校验集:定义了字符集中的字符如何进行比较和排序。同一个字符集可以有不同的校验集,不同的校验集决定了字符的大小写敏感性、重音敏感性等。
数字存储的时会使用字符集,数据查找或者匹配,这样会进行数据比较,想要进行比较就需要先读取出来,读取使用校验集,支持数据库进行比较使用的校验集,本质也是一种读取数据库中数据的编码格式
举个简单的例子,如果你存储数据使用浮点类型,而取数据用字符串类型,这样取出来的数据肯定会乱套的。
总之,数据库无论对数据做任何操作,都必须保证操作和编码必须是一致的。
当创建数据库时不设置字符集和校验集,会默认使用mysql配置的字符集和校验集
在 Linux 中查看系统默认字符集和校验集:
命令:vim /etc/my.cnf
3. 字符集和校验规则
3.1 查看系统默认字符集以及校验规则
-
查看字符集,命令:
show variables like 'character_set_database;
或:show variables like 'character_set_server;
-
查看字符集校规则,命令:
show variables like 'collation_database';
或:show variables like 'collation_server;
3.2 查看数据库支持的字符集
字符集:主要是控制用什么语言。比如utf8就可以使用中文。
命令:show charset;;
3.3 查看数据库支持的字符集校验规则
字符集校验规则:读取数据库中数据的编码格式。
命令:show collation;
3.4 校验规则对数据库的影响
- 不区分大小写
创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
- 创建数据库:
create database db01 charset utf8 collate utf8_deneral_ci;
- 创建表:
create table test(id varchar(3));
- 插入数据:
insert into test values('a'),('b'),('c');
- 插入数据:
insert into test values('A'),('B'),('B');
- 查询数据
- 查询排列数据(默认按字符的ASCII码升序排列)
- 区分大小写
创建一个数据库,校验规则使用utf8_bin[区分大小写]
- 创建数据库:
create database db02 charset utf8 collate utf8_bin;
- 创建表:
create table test(id varchar(3));
- 插入数据:
insert into test values('a'),('b'),('c');
- 插入数据:
insert into test values('A'),('B'),('B');
- 查询数据
- 排列数据(升序)
4. 操纵数据库
4.1 查看数据库
-
创建数据库(使用默认字符集和校验集)。
命令:show databases;
-
创建数据库,同时设置字符集和校验集。
命令:create database database_name charset=utf8 collate=utf8_general_ci
注:=
可以省略 -
进入到数据库,操作很久后忘记在哪个数据库中操作,查询当前在哪数据库
命令:select database()
4.2 显示创建语句
命令:show create database database_name;
说明:
- MySQL 建议我们关键字使用大写,但是不是必须的。
- 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。
/*!40100 default.... */
这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话(其实就是数据库使用的字符集)。
用途:
- 查看字符集和排序规则:了解数据库的字符集和排序规则,这对于确保数据一致性和兼容性非常重要。
- 复制数据库结构:如果你需要在另一个环境中创建相同的数据库,可以使用 SHOW CREATEDATABASE 语句获取创建语句,然后在新环境中执行该语句。
- 调试和维护:在数据库迁移或升级过程中,了解数据库的创建细节有助于调试和维护。
4.3 修改数据库
语法:
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]…]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
对数据库的修改主要指的是修改数据库的字符集,校验规则。
实例: 将 test 数据库字符集改成 gbk
命令:alter databse test chartset gbk;
4.4 删除数据库
语法:
DROP DATABASE [IF EXISTS] db_ name;
说明:
[IF EXISTS] :如果该数据库存在则删除,如果该数据库不存在则不会抛出错误(异常)。
da_name
:数据库名字。
执行删除之后的结果:
- 数据库内部看不到对应的数据库。
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。
注意:不要随意删除数据库。
5. 备份和恢复数据库
5.1 作用
5.1.1 备份数据库的作用
备份数据库的作用:
- 数据保护:
- 防止数据丢失:备份可以防止因硬件故障、软件错误、人为错误或恶意攻击导致的数据丢失。
- 防止数据损坏:备份可以恢复因系统崩溃或数据损坏而无法访问的数据。
- 业务连续性:
- 减少停机时间:通过备份,可以在发生问题时快速恢复数据,减少业务中断的时间。
- 确保服务可用性:备份可以确保关键业务数据和服务的持续可用性。
- 合规性和审计:
- 满足法规要求:许多行业和组织有严格的法规要求,规定必须定期备份数据以确保数据的完整性和安全性。
- 审计需求:备份数据可以用于审计和合规检查,确保数据的真实性和一致性。
- 开发和测试:
- 环境搭建:备份数据可以用于搭建开发和测试环境,确保这些环境与生产环境的数据一致。
- 数据恢复:在开发和测试过程中,如果数据被修改或损坏,可以通过备份快速恢复。
5.1.2 恢复数据库的作用
恢复数据库的作用:
- 数据恢复:
- 恢复丢失的数据:在数据丢失的情况下,可以通过备份恢复丢失的数据。
- 恢复损坏的数据:在数据损坏的情况下,可以通过备份恢复到备份时的状态。
- 灾难恢复:
- 应对重大故障:在发生重大故障(如数据中心故障、自然灾害)时,可以通过备份恢复数据,确保业务的连续性。
- 快速恢复:通过备份,可以在短时间内恢复数据,减少业务中断的时间。
- 数据迁移:
- 跨环境迁移:备份数据可以用于将数据从一个环境迁移到另一个环境,例如从开发环境迁移到生产环境。
- 跨平台迁移:备份数据可以用于将数据从一个平台迁移到另一个平台,例如从旧版本的数据库迁移到新版本的数据库。
- 历史数据保留:
- 保留历史记录:备份可以保留不同时间点的历史数据,用于分析和审计。
- 数据归档:备份可以用于数据归档,保留长期的历史数据。
5.2 备份数据库
语法:
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
示例:
-
在Linux终端(windows终端)
命令:mysqldump -P3306 -u root -p -B test > /root/MySQL_data/test.sql
按回车键后会让同学们输入密码。-B
:备份数据库的起始位置。后面会详讲。test.sql
: 是一个文件,用来存储数据库的数据,名字可以任意取,但是后缀一定是sql
。
-
查询数据库的目录。
-
再打开文件看一看。
命令:vim test.sql
可以看出,文件的内容是创建数据的命令。
5.3 恢复数据库
-
先打开MySQL数据库
命令:mysql -h 8.148.27.113 -P 3306 -u root -p
-
输入要备份的路径及文件
命令:source /root/MySQL_data/test.sql;
-
再次查看数据库
5.4 -B 的作用
当使用 -B 选项时,mysqldump
会在生成的 SQL 文件中包含一个 CREATE DATABASE 语句。这确保了在恢复数据时,如果目标数据库不存在,会自动创建该数据库。这使得备份和恢复过程更加完整和可靠。
如果不使用 -B 选项时,mysqldump
不会在生成的 SQL 文件中包含一个 CREATE DATABASE 语句。当别恢复的时候需要创建一个数据库,然后进入到创建的数据库中进行恢复。
示例:
-
备份数据库,不使用 -B
命令:mysqldump -P 3306 -u root -p test > /root/MySQL_data/test.sql
-
打开备份好的数据文件。
命令:vim test.sql
同学们可以对比下图看一看,是不是少了一部分创建数据库的语句。
-
进入MySQL数据库,创建一个数据库然后进入
命令:create database test;
命令:use test
-
恢复数据库
命令:source /root/MySQL_data/test.sql;
6. 备份和恢复数据库中的表
6.1 备份表
在Linux终端或Windows终端:
命令:mysqldump -P3306 -u root -p 数据库名 表名1 表名2 ··· > 文件路径及sql文件
示例:
-
备份表
命令:mysqldump -P3306 -u root -p new test > /root/MySQL_data/test.sql
-
打开
test.sql
文件。
命令:vim test.sql
6.2 恢复表
-
打开MySQL数据库
命令:mysql -h 8.148.27.113 -P 3306 -u root -p
-
进入数据库
命令:use new
-
恢复数据库
命令:source /root/MySQL_data/test.sql;
7. 查看连接情况
命令:show processlist;