mysql数据库分大小写

更新时间:02-08 教程 由 幻想 分享

MySQL数据库在创建表名、列名、索引名等对象时,默认是不区分大小写的。这就意味着,TABLE_NAME、table_name、Table_Name等都指向同一个表。

但是,在启用了lower_case_table_names选项后,将会出现不同的结果。

mysql>SHOW VARIABLES LIKE "lower_case_table_names";+------------------------+-------+| Variable_name | Value |+------------------------+-------+| lower_case_table_names | 1 |+------------------------+-------+1 row in set (0.00 sec)

当lower_case_table_names的值为1时,MySQL会将所有对象名转化为小写,同时也意味着在创建表名等对象时必须使用小写字母。

mysql>CREATE TABLE users(user_id INT,user_name VARCHAR(50),);ERROR 1064 (42000): You have an error in your SQL syntax;check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(50),)' at line 3

以上代码在启用lower_case_table_names=1时会报错,因为user_name这个列名包含了大写字母。

现在,我们在设置lower_case_table_names为0,再次创建users表,如下所示:

mysql>SET lower_case_table_names=0;Query OK, 0 rows affected (0.00 sec)mysql>CREATE TABLE users(user_id INT,user_name VARCHAR(50),);Query OK, 0 rows affected (0.14 sec)

这次创建成功了。因为在lower_case_table_names=0时,MySQL会区分大小写,所以user_name这个列名不会被自动转换成小写。

在实际开发中,我们需要根据实际情况来选择是否启用lower_case_table_names。如果数据库中包含了大量大小写不一致的对象名,在启用lower_case_table_names后会导致同名对象被覆盖,造成数据的丢失。因此,在进行数据库设计时,最好遵循一定的命名规范,以免出现不必要的麻烦。

声明:关于《mysql数据库分大小写》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2257403.html