有哪些优点和缺点使用别名表在SQL?我个人试图避开他们,因为我认为他们的代码可读性较差(特别是在阅读时通过的大其/和声明),但是我很有兴趣听到任何反点到这一点。当它是一个好主意,使用别名表,并且你有任何首选的格式?

有帮助吗?

解决方案

表,别名是一种必要的邪恶的当处理高度化架构。例如,我不是建筑师于此数据库所以原谅我,它可以采取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

...等等

其他提示

嗯,有一些情况下你 必须 使用它们,就像当你需要参加同样的表两次在一个查询。

它还取决于您是否具有独列名的跨表格。在我们的遗留系统的数据库我们有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,我想知道到底是什么我选择当我读;别名,实际上是混淆,我更多的是因为我艰难的通行列之前,我实际上得到表格的名称,这一般表示信息有关的数据,别名没有。也许是好的,如果你制作的别名,但我经常阅读的问题上的计算器码,似乎使用的别名没有很好的理由。(此外,有时,会有人创建一个别名,在一份声明,只是不能使用它。为什么?)

我认为这表的别名是用这么多,因为很多人都反对,键入。我不认为这是一个很好的借口,虽然。这样的借口的原因是,我们结束了可怕的变量命名的,可怕的功能首字母缩略词,糟糕代码...我会花时间类型的全名。我是一个快速打字员,虽然如此,也许有事情要做。(也许在未来,当我得到了腕骨隧道,我会重新考虑我的意见上的别名。:P)我尤其恨运行跨表格的别名在PHP代码,在那里我相信绝对没有理由要那样做-你只须输入这一次!

我总是用列限定词,在我的发言,但我不反对输入了很多,所以我会很乐意的类型的全名多次。(当然,我做滥用MySQL的标签完成。) 除非它是一个情况我已经使用别名(如一些中描述的其他答复),我找到额外的抽象层繁琐和不必要的。

编辑: (一年多之后)我处理一些存储程序,使用别名(我没有写下他们,我是新来的这个项目),并且他们的痛苦。我知道原因我也不喜欢别名是因为他们是如何定义。你知道它是如何的一般良好做法声明变量在您的范围?(并且通常在开始的一条线吗?) 别名SQL不遵守本公约,这使我磨我的牙齿。因此,我要搜索整个码为一个单一的别名,找出它是(什么是令人沮丧的是,我已经读通过的逻辑之前,我找别宣言》).如果不是因为,老实说,我可能会喜欢的更好的系统。

如果我曾经写入一个存储的过程,其他人将要处理的,我把我的别名的定义的评论框在开始的文件,作为参考。老实说,我不明白怎么你们不要发疯,没有它。

Microsoft SQL的查询,优化的好处,从使用完全限定名称或化名。

我个人喜欢用别名和除非我有很多表,他们倾向于将单一的字母。

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

还有一个实际的限制于如何长Sql串可以执行的-别名使这种限制更容易避免的。

很好的

如已经提到的多次前,这是一个良好做法的前缀 所有 列名以很容易地看到它列属于其表-和别名短于全表姓名以便查询更容易阅读并因此了解。如果你使用一个很好的锯齿方案的课程。

如果你创建或阅读的代码的应用程序,它使用外部储存或动态产生表名,再没有别名,这是真的很难说在第一眼看什么所有的这些"%s"es或其他占位的立场。它不是一种极端的情况下,例如许多网络应用允许自定义表名前缀在安装时间。

如果我写了一个查询自己(通过打入编辑而不是使用一个设计师)我始终使用别名表的名字所以我只需要输入的完整的表姓名一次。

我真的很讨厌读查询所产生的一个设计师与全表的姓名作为前缀的每个列名。

我想唯一真正使用的语言是对他们过度抽象概念。如果你将会有一个好主意什么别是指(好命名有助于;'a'、'b'、'c'可以是相当大的问题,尤其是当你读的声明几个月或几年之后),我看到什么错混淆。

正如其他人所说的那样,加入 需要 他们如果你们采用相同的表(或图)多次,但是,即使外情况,别名可以有助于澄清一个数据来源的目的在一个特定的上下文。在别的名字,尽量回答 为什么 你正在访问特定数据,不 什么样的 数据。

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

你需要他们,如果你要加入一个表格对本身,或是如果您使用的列再次在一个子查询...

别名是巨大的,如果你考虑到我的组织已经表的名字,如:SchemaName.DataPointName_SubPoint_Sub-SubPoint_Sub子SubPoint...我的团队,使用一个漂亮的一套标准的缩写,因此猜测是最小化。我们必须说ProgramInformationDataPoint缩短到pidp,提交的只是子。

的好事是,一旦你走了以这种方式,人们同意,它使那些HAYUGE文件只是一个小小的和更易于管理。至少对我来说,较少的人物来传达同一信息似乎更容易一些关于我的大脑。

我喜欢长明确表的姓名(它是不是不常见的是超过100个字符)因为我用的许多表格,如果名字不明确的,我可能会得到困惑为什么每个表格的商店。

所以当我写的查询,我倾向于使用较短的别名的意义范围内的查询和使代码更具可读性。

我始终使用别名在我的查询和它的一部分代码指南,在我的公司。首先你需要别名或表名当有列名称相同的加入表格。在我看来,别名提高可读性,在复杂的查询和能让我看看快速的位置的每个列。我们甚至使用别名单表的查询,因为经验显示,单一表格的查询不住单表长。

恕我直言,这并不真正的问题与短表格的名称,使种意义上说,我有时曾在数据库,其中表的名称可能是一些喜欢VWRECOFLY或其他一些随机的字符串(由公司的政策),真正代表的用户,所以在这种情况下,我发现别名真正有助于使代码远更具可读性。(用户。用户名的使更多的就业处然后VWRECOFLY.用户名)

我始终使用别名,因为要获得适当的性能上MSSQL你需要的前缀有架构,在所有的时间。这样你就会看到很多

选择 人。名称 从
dbo。人作为人

我始终使用别名当编写查询。通常我尝试和缩写表格的名称以1或2名代表的信件。因此,用户成为u和debtor_transactions变dt等...

这将节省输入仍然带有一定的意义。

在较短的名称使得它更加可读给我。

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

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

发生什么事当您做一个小东西想添加一个列名为描述为Table_B.这是正确的,你会得到一个错误。增加一个列并不需要打破任何东西。我永远不会看书写好的代码,免费的错误代码,作为一种必要的邪恶。

别名时需要参加表的列有相同的名称。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top