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

如果我有一个名为 category_idCategory_Id的列名,它们是否不同?

如果我有一个表叫 categoryCategory,它们是不是不一样?

42979 次浏览

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

换句话说,如果您正在 Windows 上开发,但是计划部署到 Linux 机器上,那么最好也在基于 Linux 的 MySQL 上测试 SQL,或者在推销时准备应对神秘的“表未找到”错误。现在虚拟机很便宜。

字段(列)名称不区分大小写。

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

对于数据库和表名称,它取决于底层操作系统。 参见 8.2.2识别大小写敏感性

来自 MySQL 文件:

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

还有

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

奇怪的是 看起来在 MySQL 工作台中甚至在 Windows 上也是区分大小写的。

我们只是试图修改 SELECT 语句的结果,但 Workbench 不让我们这么做,抱怨我们的查询没有包含表的主键(确实包含了,但是是小写的) ,所以结果是只读的。在适当的情况下(ID 而不是 ID)使用主键运行相同的查询将使我们能够按照预期编辑结果。