是否应在列名中使用下划线?

时间:2012-06-13 17:59:05

标签: sql sql-server-2005 database-design

从技术上讲,下划线字符(_)可用于列名。但是在列名中使用下划线是一种好习惯吗?它似乎使名称更具可读性,但我担心使用它们可能会产生技术问题。列名称不会以下划线为前缀。

3 个答案:

答案 0 :(得分:9)

在名称中使用下划线没有直接的技术问题。事实上,我经常这样做,并发现它很有帮助。 Ruby甚至自动在列名中生成下划线,SQL Server自己的系统对象也使用下划线。

一般来说,最好在数据库中使用一些命名约定,如果包含下划线,则没什么大不了的。

如果在引用名称时在名称周围加上方括号或引号,则可以在名称中使用任何字符。我尽量避免使用空格,因为它会让事情变得更难阅读。

在提出SQL Server的命名约定时,您需要避免一些事项。他们是:

  1. 不要将存储过程作为sp_的前缀,除非您计划在系统范围内使用它们。
  2. 不要为列添加数据类型前缀(因为您可能想要更改它)。
  3. 避免将内容放入sys架构中(您可以使用黑客攻击,但不应该)。
  4. 假设您的代码区分大小写,即使它不是。你永远不知道什么时候你最终在tempdb设置为区分大小写的服务器上。
  5. 创建临时表时,请始终为字符串类型指定排序规则。

答案 1 :(得分:7)

这没有问题,只要它使列名更清晰。

答案 2 :(得分:0)

如果您查看 PostgreSQL 文档,您可能会发现几乎所有对象都以 Snake Case 命名。

此外,MySQL、MS SQL Server、Oracle DB 和上述 PostgreSQL 中的很多系统对象都使用 Snake Case。

根据我的个人经验,在对象命名中使用下划线并不是什么大问题。

但有一个警告。

下划线符号是 SQL LIKE 运算符中任何符号的占位符:

SELECT * FROM FileList WHERE Extention LIKE 'ex_'

当有很多动态 SQL 代码时,这是一个潜在的问题,尤其是当我们谈论自动生成的对象名称时。而这样的错误很难找到。

我个人更愿意在命名时避免使用下划线。但同时如果已经使用了这种命名方式,则无需重写所有现有代码。

有备无患。