一些背景信息:
(ANSI)SQL标准要求未引用的标识符以大写形式存储在系统目录中,并且未引用的标识符不区分大小写。
根据标准下面的非引用的标识符引用相同的对象(例如,表):
,
FOOBAR,
foobar(
FooBar和所有将被存储为
FOOBAR在系统目录中)。
下面 引用 标识符文献3个不同的对象:
"FOOBAR",
"foobar",
"FooBar"。
几乎所有的DBMS至少都符合未引用标识符 不区分大小写的要求 。据我所知,除了MySQL和SQL
Server之外,两者都可以配置为区分大小写,即使对于未加引号的标识符也是如此。我不确定SQL
Server的默认行为是什么(正如Damien在他的评论中指出的那样,这取决于用于SQL Server的排序规则)。
MySQL更加令人困惑,因为它的行为取决于几种配置设置,存储引擎和文件系统的组合。我知道的所有其他DBMS在所有平台和安装中的行为都是一致的。
PostgreSQL遵循区分大小写的原则,但它会将所有内容折叠为小写。
因此,考虑到这些规则,我 认为 使用下划线的“传统”命名约定源于对象名称以大写形式存储的事实。获得“可读”名称的唯一方法是用下划线分隔名称的重要部分。
由于SQL
Server保留大小写(类似于Windows下的NTFS的工作方式),因此它甚至更加不符合标准,因此它不会将名称折叠成任何东西。因此,当名称存储在系统目录中时,它不会更改名称的大小写(但默认情况下,它不区分大小写)。因此,与在Oracle环境中相比,您会发现使用CamelCase在Microsoft环境中工作的人员更多。



