MySQL大小写以及字符集问题
数据库名、表名和字段名大小写
在MySQL终端中使用命令SHOW GLOBAL VARIABLES LIKE '%lower_case%';查询配置
mysql> SHOW GLOBAL VARIABLES LIKE '%lower_case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | ON |
| lower_case_table_names | 1 |
+------------------------+-------+
2 rows in set, 1 warning (0.01 sec)
- lower_case_file_system:表示操作系统文件系统是否大小写敏感(只读参数,无法修改)
- ON:大小写不敏感
- OFF:大小写敏感
- lower_case_table_names:控制表名和数据库名的大小写敏感性(可修改)
- 0:大小写敏感(Unix/Linux默认)
- 1:大小写不敏感(Windows默认)
- 2:存储区分大小写但查询不区分(macOS默认)
Windows下默认大小写不敏感,创建数据库和表的时候,数据库名和表名默认小写。但是字段名会保留大小写。
虽然DeepSeek说可以在一张表中创建两个仅大小写不一样的字段,但我试了下不行,MySQL版本是8.4.4。
mysql> create table Test2(Id int, id int);
ERROR 1060 (42S21): Duplicate column name 'id'
字段内容大小写
字段内容比较规则由COLLATE确定,如utf8mb4_0900_ai_ci中的ci(case insensitive)表示大小写不敏感。cs(case sensitive)表示大小写敏感。
- 创建表时可以通过指定COLLATE的方式设置字段内容大小写敏感。
- 已存在的表,或者临时要以大小写敏感规则查询,可以在查询时添加Binary关键字
select * from tb_user where BINARY username ='user';
浙公网安备 33010602011771号