代码之家  ›  专栏  ›  技术社区  ›  Vishal

在sql连接或嵌套查询中使用别名总是一种好的做法吗?

  •  6
  • Vishal  · 技术社区  · 14 年前

    这总是一个最佳实践吗-

    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
    

    可读性 缩短长度 使用别名的好处是什么?当我咨询我们的数据库专家时,他说 没有别名 有时…我不完全理解…如果有人能分享他们的想法,以及遵循什么样的最佳实践,我将不胜感激…非常感谢。

    6 回复  |  直到 14 年前
        1
  •  16
  •   DVK    14 年前
    1. 如果不使用表前缀,则在添加联接之后,当原始表和新添加的表共享一个同名列时,查询可能更容易中断。因此,为了将来的维护,总是对查询中的所有列使用表前缀是一个好主意。

    2. 别名是 (与实际表名相反)使用同一个表两次。

    3. 从大量维护复杂SQL的经验来看,我必须说我的观点与你的完全相反。

      在生产紧急情况下,当您在凌晨2点调试一个带有复杂连接的长SQL时,来回查看上面的10-15行,看看哪个表与别名“e”匹配要困难得多。

      • 当查询的业务逻辑将表用于与表名截然不同的目的时。

      • 当表名由于您无法控制的情况而变得不合理和不合理时,那么别名仍然应该是可读的和符合逻辑的。例如 EmployeeTableIndexedByUIDSourcedFromHR Employee ,但不是 E "

    4. Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id

    SELECT  Employee.Id
           ,Dept.DeptName
    FROM    Employee
    JOIN    Dept
    ON      Employee.DeptId=Dept.Id
    
        2
  •  5
  •   cjk    14 年前

    引用同一个表两次时,必须使用别名。

    除此之外,我想不出任何技术上的原因。

        3
  •  4
  •   Jay    14 年前

    我几乎总是这样做,因为我讨厌键入完整的表名,如果不这样做,可能会导致列名不明确。只是不要使用无意义的别名,如t1、t2等。

        4
  •  1
  •   Randolpho    14 年前

    最具可读性的方法是用一个完全限定的名字显式表示;在这一点上,您的DB专家和我都同意。

    但是当你开发它们的时候。。。化名是你的朋友。

        5
  •  0
  •   Narendra Kamma    14 年前
    1. 提供在不同联接条件下联接同一表的方法
        6
  •  0
  •   dretzlaff17    14 年前

    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