引言
后端开发,会时不时地和数据库打交道,mysql 数据库作为开源数据库,市场占有率相当高,很有研究和学习的价值。
在之前的博客中也提到了 mysql 数据库的一些常用的操作和介绍,在这里聊一聊数据库大小写的问题。mysql 开发过程中有可能会添加外键,遇到问题不妨先看看字段大小写是否匹配。
大小写规则
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的。
MySQL在Windows下都不区分大小写。
所以在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在 Windows 环境下只要对数据库的配置做下改动就行了,具体操作如下:
在MySQL的配置文件中 my.ini [mysqld] 中增加一行
lower_case_table_names = 1
参数解释:
- 0:区分大小写
- 1:不区分大小写
实例说明
建立 usertable:
create table `usertable`(
`id` varchar(32) binary,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
建立 mytable 并使用外键:
create table `mytable`(
`id` varchar(32) binary,
`uid` varchar(32) binary,
PRIMARY KEY (`id`),
CONSTRAINT `user_1` FOREIGN KEY (`uid`) REFERENCES `usertable` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果在 mytable 表中,外键关联的时候 usertable 错误写成 “userTable” 或者其它形式,则会关联失败。
总结
由上可以看出大小写对 mysql 有很大的影响。开发过程中,应该尽量按大小写敏感的原则去开发。
开发过程中可以把 lower_case_table_names
的值设为 0,便于控制代码大小写敏感,提高代码的兼容性和严谨性。
参考
https://www.cnblogs.com/50614090/archive/2011/07/25/2116330.html