51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

mysql怎么设置区分大小

mysql区分大小写吗 {#articleContentId}

在windows下默认是不区分大小写的,在linux下默认是区分大小写的。

所以,为了避免出问题,许多公司的数据库编程规范中明确规定:库名、表名、列名、索引名一律小写,不同单词之间以下划线分割,且控制在32个字符以内。

mysql中的数据表是大小写不敏感的,这意味着在查询时不会区分大小写。但是,在某些情况下,我们需要mysql区分大小写,这时需要进行相应的设置。本文将介绍mysql如何设置区分大小写。

一、MySQL大小写区分的原理

在MySQL中,名称仅被视为字符,而不是语言的一个单词或短语。因此,MySQL不使用大小写来确定名称的区别。例如,MySQL将"table1"和"Table1"视为相同的名称。

二、设置MySQL区分大小写

  1. 在my.cnf配置文件中进行设置

打开my.cnf配置文件,如果不存在,则创建一个新文件。在文件中添加以下代码:

[mysqld]
lower_case_table_names=1

保存文件并重启MySQL服务器。通过将lower_case_table_names设置为1,可以使MySQL强制区分大小写。如果将其设置为0,则MySQL将不区分大小写,默认值为0。

2在命令行中进行设置

全局修改

对于没有权限修改MySQL配置文件的用户,可以在MySQL命令行中设置。在命令行中使用以下命令:

SET GLOBAL lower_case_table_names=1;

这会将在MySQL服务器的全局范围内将lower_case_table_names参数设置为1。这种设置将在MySQL服务器重新启动后继续保持。

临时修改

也可以使用以下命令在当前会话中设置:

SET SESSION lower_case_table_names=1;

这将在当前会话中将lower_case_table_names参数设置为1。此设置将在当前会话结束时失效。

三、注意事项

  1. 使用lower_case_table_names=1参数会使敏感的表名大小写被转换为小写。如果两个表具有相同的名称但用不同的大小写方式书写,则当lower_case_table_names=1时,这些表将变成同一个表。因此,使用该参数时需要小心选择表名。
  2. 在使用lower_case_table_names=1的情况下,无法使用大小写敏感的非二进制排序或查找规则,例如,utf8_bin。这是因为,lower_case_table_names=1会把所有字符转换为小写,这会导致大小写敏感的排序或查找规则不起作用。
  3. 在使用lower_case_table_names=1的情况下,大小写敏感的字符集特征不可用。例如,在latin1_cs或utf8_cs字符集中,cs表示大小写敏感,但是lower_case_table_names=1会强制将所有字符转换为小写,因此大小写敏感规则将不起作用。

四、总结

MySQL数据库的默认设置是不区分大小写的。但是,当需要在查询时区分大小写时,可以在my.cnf配置文件中将lower_case_table_names设置为1,或者在MySQL命令行中使用SET语句进行设置。但需要注意的是,使用lower_case_table_names=1有一些限制,如果不小心选择表名或字符集,可能会导致一些问题。因此,需要谨慎使用。

{#more-17932}

1-windows 下 配置小写为主

例如,在windows下,mysql的配置文件my.ini中默认配置

lower_case_table_names=1,

表名、表别名、库名在磁盘上以小写存储;

比较是大小写不敏感的;

在查询的时候,mysql将表名、表别名、库名先转换为小写然后再查询:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/panghuangang/article/details/134734124

通过将lower_case_table_names设置为1,可以使MySQL强制区分大小写。如果将其设置为0,则MySQL将不区分大小写,默认值为0。

赞(8)
未经允许不得转载:工具盒子 » mysql怎么设置区分大小