2016-02-28 66 views
0

因此,有a question關於MySQL別名表名,並已提出了我問這個問題在這裏:關於MySQL表的查詢別名

爲什麼是在爲治療的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; 

很明顯,這可能-in一些situations-更好地使用縮短的命名規則,也許是一個LARG用許多表格查詢每個長名稱,但這是沒有理由的(據我所知),無論需要如何,爲每個表格形成一個別名的方法的絕對頂級前提。

我已經使用了這個,但大多數有用的結果表明它使「SQL更具可讀性」。就像我已經說過的那樣,對於查詢中的許多或長命名錶而言,這可能是一種顯示標準?

此外,沒有別名,可以清楚地看到上面exampled SQL中每個列的源表。

我只想看看我在這裏完全缺少一些關鍵方法嗎?


要符合我爲什麼覺得有必要問,如果我失去了一些東西:

我看到它在計算器上的aweful很多(這裏引用),這本身就意味着插孔不算什麼,但那麼我就會發現沒有必要使用別名的回答(高分),而不需要別名(例如在上面參考文章中),而關於那些認爲自己知道得更好的高分(高分者)人們應該怎麼做。

它讓我不確定如果我失去了一些東西,所以這個問題。


A comment by A MySQL authorized instructor and DBA大約2010

回答

3

我想你可能被誤認爲是給別名表是某種標準。

有兩種情況需要它。

  1. 當同一個表在查詢中連接多次時。需要別名來區分桌子的兩種用法。

  2. 派生表(子查詢)需要一個別名。

除此之外,你可以省略別名到你心中的內容。

+0

我看到它在計算器上(在我的問題中引用),一個aweful很多這本身就意味着插孔nothng,但後來我看到有來自見地應答者不需要的別名(比如在引用後沒有任何反應),而在SO那些誰認爲自己的其他主題,以更好地瞭解都是在特靈的人如何thngs *應*完成。這讓我無法確定如果我錯過了某些東西,那就是問題所在。但我同意你的兩種情況。 – Martin

+0

這絕對是個人喜好的問題。你提到的鏈接(http://code.openark.org/blog/mysql/proper-sql-table-alias-use-conventions)的作者有權自己的意見。在另一方面,許多生產圖式設計與哭了詳細的別名和描述表名。 –

+0

我的看法:因爲他們雜亂的東西較少使用_short_別名。而且不要在表格名稱前加字段,這也會造成混亂。我比'Students.StudentName'更喜歡's.name'。 「雜波」使得很難看到意圖。 –