【发布时间】:2009-02-17 15:05:55
【问题描述】:
出于对使用 SQL 语句的兴趣,我是否应该始终使用完全限定的列名 (tablename.columnname),即使只使用一个表,例如
SELECT table.column1, table.column2 FROM table
【问题讨论】:
标签: sql coding-style
出于对使用 SQL 语句的兴趣,我是否应该始终使用完全限定的列名 (tablename.columnname),即使只使用一个表,例如
SELECT table.column1, table.column2 FROM table
【问题讨论】:
标签: sql coding-style
如果你这样做会更好 - 它不会增加任何复杂性,并且可以防止将来出现错误。
但在定义明确的系统中,您不应该必须这样做 - 这就像编程语言中的命名空间。理想的情况是不发生冲突,但会因过度使用显式名称而使代码混乱。
-亚当
【讨论】:
我通常遵循以下规则:
使用单表时,不必使用表名前缀:
SELECT col1, col2 FROM table1
对于多个表,请使用完整的表名。别名可能会造成混淆,尤其是在进行多个连接时:
SELECT table1.col1, table2.col2 FROM table1 INNER JOIN table2 on
table1.id = table2.id
我看到许多开发人员使用表别名,但特别是在有多个开发人员的大型项目中,这些可能会变得晦涩难懂。一些额外的按键可以使代码更加清晰。
但是,当列具有相同名称时,如果可能需要使用列别名。在这种情况下:
SELECT table1.col1, table2.col1 as table2_col1 FROM table1
INNER JOIN table2 on
table1.id = table2.id
【讨论】:
我会将此作为个人喜好。只有当您开始加入包含重复列名的表时才会有所不同。
另外,不要写出完整的表名,而是使用别名:
SELECT t.column1, t.column2 FROM table as t
【讨论】:
如果您只从一张表中进行选择,我看不到整体的用处。如果您从多个表中进行选择,对列名进行限定肯定会使可能不熟悉您的数据库架构的任何其他开发人员更容易阅读。
【讨论】:
如果您只查询一张表 - 我会拒绝。这样更易读。
【讨论】:
不要解决你还没有解决的问题。(至少我的团队负责人总是这么告诉我的。)我敢肯定总有一天必须添加一个 JOIN 的猴子你的陈述可以算出来。
【讨论】:
我认为始终使用完全限定的列名是个好主意。如果表名太长,请使用别名。它还为您的期货添加准备查询,例如加入。
【讨论】:
我想说使用限定名称很好,它增加了代码的可读性。将它用于单个表没有多大意义,但必须用于多个表。如果表名太大建议使用别名,别名最好从表名派生。
SELECT Dep.Name,Emp.Name
FROM Department DEP INNER JOIN Employee Emp
ON Dep.departmentid=Emp.DepartmentID
【讨论】:
没有。
您应该始终为表格别名,并且您应该始终使用表格aliases来限定列名。
select
p.FirstName,
p.LastName,
p.SSN
from Person p
where p.ID = 345
【讨论】:
当超过 1 个表在播放时,我更喜欢使用表别名。
【讨论】:
即使是定义最明确的系统也可能会发生变化。很容易将新字段引入表中,从而导致现有查询中的歧义。
完全符合条件可以保护您免受这种情况的影响。
【讨论】: