在sql联接或嵌套查询中使用别名是否始终是一种好的做法?
使用它是否始终是最佳实践-在sql联接或嵌套查询中使用别名是否始终是一种好的做法?,sql,join,alias,nested-queries,Sql,Join,Alias,Nested Queries,使用它是否始终是最佳实践- 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 除了可读性和缩短查询长度之外,使用别名还有什么好处?当我咨询我们的数据库专家时,他说如果有时没有别名,查询可能会中断,,这我不完全理解……如果有人能分享他
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
除了可读性和缩短查询长度之外,使用别名还有什么好处?当我咨询我们的数据库专家时,他说如果有时没有别名,查询可能会中断,,这我不完全理解……如果有人能分享他们的想法以及应该遵循的最佳实践,我将不胜感激。如果您两次引用同一个表,您必须使用别名
除此之外,我想不出任何技术原因。最可读的方式是使用完全限定的名称显式显示;关于这一点,你的DB专家和我都同意 但是当你开发它们的时候。。。化名是你的朋友,不用说
我几乎总是这样做,因为我讨厌键入完整的表名,如果不这样做,可能会导致列名不明确。只是不要使用毫无意义的别名,如t1、t2等
- 当查询的业务逻辑将表用于与表名截然不同的目的时
- 如果由于您无法控制的情况,表名过长且不合理,那么别名仍然应该是可读且符合逻辑的。例如,“
”可以而且通常应该是别名“EmployeeTableIndexedByIdSourcedFromHR
”,但不能是别名“Employee
”E
从Employee.DeptId=Dept.Id上的Employee join Dept中选择Employee.Id、Dept.DeptName
在大多数情况下,我更喜欢使用完全限定的表名。如果单独数据库中的两个表之间需要内部联接,我通常只为表使用别名,只是为了让它更具可读性
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
在这种情况下,
E
和D
没有那么糟糕,比任意的a
和b
@ck要好-对于像这样简单的示例查询来说也没那么糟糕。作为一种策略,这是不好的,因为在一个有5个表连接和数十行长的查询中,查询将被那些可能不知道所有1000个表名的人读取。大多数点为+1,尽管(像ck)我认为短别名在简单的查询中是非常可读的。关键是别名应该易于理解。
Select Employees.Name as [Name]
From Employees