我很想知道人们如何使用表别名.我工作的其他开发人员总是使用表别名,并且总是使用a,b,c等的别名.
这是一个例子:
SELECT a.TripNum, b.SegmentNum, b.StopNum, b.ArrivalTime FROM Trip a, Segment b WHERE a.TripNum = b.TripNum
我不同意他们的看法,认为表别名应该更加谨慎使用.
我认为在查询中包含两次相同的表时应该使用它们,或者当表名很长并且在查询中使用较短的名称时,将使查询更容易阅读.
我也认为别名应该是一个描述性的名称,而不仅仅是一个字母.在上面的例子中,如果我觉得我需要使用1个字母的表别名,我会使用t表示Trip表,而s表示段表.
使用表别名有两个原因.
首先是化妆品.这些语句更容易编写,并且在使用表别名时也可能更容易阅读.
第二个是更实质性的.如果表在FROM子句中出现多次,则需要表别名以使它们保持不同.在表包含引用同一表的主键的外键的情况下,自联接很常见.
两个示例:employees表,其中包含引用supervisor的employeeID的supervisorID列.
第二个是零件爆炸.通常,这是在一个包含三列的单独表中实现的:ComponentPartID,AssemblyPartID和Quantity.在这种情况下,不会有任何自连接,但在此表和两个对零件表的不同引用之间通常会有三向连接.
进入是一个很好的习惯.
我用它们来节省打字.但是,我总是使用类似于函数的字母.所以,在你的例子中,我会输入:
SELECT t.TripNum, s.SegmentNum, s.StopNum, s.ArrivalTime FROM Trip t, Segment s WHERE t.TripNum = s.TripNum
这对我来说更容易阅读.
作为一般规则,我总是使用它们,因为在我的存储过程中通常会有多个连接.使用CodeSmith等代码生成工具让它自动为您生成别名时,它也变得更加容易.
我试图远离像a和b这样的单个字母,因为我可能有多个以字母a或b开头的表格.我使用更长的方法,引用的外键与别名表的串联,例如CustomerContact ...这将是加入Contact表时Customer表的别名.
我不介意更长名称的另一个原因是由于我的大多数存储过程都是通过代码CodeSmith生成的.我不介意手动输入的几个,我可能要自己建.
使用当前的例子,我会做类似的事情:
SELECT TripNum, TripSegment.SegmentNum, TripSegment.StopNum, TripSegment.ArrivalTime FROM Trip, Segment TripSegment WHERE TripNum = TripSegment.TripNum