MySQL中的列和表名称是否区分大小写?

时间:2010-01-05 20:50:02

标签: mysql collation case-sensitive

如果我有一个名为category_idCategory_Id的列名,它们会有所不同吗?

如果我有一个名为categoryCategory的表,它们是不同的吗?

5 个答案:

答案 0 :(得分:71)

在Unix上,表名区分大小写。在Windows上,它们不是。好玩,不是吗?有点像他们各自的文件系统。你认为这是巧合吗?

换句话说,如果您计划在Linux计算机上进行部署,那么也可以针对基于Linux的MySQL更好地测试SQL,或者在生产时准备好应对神秘的“未找到表”错误。 VM现在很便宜。

字段名称不区分大小写。

编辑:我们谈论的是MySQL 服务器机器上的操作系统,而不是客户端。

答案 1 :(得分:17)

来自MySQL documentation

  

数据库和表名在Windows和案例中不区分大小写   在大多数Unix版本中都很敏感。一个值得注意的例外是Mac OS   X,它是基于Unix的,但使用默认的文件系统类型(HFS +)   不区分大小写。

  

列和索引名称在任何平台上都不区分大小写,也不是列别名。

答案 2 :(得分:5)

对于数据库和表名,它取决于底层操作系统。 见8.2.2. Identifier Case Sensitivity

答案 3 :(得分:3)

您可能需要阅读this。可以在MySQL中设置区分大小写,但在多个环境中工作时,它确实只是一个问题。

答案 4 :(得分:1)

奇怪的是,即使在Windows上,似乎似乎在MySQL Workbench中也是区分大小写的。

我们只是试图改变SELECT语句的结果,但Workbench并没有让我们抱怨我们的查询没有包含表的主键(它以小写的形式)所以结果是只读的。在适当的情况下使用主键运行相同的查询(ID而不是id)将允许我们按预期编辑结果。