从技术上讲,下划线字符 (
_
) 可以在列名称中使用。但是在列名中使用下划线是个好习惯吗?它似乎使该名称更具可读性,但我担心使用它们可能会出现的技术问题。列名称不会带有下划线前缀。
在名称中使用下划线不存在直接的技术问题。事实上,我经常这样做并且发现它很有帮助。 Ruby 甚至会在列名中自动生成下划线,而 SQL Server 自己的系统对象也使用下划线。
一般来说,在数据库中遵循一些命名约定是个好主意,如果包含下划线,没什么大不了的。
如果在引用名称时使用方括号或引号将名称括起来,则名称中可以使用任何字符。不过,我会尽量避免使用空格,因为它会使内容更难阅读。
在为 SQL Server 制定命名约定时,您需要避免一些事情。他们是:
sp_
前缀,除非您计划将它们用于系统范围。 这样没有问题,只要能让列名更清晰即可。
如果你查看 PostgreSQL 文档,你可能会发现几乎所有对象都以 Snake Case 命名。
此外,MySQL、MS SQL Server、Oracle DB 和前面提到的 PostgreSQL 中的很多系统对象都使用 Snake Case。
根据我个人的经验,使用下划线命名对象并不是什么大问题。
但是有一个警告。
下划线符号是 SQL LIKE 运算符中任何符号的占位符:
SELECT * FROM FileList WHERE Extention LIKE 'ex_'
当存在大量动态 SQL 代码时,这是一个潜在的问题,特别是当我们谈论自动生成的对象名称时。而且这样的错误很难发现。
我个人宁愿在命名时避免使用下划线。但同时,如果已经使用了这种类型的命名,则无需重写所有现有代码。
凡事预则立。