一.创建数据库create database 名称;
字符集和校验规则
一、字符集(Character Set)
表示数据库中可以使用哪些字符。
例如:
utf8
可以存储包括中文在内的多种语言字符,gbk
更适合中文字符环境。
功能 举例 控制支持哪些语言字符 utf8
支持中文、英文、阿拉伯语;latin1
只支持西欧语言控制存储空间 不同字符集一个字符占用字节不同, utf8
最多占 3 字节,utf8mb4
最多 4 字节,能支持 Emoji 表情决定客户端/服务器之间的编码转换 保证数据传输时不乱码(客户端字符集要和服务器字符集兼容) 二、校验规则(Collation)
表示如何对字符进行比较和排序。
不同的校验规则可能决定是否区分大小写、排序方式。
utf8mb4_general_ci
:ci 表示 case-insensitive,不区分大小写。utf8mb4_bin:bin 表示使用 二进制方式比较,区分大小写。
功能 示例 说明 是否区分大小写 utf8mb4_general_ci
不区分,utf8mb4_bin区分'a' = 'A'
是 true 还是 false排序方式 utf8mb4_general_ci
排序为a, A, b, B
,utf8mb4_bin排序为A, B, a, b
根据不同规则,排序结果会不一样 性能优化 简单的校验规则(如 utf8mb4_general_ci
)比复杂规则(如utf8_unicode_ci
)快一般查询多的话用 general_ci;需要严格字符排序用 unicode_ci
1. 查看系统默认字符集以及校验规则
//查看默认字符集 show variables like 'character_set_database'; //查看默认校验规则 show variables like 'collation_database';
create database 名称; 像这样直接创建数据库就会用上默认的配置。
当前值 说明 utf8mb4
表示数据库使用了 UTF-8 的完整版本,支持 Emoji 等 4 字节字符 utf8mb4_general_ci
不区分大小写的通用校验规则,排序速度较快
2.查看数据库支持的字符集show charset;
3. 查看数据库支持的字符集校验规则show collation;
4.指定character set字符集和collate校验规则
create database 数据库名称 character set 字符集 collate 校验规则;
//1.bin 区分大小写 create database b_bin character set utf8mb4 collate utf8mb4_bin; //2.ci 不区分大小写 create database b_ci character set utf8mb4 collate utf8mb4_general_ci;
1.utf8mb4_bin bin 区分大小写的
2.utf8mb4_general_ci ci 不区分大小写
二.操纵数据库
1.查看数据库show databases;
查看现在创建的数据库有哪些
2.显示创建语句show create database 数据库名;
可以看出数据库的字符集和校验规则
CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
3.修改数据库字符串集校验规则alter database (后面加指定的数据库及配置)
alter database b_bin character set gbk collate gbk_chinese_ci;
4.删除数据库 drop database 数据库名称;
drop database b_bin;
执行删除之后的结果:
数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
三.数据库备份与修复
1.备份数据库 mysqldump -B
mysqldump -u 用户名 -p -B 数据库名(可以备份多个) > 备份文件路径.sql
1.mysqldump -u 用户名 -p 进入mysql客户端
2.-B选项:包含建库语句
.sql 文件 = 建库(-B) + 建表 + 插入数据 + 一些环境设置 + 注释
部分 内容说明 建库语句 CREATE DATABASE b_ci
建表语句 CREATE TABLE person
表字符集 utf8mb4
,utf8mb4_general_ci
表数据 若你表有数据,备份时一定会包含 INSERT
语句环境设置 SET NAMES utf8mb4
,SET @OLD_...
等
2.还原数据库source .sql文件路径
source /var/lib/mysql/b_ci.sql
还原数据库,其实就是再执行一遍 .sql 文件里保存的 SQL 语句。
再理解-B选项:带了-B就会有创建数据库的指令 没带就需要先创建空数据库再source
如果是只是备份数据库中的部分表 一般不带-B
.sql 文件 ≈ SQL 脚本,source 命令 ≈ 执行脚本
mysql> show databases; +--------------------+ | Database | +--------------------+ | b1 | | helloworld | | information_schema | | mydb | | mysql | | performance_schema | | sys | +--------------------+ 7 rows in set (0.00 sec)mysql> source /var/lib/mysql/b_ci.sql Query OK, 0 rows affected (0.00 sec) .... mysql> show databases; +--------------------+ | Database | +--------------------+ | b1 | | b_ci | | helloworld | | information_schema | | mydb | | mysql | | performance_schema | | sys | +--------------------+ 8 rows in set (0.01 sec)mysql>
四.查看连接情况show processlist
show processlist;