79

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

如果我有表叫categoryand Category,它们有什么不同吗?

4

4 回答 4

92

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

换句话说,如果您在 Windows 上进行开发但计划部署到 Linux 机器,那么最好也针对基于 Linux 的 MySQL 测试您的 SQL,或者在生产时为神秘的“未找到表”错误做好准备。这些天虚拟机很便宜。

无论如何,字段(列)名称不区分大小写。

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

于 2010-01-05T20:52:19.483 回答
28

从 MySQL文档

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

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

于 2014-05-29T08:49:22.587 回答
5

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

于 2010-01-05T20:53:38.340 回答
1

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

我们只是试图更改 SELECT 语句的结果,但 Workbench 不允许我们这样做,抱怨我们的查询不包括表的主键(它确实包括但小写),因此结果是只读的。在适当的情况下使用主键(ID 而不是 id)运行相同的查询将使我们能够按预期编辑结果。

于 2015-07-23T14:06:33.580 回答