查看 MySQL 支持的存储引擎和默认的存储引擎,再查看字符集、校对规则和各个级别的设置,比较不同校对规则的比较结果。
MySQL 8.0 和 MySQL Workbench,机房电脑已装好。所有语句在 Workbench 的 SQL 编辑区中执行。
Ctrl+Enter 执行光标所在的一句,Ctrl+Shift+Enter 执行全部。Mac 上把 Ctrl 换成 ⌘。
输入法切到英文。表名、字段名不加引号,字符串值才用单引号。
本实验只查看服务器的设置,不需要准备数据。先执行这一句,确认连接的是 MySQL 8.0。
SELECT VERSION();SHOW ENGINES;| Engine | 存储引擎的名字 |
| Support | YES 表示支持,DEFAULT 表示默认,NO 表示不支持 |
| Transactions | 是否支持事务 |
SHOW VARIABLES LIKE '%storage_engine%'; SET default_storage_engine = MyISAM; SHOW VARIABLES LIKE 'default_storage_engine'; SET default_storage_engine = InnoDB;
| %storage_engine% | % 匹配任意多个字符,查出名字中含有 storage_engine 的变量 |
| SET | 修改变量的值,只对当前连接有效,断开后恢复 |
| 改回 InnoDB | 后面各章都使用 InnoDB 表 |
SHOW CHARACTER SET; SHOW CHARACTER SET LIKE 'utf8%'; SHOW CHARACTER SET LIKE 'gbk';
| Default collation | 这个字符集默认的校对规则 |
| Maxlen | 一个字符最多占几个字节 |
| LIKE | 只显示名字与模式匹配的字符集 |
SHOW COLLATION WHERE Charset = 'utf8mb4'; SHOW COLLATION LIKE 'gbk%';
| Collation | 校对规则的名字 |
| Default | Yes 表示这个字符集默认的校对规则 |
| _ci、_cs、_bin | 不区分大小写、区分大小写、按编码值比较 |
SELECT 'Tom' = 'tom' COLLATE utf8mb4_0900_ai_ci AS ai_ci, 'Tom' = 'tom' COLLATE utf8mb4_0900_as_cs AS as_cs, 'Tom' = 'tom' COLLATE utf8mb4_bin AS bin_cmp;
| = | 比较两个字符串,相等为 1,不相等为 0 |
| COLLATE | 在这一次比较中使用指定的校对规则 |
| as_cs | 区分重音,也区分大小写 |
SHOW VARIABLES LIKE 'character%'; SHOW VARIABLES LIKE 'collation%';
| character_set_server | 服务器级的字符集,新建数据库时默认使用它 |
| character_set_client 等 | 连接级的字符集,Workbench 中一般是 utf8mb4 |
| collation_server | 服务器级的校对规则 |