关于MySQL表别名的查询

时间:2016-02-28 22:34:32

标签: mysql sql

所以关于表名的MySQL别名有a question,这引起我在这里提出这个问题:

为什么在MySQL查询的命名表中使用别名被视为伪标准行为,而不仅仅是在某些情况下需要的行为?

从上面链接的问题中采取以下示例:

SELECT st.StudentName, cl.ClassName
FROM StudentClass sc
INNER JOIN Classes cl ON cl.ClassID = sc.ClassID
INNER JOIN Students st ON st.StudentID = sc.StudentID;

根据我的经验,表格的别名通常是不需要的(有些人可能会说伪随机,间距填充)字母,并且可以很容易地和更可读

SELECT Students.StudentName, Classes.ClassName
FROM StudentClass 
INNER JOIN Classes ON Classes.ClassID = StudentClass.ClassID
INNER JOIN Students ON Students.StudentID = StudentClass.StudentID;

显然,在某些情况下,使用缩短的命名约定可能会更好,也许对于每个长名称都有许多表的大型查询,但是没有理由(据我所知)绝对超越了这种为每个表格形成别名的方法,无论是否需要。

我用Google搜索了这一点,但大多数有用的结果表明它使得SQL更具可读性#34;对于查询中的许多或长命名的表,这可能已经说明了,但作为一个明确的标准?

此外,如果没有别名,可以清楚地看到上面示例SQL中每个列的源表。

我只是想看看是否有一些我在这里完全遗漏的关键方法?

要说明为什么我觉得有必要问我是否遗漏了某些东西:

我在StackOverflow上看到它很多(这里引用),这本身就意味着杰克什么都没有,但后来我发现知识渊博(高分)回答者没有回应不需要别名(例如正如在上面的参考文章中所述,而关于SO的其他主题,那些认为自己更了解的人(高分者)总是让人们感觉应该如何完成。

这让我不确定如果我错过了什么,那么就是这个问题。

A comment by A MySQL authorized instructor and DBA大约在2010年。

1 个答案:

答案 0 :(得分:3)

我认为你可能会误认为给表别名是某种程度的标准。

有两种情况需要它。

  1. 在查询中多次连接同一个表时。需要使用别名来区分表中的两种用法。

  2. 派生表(子查询)需要别名。

  3. 除此之外,您可以省略心脏内容的别名。