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';
posted @ 2025-04-14 11:25  左崔吉  阅读(65)  评论(0)    收藏  举报