2017年4月

MySQL数据库名、表名、列名、别名、字段值大小写规则

MySQL在Window下数据库名、表名、列名、别名大小写规则不敏感。

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
  1、数据库名与表名是严格区分大小写的;
  2、表的别名是严格区分大小写的;
  3、列名与列的别名在所有的情况下均是忽略大小写的;
  4、字段值默认字符集情况下是大小写不敏感的。

同时MySQL中数据库名和表名的大小写敏感受参数lower_case_table_names影响,为0时不做处理敏感的地方区分大小写,为1时,表示将转化为小写后存储,查询会做转化,因此不区分大小写,此配置的操作对Window系统的MySQL同样有效。

Linux之所以会有架构敏感,全因为Linux的文件存储系统。数据库名和表名在系统的存储形式分别是文件夹和文件,因此会敏感。

字段值的大小写由mysql的校对规则来控制。提到校对规则,就不得不说字符集。字符集是一套符号和编码,校对规则是在字符集内用于比较字符的一套规则。
一般而言,校对规则以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束 。比如 utf8字符集,utf8_general_ci,表示不区分大小写,这个是utf8字符集默认的校对规则;utf8_general_cs表示区分大小写,utf8_bin表示二进制比较,同样也区分大小写 。