文章目录
以下内容基于Mysql:8.0.20进行讲解。
所谓的大小写敏感指的是指的是大写与小写是两个两个值,而大小写不敏感指的是小写跟大写看做是一个值。
一、MySQL大小写敏感规则
Linux下:
- 数据库名与表名是严格区分大小写的;
- 表的别名是严格区分大小写的;
列名与列的别名在所有的情况下均是忽略大小写的;
- 变量名也是严格区分大小写的;
Windows下:
- 都不区分大小写。
Mac OS下,文件系统类型HFS+,非UFS卷:
- 都不区分大小写。
MySQL中控制数据库名和表名的大小写敏感由参数lower_case_table_names
控制,为0时表示区分大小写,为1时,表示将名字转化为小写后存储,不区分大小写。在不同的操作系统上,这个参数的默认值不同:
- Unix(包括Linux)下,默认值为0,表示对数据库名和表名的大小写是敏感的。
- Windows下,默认值为1,表示不敏感,即在存储和查找时会将名称转换为小写。
- macOS下,默认值为2,表示存储区分大小写,但在查询时会转换为小写。
官网介绍:https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
lower_case_table_names:
-
0: 使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母在硬盘上保存表名和数据库名。名称比较对大小写敏感。
在大小写不敏感的操作系统如windows或Mac OS x上我们不能将该参数设为0
,如果在大小写不敏感的文件系统上将此参数强制设为0,并且使用不同的大小写访问MyISAM表名,可能会导致索引破坏。 -
1: 表名在硬盘上以小写保存,名称比较对大小写不敏感。MySQL将所有表名转换为小写在存储和查找表上。该行为也适合数据库名和表的别名。该值为Windows的默认值。
-
2: 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写字母进行保存,但MyS