SQL表别名 - 好还是坏? [关闭](SQL Table Aliases - Good or

2019-06-25 12:42发布

什么是SQL中使用表别名的利弊? 我个人尽量避免他们,因为我认为他们使代码的可读性(特别是通过大的地方/和语句读取时),但我很乐意听取任何反指向这一点。 如果是一般使用表的别名是一个好主意,和你有什么首选格式?

Answer 1:

表别名是与高度标准化的模式时务必要之恶。 例如,我不是这个建筑师DB所以忍耐一下,可以采取7联接,以得到一个干净的和完整的记录后面,其中包括一个人的姓名,地址,电话号码和所属公司。

而不是有些标准单个字符的别名,我倾向于这样上面的例子中的SQL最终看起来像有利于短字别名:

select person.FirstName
      ,person.LastName
      ,addr.StreetAddress
      ,addr.City
      ,addr.State
      ,addr.Zip
      ,phone.PhoneNumber
      ,company.CompanyName
from tblPeople person
left outer join tblAffiliations affl on affl.personID = person.personID
left outer join tblCompany company on company.companyID = affl.companyID

...等



Answer 2:

嗯,有一些情况下,你必须使用它们,当你需要加入到同一个表两次在一个查询等。

这也取决于无论您有跨表唯一的列名。 在我们的传统数据库中,我们对所有列的3个字母前缀,从表中的缩写形式而产生,只是因为一个古老的数据库系统,我们曾经兼容不支持表的别名那么好。

如果你有一个发生在多个表中的列名,指定表名作为列引用的部分是必须的,因而表的别名将允许更短的语法。



Answer 3:

我在这里的唯一的人谁真的恨他们?

一般来说,除非我有给我不使用他们。 我真的很讨厌阅读像

select a.id, a.region, a.firstname, a.blah, b.yadda, b.huminahumina, c.crap
from table toys as a
inner join prices as b on a.blah = b.yadda
inner join customers as c on c.crap = something else
etc

当我读到SQL,我想知道,正是我选择时,我看到了。 别名竟让我困惑了,因为我已经得到了通过列线苦干之前,我确实得到表名,这通常表示有关该别名不中的数据信息。 也许这没关系,如果你做的别名,但我通常与似乎使用别名没有很好的理由代码阅读StackOverflow上的问题。 (此外,有时,有人会在一份声明中创建一个别名,只是没有使用它,为什么?)

我认为表别名使用这么多,因为很多人都很讨厌打字。 我不认为这是一个很好的借口,虽然。 这样的借口是我们结束了可怕的变量命名,可怕的缩略语的功能,错误代码的原因......我会花时间打出来的全名。 我是一个快速的打字员,虽然如此,也许有什么用它做。 (也许在将来,当我有腕隧道,我会重新考虑我的意见别名:P)。我特别讨厌在PHP代码,在那里我相信有绝对没有理由要做跨表的别名运行 - 你只得到了键入一次吧!

我总是用柱预选赛我的发言,但我不反对打字了很多,所以我会很高兴地多次输入全名。 (当然,我不滥用MySQL的标签完成。)除非这是一个情况下,我必须使用别名(像一些在其他的答案中描述),我觉得抽象繁琐和不必要的额外层。

编辑:(过了一年之后),我负责的是使用别名(我没有写他们,我是新来的这个项目)的一些存储过程,以及他们那种痛苦。 我认识到,我不喜欢的别名的原因是因为他们是如何定义的。 你知道它一般多少是很好的做法在你的范围的顶部声明变量? 在SQL(通常在一行的开始?)别名不遵循此惯例,这也让我磨我的牙齿。 因此,我要搜索整个代码单个别名找出它是(和什么是令人沮丧的是,我必须通过逻辑阅读之前,我找到别名声明)。 如果不是因为这,我真的可能会喜欢的系统更好。

如果我写一个存储过程,别人会要处理,我把我的别名定义的注释块在文件的开头,作为一个参考。 老实说,我不明白为什么你们不无它发疯。



Answer 4:

来自使用完全合格的名称或别名微软SQL的查询优化器的好处。

我个人比较喜欢的别名,除非我有很多的表,他们往往是单个字母的。

--seems pretty readable to me ;-)
select a.Text
from Question q
    inner join Answer a
        on a.QuestionId = q.QuestionId

还有多久可以执行的SQL字符串的实际限制 - 别名让这个限制更容易避免。



Answer 5:

因为它已经被前面提到多次,这是一个很好的做法,前缀的所有列名很容易地看到哪些列属于哪个表-和别名比全表名短,使得查询更容易阅读和理解。因此。 如果您使用的当然是一个很好的混叠方案。

如果你创建或读取的应用程序,它采用外部存储的或动态生成的表名,的代码,然后没有别名真的很难第一眼就告诉一下那些“%s的” ES或其他占位符代表。 这不是一个极端的例子,例如许多Web应用程序允许自定义安装时的表名前缀。



Answer 6:

如果我写一个查询自己(通过键入到编辑器,而不是使用设计器)我总是用别名表名刚刚所以我只有一次键入完整的表名。

I really hate reading queries generated by a designer with the full table name as a prefix to every column name.



Answer 7:

我想这很清楚的说明对他们的唯一事情是过度抽象。 如果你有一个好主意什么的别名是指(良好的命名帮助;“A”,“B”,“C”可以特别是当你读书迟声明几个月或几年是相当有问题的),我认为没有错有锯齿。

正如其他人所说,加入如果你使用同一个表(或视图)多次要求他们,但即使外界这种情况下,一个别名可以用来在特定的上下文来阐明一个数据源的目的。 在别名的名字,试图回答为什么要访问特定的数据,该数据是不是有什么



Answer 8:

我爱别名!!!! 我一直在使用他们做了一些测试,对不和已经看到了一些处理增益。 我的猜测是处理当你处理更大的数据集,比不复杂的嵌套查询的收益会更高。 如果我能考这个,我会让你知道。



Answer 9:

你需要他们,如果你要加入一个表与自身,或者如果您在子查询中再次使用该列...



Answer 10:

别名是伟大的,如果你认为我的组织表的名称,如:SchemaName.DataPointName_SubPoint_Sub-SubPoint_Sub - 子下点......我的团队采用了非常标准的一套缩写,这样的猜测被最小化。 我们不得不说ProgramInformationDataPoint缩短到PIDP,并提交给刚子。

好消息是,一旦你以这种方式去和人同意它,它使那些HAYUGE文件只是有点小,更易于管理。 至少对我来说,更少的字符来传达同样的信息,似乎走轻松一点上我的大脑。



Answer 11:

我喜欢长明确的表名(它的情况并不少见超过100个字符),因为我用很多表,如果名称不明确的,我可能会感到困惑,以什么每个表店。

所以,当我写一个查询,我倾向于使用更短的别名,查询的范围内作出感,使代码更易读。



Answer 12:

我总是用别名在我的查询,这是在我公司代码指南的一部分。 首先,你需要的别名或表名时,有与连接表中相同名称的列。 在我看来,别名提高复杂查询的可读性和让我很快地看到每列的位置。 我们甚至使用单表查询的别名,因为经验表明,单表查询鸵鸟政策保持单身表长。



Answer 13:

恕我直言,它并没有真正的短表名有意义没关系,我有机会在数据库所在的表名称可能是像VWRECOFLY或其他一些随机字符串(由公司政策规定),真正能够代表用户工作,所以在我发现别名这种情况下,确实有助于使代码更易读。 (users.username使许多更有SENCE然后VWRECOFLY.username)



Answer 14:

我总是用别名,因为得到在MSSQL,你需要随时与模式的前缀应有的性能。 所以你会看到很多的

选择Person.Name从
dbo.Person作为人



Answer 15:

编写查询时,我总是用别名。 一般来说,我尝试和缩写表名1个或2代表字母。 因此用户变得u和debtor_transactions成为DT等..

它节省了打字,还带有一定的意义。

在较短的名称使其更具可读性我也。



Answer 16:

如果不使用别名,它在你的代码中的错误只是等待发生。

SELECT Description -- actually in a
 FROM
 table_a a,
 table_b b
 WHERE
 a.ID = b.ID

当你不喜欢添加一个名为说明,以表-B列的小东西会发生什么。 这是正确的,你会得到一个错误。 添加列不需要破坏任何东西。 我从来没有看到编写好的代码,无bug代码,作为一个必要的邪恶。



Answer 17:

加盟与具有相同名称的列的表时,别名是必需的。



文章来源: SQL Table Aliases - Good or Bad? [closed]
标签: sql alias