使用 -
始终是最佳做法Select E.Id,D.DeptName from Employee E join Dept D on E.DeptId=D.Id
而不是 -
Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id
除查询的可读性和减少长度外,使用别名有什么好处?当我咨询我们的数据库专家时,他说查询可能会破坏如果有时候没有别名 ...我完全不明白...如果有人愿意,我会很感激分享他们的想法以及要遵循的最佳实践......非常感谢。
答案 0 :(得分:13)
在提到破坏事物时,您可能会混淆“需要使用表格前缀”和“需要使用ALIAS”。
如果不使用表前缀,查询可能确实更有可能在添加连接后中断;当您的原始表和新添加的表共享具有相同名称的列时。因此,为了将来的维护,始终使用表前缀对查询中的所有列都是一个好主意。
但是,通过在列前面使用任何表前缀来解决此问题,无论是真实的表名还是别名。
当您使用同一个表两次时,别名需要(与实际的表名相对)。
从维护大量复杂SQL的大量经验来看,我必须说我的观点与你的观点完全相反。
即,使用短 - 特别是1个字母 - 表别名会使HARDER读取/维护代码。
当你在生产紧急情况下早上2点调试一个带有复杂关节的长篇SQL时,在上面查看10-15行,看看哪个表匹配别名“e”就更难了。
这一点有两个例外
当查询的业务逻辑将表用于与表名非常不同的目的时。
当表名由于您无法控制的情况而过长且不合理时 - 然后别名仍然应该是可读和合乎逻辑的。例如。 “EmployeeTableIndexedByUIDSourcedFromHR
”可以且通常应为别名“Employee
”,但不能为“E
”
此外,为了避免使用过长的字符串,如果使用换行符和对齐格式化查询,它会有很大的帮助:
Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id
VS
SELECT Employee.Id
,Dept.DeptName
FROM Employee
JOIN Dept
ON Employee.DeptId=Dept.Id
答案 1 :(得分:4)
当您两次引用同一个表时,必须使用别名。
除此之外,没有任何我能想到的技术原因。
答案 2 :(得分:3)
我几乎总是这样做,因为我不想输入完整的表名,如果你不这样做,你最终会得到模糊的列名。只是不要使用无意义的别名,如t1,t2等。
答案 3 :(得分:1)
最易读的方法是使用完全限定名称显式;我的数据库专家和我同意。
但是当你开发它们时......别名是你的朋友,请放下手。
答案 4 :(得分:0)
答案 5 :(得分:0)
在大多数情况下,我更喜欢使用完全限定的表名。如果在不同数据库中的两个表之间需要内连接,我通常只对表使用别名,只是为了使它更具可读性。
Select Employee.Name, sales.Amount
From Employee
Inner Join SalesDB.dbo.Sales as Sales On Employee.ID = Sales.EmployeeID
但是,我建议您为字段使用别名,以防止下游调用应用程序所需的更改。
Select Employees.Name as [Name]
From Employees