目录
[if not exists](#if not exists)
查看数据库
sql
show databases;

创建数据库
直接创建:
sql
create database db_name;

加约束条件
if not exists
如果数据库不存在,则创建,如果数据库已经存在了,就不创建:
sqlcreate database if not exists db_name;
演示:
字符集和校对规则
什么是字符集
字符集(Character Set)不仅仅是一个简单字符的集合,它还包含了这些字符与数字代码之间的映射关系。换句话说,字符集定义了一组符号以及每个符号对应的编码。这种编码是计算机用来存储、处理和传输文本数据的基础。
具体来说,字符集包含以下两个关键要素:
1、字符列表:这是字符集中所有可能的字符或符号,可以包括字母、数字、标点符号、特殊符号以及其他语言的字符等。
2、编码规则:为每个字符分配一个唯一的代码点(Code Point),即一个数字标识符。这个代码点用于在计算机系统内部表示该字符。例如,在ASCII字符集中,大写字母"A"的代码点是65。
在MySQL中,可以查看数据库支持的字符集:
sql
show charset;

什么是校对规则
校对规则(Collation)是数据库管理系统中用于定义字符数据如何进行比较和排序的一组规则。它不仅影响字符串之间的相等性判断,还决定了字符串在排序时的顺序以及模式匹配的行为。校对规则与字符集紧密相关,因为它们共同决定了文本数据的表示、存储和处理方式。
校对规则的主要功能
字符比较:
- 确定两个字符串是否相等。
- 决定一个字符串是否大于或小于另一个字符串。
排序顺序:
- 影响查询结果中记录的排列顺序,特别是在使用
ORDER BY
子句时。模式匹配:
- 影响
LIKE
查询和其他涉及模式匹配的操作,例如是否区分大小写。校对规则的特性
大小写敏感性(Case Sensitivity):
- CI (Case Insensitive) :不区分大小写,如
utf8mb4_general_
ci。- CS (Case Sensitive) 或 Bin (Binary) :区分大小写,如
utf8mb4_
bin。
在MySQL中,可以查看数据库支持的校对规则:
sql
show collation;

查看指定的数据库使用的字符集和校对规则:
sqlSELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'db_name';
只约束字符集时,MySQL会根据所选字符集自动选择一个默认的校对规则:
只约束校对规则,MySQL会根据所选的校对规则自动选择一个默认的字符集:
同时约束字符集和校对规则:
比较是否区分大小写字母差异
我们可以用区分和不区分大小写的校对规则来感受一下不同校对规则的差异:
不区分大小写的校对规则:
1、创建表:

2、输入数据:

3、查询: 由于不区分大小写字母,所以大写 A 和小写 a 都会被筛选出来。

4、排序:由于不区分大小写,所以大写 A 和小写 a 是排在一起的。

区分大小写的校对规则:
1、创建表:

2、插入数据:

3、查询:由于该校验规则区分大小写,所以只有小写 a 被筛选出来。

4、排序:大写字母的 ASCII 小于小写字母的,所以大写字母排在前,小写字母排在后。

显示创建语句
sql
show create database db_name;

删除数据库
sql
drop database db_name;

进入指定数据库
sql
use db_name;
查看当前所在的数据库
sql
select database();
修改数据库
一般很少修改数据库的库名,下面只展示如何修改数据库的字符集和校对规则。
修改字符集和校对规则:

也可以只修改字符集/校对规则:

备份数据库
在任意路径下输入以下指令,并输入想要备份的数据库,并给对应的备份文件命名:
sqlmysqldump -P3306 -u root -p -B db_name > filename.sql

打开备份文件时,可以看出备份文件中记录了用户对数据库的操作。

还原数据库
故意删除数据库:

还原:
sql
source pathname;
由于文件中记录了用户对数据库的历史操作,在还原时,会重做这些操作,来达到恢复效果。

查看还原情况: 还原成功!
