所以关于表名的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的其他主题,那些认为自己更了解的人(高分者)总是让人们感觉应该如何完成。
这让我不确定如果我错过了什么,那么就是这个问题。
答案 0 :(得分:3)
我认为你可能会误认为给表别名是某种程度的标准。
有两种情况需要它。
在查询中多次连接同一个表时。需要使用别名来区分表中的两种用法。
派生表(子查询)需要别名。
除此之外,您可以省略心脏内容的别名。