如果我有一个名为category_id
and的列名Category_Id
,它们是否不同?
如果我有表叫category
and Category
,它们有什么不同吗?
如果我有一个名为category_id
and的列名Category_Id
,它们是否不同?
如果我有表叫category
and Category
,它们有什么不同吗?
在 Unix 上,表名区分大小写。在 Windows 上,它们不是。有趣,不是吗?有点像他们各自的文件系统。你认为这是巧合吗?
换句话说,如果您在 Windows 上进行开发但计划部署到 Linux 机器,那么最好也针对基于 Linux 的 MySQL 测试您的 SQL,或者在生产时为神秘的“未找到表”错误做好准备。这些天虚拟机很便宜。
无论如何,字段(列)名称不区分大小写。
编辑:我们谈论的是 MySQL服务器机器上的操作系统,而不是客户端。
从 MySQL文档:
数据库和表名在 Windows 中不区分大小写,在大多数 Unix 中区分大小写。一个值得注意的例外是 Mac OS X,它基于 Unix,但使用不区分大小写的默认文件系统类型 (HFS+)。
和
列名和索引名在任何平台上都不区分大小写,列别名也不区分。
对于数据库和表名,它取决于底层操作系统。见8.2.2。标识符大小写敏感性
奇怪的是,即使在 Windows 上,它在 MySQL Workbench 中似乎也是区分大小写的。
我们只是试图更改 SELECT 语句的结果,但 Workbench 不允许我们这样做,抱怨我们的查询不包括表的主键(它确实包括但小写),因此结果是只读的。在适当的情况下使用主键(ID 而不是 id)运行相同的查询将使我们能够按预期编辑结果。