【发布时间】:2011-01-01 19:32:13
【问题描述】:
如果我有一个名为category_id 和Category_Id 的列名,它们是否不同?
如果我有名为category 和Category 的表,它们有什么不同吗?
【问题讨论】:
标签: mysql collation case-sensitive
如果我有一个名为category_id 和Category_Id 的列名,它们是否不同?
如果我有名为category 和Category 的表,它们有什么不同吗?
【问题讨论】:
标签: mysql collation case-sensitive
在 Unix 上,表名区分大小写。在 Windows 上,它们不是。有趣,不是吗?有点像他们各自的文件系统。你认为这是巧合吗?
换句话说,如果您在 Windows 上进行开发但计划部署到 Linux 机器上,最好也针对基于 Linux 的 MySQL 测试您的 SQL,或者在生产时为神秘的“未找到表”错误做好准备。现在虚拟机很便宜。
字段(列)名称不区分大小写。
编辑:我们谈论的是 MySQL 服务器机器上的操作系统,而不是客户端。
【讨论】:
SELECT * FROM my_table WHERE MY_TABLE.col=1;,非常正确,但在任何情况下都应视为区分大小写...
.frm文件来存储数据结构。由于表名和文件名相同,所以表的大小写敏感性完全取决于服务器上文件系统的大小写敏感性。
Size 和 size 是同一列。 INSERT INTO table_name (SIZE, gender) VALUES (123, 456);将成功插入size和GeNdEr列中的值
奇怪的是,即使在 Windows 上,它似乎在 MySQL Workbench 中也是区分大小写的。
我们只是试图更改 SELECT 语句的结果,但 Workbench 不允许我们这样做,抱怨我们的查询不包含表的主键(它确实包含但小写),因此结果被读取 -只要。在正确的情况下使用主键(ID 而不是 id)运行相同的查询将使我们能够按预期编辑结果。
【讨论】:
来自 MySQL documentation:
数据库和表名在 Windows 中不区分大小写,并且大小写 在大多数 Unix 版本中都很敏感。一个值得注意的例外是 Mac OS X,它基于 Unix,但使用默认的文件系统类型 (HFS+) 不区分大小写。
和
列名和索引名在任何平台上都不区分大小写,列别名也不区分。
【讨论】:
对于数据库和表名,取决于底层操作系统。 见8.2.2. Identifier Case Sensitivity
【讨论】: