如果我有两个名为
如果我有一个名为
category_id
和Category_Id
的列,它们是不同的吗?如果我有一个名为
category
和Category
的表,它们也是不同的。category_id
和Category_Id
的列,它们是不同的吗?category
和Category
的表,它们也是不同的。在Unix上,表名是区分大小写的。而在Windows上则不是。很有趣,对应着它们各自的文件系统。你觉得这是巧合吗?
换句话说,如果你在Windows上开发但计划在Linux机器上部署,最好也要用Linux版的MySQL测试你的SQL语句,否则就要准备在生产环境中遇到神秘的“找不到表”错误了。虚拟机现在很便宜。
字段(列)名称不区分大小写。
编辑:我们讨论的是MySQL 服务器机器上的操作系统,而不是客户端。
根据MySQL文档:
在Windows系统中,数据库和表名不区分大小写,在大多数Unix操作系统中区分大小写。有一个值得注意的例外是基于Unix的Mac OS X,该系统使用默认的文件系统类型(HFS+),该文件系统类型不区分大小写。
并且
无论在哪个平台上,列和索引名称都不区分大小写,列别名也不区分大小写。
奇怪的是,在MySQL Workbench中,即使在Windows上也似乎对大小写敏感。
我们刚试图更改SELECT语句的结果,但Workbench不允许我们这样做,抱怨我们的查询没有包括表的主键(实际上包含了,但是小写),因此结果是只读的。使用正确大小写(ID而非id)运行相同的查询将使我们如预期地编辑结果。
.frm
文件,用于存储数据结构。由于表格和文件名相同,所以表格的大小写敏感性完全取决于服务器文件系统的大小写敏感性。 - Andras NemethSize
和size
是同一列。INSERT INTO table_name (SIZE, gender) VALUES (123, 456);
将成功地插入size
和GeNdEr
列的值。 - Sliq