我应该写表格和列名称总是小写吗?

ope*_*rog 37 database database-design

如果表或列名称包含大写字母,我想知道这是否有问题.有些东西让我相信数据库在保持小写的情况下可以减少麻烦.真的吗?哪些数据库不喜欢表名和列名中的任何大写符号?

我需要知道,因为我的框架从ER模型自动生成关系模型.

(这个问题不是关于它的好坏风格,而是关于它是否是任何数据库的技术问题)

ros*_*533 22

据我所知,使用大写和小写都没有问题.使用小写约定的一个原因是查询使用小写表和列名称以及大写sql关键字更易读:

SELECT column_a, column_b FROM table_name WHERE column_a = 'test'
Run Code Online (Sandbox Code Playgroud)

  • 我认为突出关键词很奇怪.我更喜欢突出显示业务数据,这更重要.此外,使用优秀的SQL编辑器,您已经获得了彩色关键字.它们的上壳会使突出显示倍增. (5认同)

kdg*_*ory 18

SQL-92标准指定标识符和关键字不区分大小写(根据SQL标准第4版指南,Date/Darwen)

这并不是说特定的DBMS不是(1)被破坏,或者(2)可配置(和破坏)

从编程风格的角度来看,我建议对关键字和标识符使用不同的情况.就个人而言,我喜欢大写标识符和小写关键字,因为它突出显示了您正在操作的数据.

  • 例如:`从NAMES中选择FIRST_NAME,LAST_NAME,其中FIRST_NAME ='Alik'` :) (6认同)

dan*_*ben 15

对于数据库来说,对于我所知道的任何数据库引擎,在表名或列名中都有大写字母不是技术问题.请记住,许多数据库实现使用区分大小写的名称,因此请始终使用与创建它们相同的大小写来引用表和列(我说的非常普遍,因为您没有指定特定的实现).

对于MySQL,这里有一些关于它如何处理标识符情况的有趣信息.您可以设置一些选项来确定它们在内部的存储方式. http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html


Bas*_*que 10

SQL 标准要求名称以大写形式存储

SQL 标准要求标识符以全大写形式存储。请参阅 SQL-92 的第 5.2.13 节,该部分引用自本回答关于另一个问题的草稿副本。该标准允许您使用小写或混合大小写的无分隔标识符,因为 SQL 处理器需要根据需要进行转换以转换为大写版本。

这一要求大概可以追溯到 SQL 的早期,当时大型机系统仅限于大写英文字符。

没问题

许多数据库根据标准忽略了这一要求。

例如,Postgres 正好相反,将所有未加引号(“未定界”)标识符转换为小写——尽管 Postgres 比我所知道的任何其他系统更接近标准。

某些数据库可能会在您指定的情况下存储标识符。

一般来说,这不是问题。几乎所有数据库都会从标识符使用的案例到数据库存储的案例进行不区分大小写的查找。

偶尔有一些奇怪的情况,您可能需要在其存储的大小写中指定一个标识符,或者您可能需要指定全大写。某些实用程序可能会发生这种情况,在这些实用程序中,您必须将标识符作为字符串传递到通常的 SQL 处理器上下文之外。很少见,但是如果有一天您在使用某些不寻常的工具/实用程序时遇到一些神秘的“找不到表”类型的错误消息,请将其隐藏在脑后。曾经发生在我身上。

蛇盒

现在的普遍做法似乎是使用所有小写字母和下划线分隔单词。这种款式被称为Snake case

如果您的标识符以全大写(或全小写)形式呈现,从而在没有单词分隔的情况下失去可读性,则使用下划线而不是骆驼大小写会有所帮助。


额外提示:SQL 标准(SQL-92 第 5.2.11 节)明确承诺永远不会在关键字中使用尾随下划线。因此,在所有标识符后附加一个尾随下划线,以消除所有意外碰撞的担忧。


til*_*lin 5

据我所知,对于常见的LAMP设置并不重要 - 但请注意,Linux上托管的MySQL区分大小写!

为了保持我的代码整洁,我通常坚持使用表格和列的小写名称,大写的MySQL代码和混合的大小写变量 - 如下所示:

SELECT*FROM my_table WHERE id ='$ myNewID'