目录
我们的数据库都是在数据库服务器中创建的。

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

2.新建数据库
1.1语法
在很多编程语言官方文档中都会出现**{} [] |**。
**{}**指{}中的语法不能省略,是必写的。
**[]**指[]中的语法可写,可不写。
**|**表示选择,如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的支持范围。
1.2修改数据库服务全局默认的字符集和规则
查看当前数据库服务(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文件,具体怎么修改不知道...)
1.3新建
数据库一般不需要加密。推荐下面这样创建数据库的语法。

下面这种创建数据库的写法是极其不推荐的:
create database mmm;
不推荐的原因 :**1.**在图形化客户端工具的查询全局运行时如果database_name已经存在,create database mmm; 就会报错(没有写if not exists),报了一个错就导致整个查询就运行不了了。 **2.**手动设置这个创建的数据库的字符集和排序规则是保险的,可读性好的。
3.修改数据库
1.1.语法
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;**选定数据库了,在选定数据库的前提下可以省略数据库名,直接修改当前已选定的数据库配置。下面有易理解的修改实战。
1.2修改

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

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