MySQL————库的操作
1.库的创建
create database [if not exists] db_name [character set utf8mb4];
本质是在/var/lib/mysql创建一个目录。
- [] 是可选项
- if not exists:如果系统没有 db_name 的数据库,则创建一个名叫 db_name 的数据库,如果有则不创建。
- [character set utf8mb4]:如果系统没有 db_test 的数据库,则创建一个使用utf8mb4字符集的 db_test 数据库,如果有则不创建。
- 说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集 utf8,校验规则是 utf8_ general_ ci。
数据库创建的时候有2个编码集:
- 数据库编码集:数据库编码集是数据库存储数据时采用的编码格式;(不同国家使用的语言文字(如中文、英文、日文等)存在差异,数据库编码集为不同国家的字符提供统一的存储规则,确保各国语言数据能被正确保存且不出现乱码。)
- 数据库校验集合:支持字段比较的编码规则,本质上也是读取数据时采用的编码格式。
数据库无论对数据做任何操作都必须保证和编码必须是一致的!
使用案例:
- 创建一个使用utf8字符集的 db2 数据库
create database db2 charset=utf8;
create database db2 character set utf8;
- 创建一个使用utf字符集,并带校对规则的 db3 数据库。
2.字符集和校验集
2.1 查看系统默认字符集以及校验规则
show variables like 'character_set_database';
show variables like 'collation_database';
2.2 查看数据库支持的字符集
show charset;
显示的字符集主要用于控制数据库支持的语言类型,例如 utf8 字符集就支持中文的使用。
2.3 查看数据库支持的字符集校验规则
show collation;
2.4 校验规则对数据库的影响
2.4.1 不区分大小写
创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]
create database test1 collate utf8_general_ci;
use test1;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
进行查询:
结果排序:
2.4.2 区分大小写
创建一个数据库,校验规则使用utf8_ bin[区分大小写]
create database test2 collate utf8_bin;
use test2;
create table person(name varchar(20));
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
进行查询:
结果排序:
3.操纵数据库
3.1 查看数据库
show databases;
3.2 查看当前所在数据库
select database();
3.2 删除数据库
drop database [if not exists] db_name;
执行删除之后的结果:
- 数据库内部将无法查看对应的数据库;
- 对应的数据库文件夹会被级联删除,其中包含的所有数据表也会被一并移除。
注意:不要随意删除数据库
3.3 修改数据库
对数据库的修改主要指的是修改数据库的字符集、校验规则。
alter database db_name [character=新字符集] [collate 新排列规则];
alter database db_name [character set 新字符集] [collate 新排列规则];
3.4 显示创建语句
show create database 数据库名;
- MySQL 建议我们关键字使用大写,但是不是必须的。
- 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字。
- /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。
3.5 备份和恢复
3.5.1 备份
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
示例:将mytest库备份到文件(退出连接)
mysqldump -P3306 -u root -p123456 -B mytest > /mytest.sql
这时,可以打开看看 mytest.sql 文件里的内容,其实它包含了我们创建数据库、建表以及导入数据的所有语句。
3.5.2 还原
3.5.2.1 还原前准备
- 确认备份文件位置
- 检查备份文件完整性(可通过cat 文件名预览内容)
3.5.2.2 还原步骤
方法 1:手动指定数据库(适用于普通备份文件)
1.创建并选择目标数据库
-- 创建数据库(若不存在)
CREATE DATABASE IF NOT EXISTS test1;-- 选择要操作的数据库
USE test1;
2.执行还原命令
source /path/test1.sql;
方法 2:直接还原(适用于带数据库定义的备份文件)
若备份时使用--databases参数(如mysqldump --databases test1 > test1.sql),文件中已包含CREATE DATABASE和USE语句,可直接执行:
source /path/test1.sql;
3.5.3 注意事项
如果备份的不是整个数据库,而是其中的一张表,怎么做?
mysqldump -u root -p 数据库名 表名1 表名2 > /path/mytest1.sql
同时备份多个数据库
mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。
3.6 查看连接情况
show processlist;