MySQL 数据库库操作
数据库有查找、创建、修改和删除操作。
查找数据库
语法
show databases;
需要注意的是 databases 是复数!
查找
数据库名是不能重复的,因此程序员不单在单纯需要查找数据库时使用 show databases;(英文分号要写上)查找,在新建数据库时也要先看一下要创建的数据库名是否已经存在。

新建数据库
语法
在很多编程语言官方文档中都会出现**{} \[\] |**。
**{}**指{}中的语法不能省略,是必写的。
**\[\]**指\[\]中的语法可写,可不写。
**|**表示选择,如 A|B 表示可选择 A 或者 B。
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option];
create_option: [DEFAULT] {CHARACTER SET [=] charset_name | COLLATE [=] collation_name | ENCRYPTION [=] {'Y' | 'N'}}

不手动规定字符集和排序规则,就使用数据库服务默认的字符集和规则。(默认规则在下面)
排序规则:是控制字符比较的核心机制。规则可指定字符是否忽略大小写,是否忽略**重音。
重音:**如果忽略重音,则视 é、è、ê 与 e 相同,将 ñ 视为与 n 相同。
| ai | 不区分重音 |
| ci | 不区分大小写 |
| as | 区分重音 |
| cs | 区分大小写 |
| general | 意味着这个排序规则是通用的、标准的,适用于大多数场景 (不需要过多了解) |
在 MySQL5.7 中默认字符集是latin1。(使用latin1字符不能出现中文)
在 MySQL8.0 中默认字符集是utf8mb4。(utf8mb4支持中文字符)
在 MySQL8.0 中默认排序规则是utf8mb4_0900_ai_ci。(基于 Unicode 9.0.0 版本的不区分重音和不区分大小写的排序规则)
在 MySQL5.7 中默认排序规则是utf8mb4_general_ci。(通用的不区分大小写的规则)
梳理一下知识点:
- UTF-8 是一种字符编码方式,它的作用是将 Unicode 字符转化为字节序列(也就是转化为二进制数据),它专门为编码 Unicode 中的字符而生;
- utf8mb4 是一个字符集,它包含了 Unicode 中大小为 1~4 字节的字符(也就是支持完整的 Unicode 字符集)。
- utf8mb3 是一个字符集,它包含了 Unicode 中大小为 1~3 字节的字符(支持部分 Unicode 字符)。
- Unicode 是世界统一的字符集标准,为世界上几乎所有语言的每个字符分配了一个数字编码(码点),Unicode 相当于是做一个'标准',具体的实施分配给其他字符集,如 utf8mb4、ASCII 等。
**你可能看到过别人或者 AI 说,MySQL 中 utf8mb4 拓展了 UTF-8 的支持范围,这种说法是很容易造成误解的。**UTF-8 本来就支持编码 Unicode 的全部字符,utf8mb4 也只是包含 Unicode 没有增加新字符,这也就谈不上 utf8mb4 拓展了 UTF-8 编码支持范围。其实 UTF-8 原本支持范围没有被 utf8mb4 影响,只是 MySQL 5.5.3 之前采用的字符集是 utf8mb3,导致 UTF-8 在 MySQL 中不能编码 Unicode 中四个字节的字符,但后面引入了 utf8mb4,UTF-8 也就能在 MySQL 内编码全部 Unicode 字符了,这就在 MySQL 中拓展了 UTF-8 的支持范围。
修改数据库服务全局默认的字符集和规则
查看当前数据库服务(MySQL 8.0+)全局默认的字符集:
show variables like '%character%';

Windows在 C:\ProgramData\MySQL\MySQL Server 8.0 路径下找到 my.ini 文件,打开它,修改后记得保存。

(Linux路径为**/etc/my.cnf 或 /etc/mysql/my.cnf,**修改这个 my.cnf 文件,具体怎么修改不知道...)
新建数据库
数据库一般不需要加密。推荐下面这样创建数据库的语法。

下面这种创建数据库的写法是极其不推荐的:
create database mmm;
不推荐的原因:1. 在图形化客户端工具的查询全局运行时如果 database_name 已经存在,create database mmm; 就会报错(没有写 if not exists),报了一个错就导致整个查询就运行不了了。 2. 手动设置这个创建的数据库的字符集和排序规则是保险的,可读性好的。
修改数据库
语法
ALTER {DATABASE | SCHEMA} [db_name] alter_option ...;
alter_option: {[DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name | [DEFAULT] ENCRYPTION [=] {'Y' | 'N'} | READ ONLY [=] {DEFAULT | 0 | 1}}

注意:解析图中,数据库名被\[\]括起来,但不是说,不指定数据库名就可修改数据库配置,而是之前已经用**use database_name;**选定数据库了,在选定数据库的前提下可以省略数据库名,直接修改当前已选定的数据库配置。下面有易理解的修改实战。
修改

在选择数据库后,也能使用包含数据库名的修改数据库操作。
删除数据库
语法
删除语法:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
删除

大家注意!以后在公司开发时不要随意删除数据库!!


