2014-08-29 29 views
2

我檢討別人的代碼和跨越這種選擇語法傳來:是什麼括號意味着SELECT(COLNAME)mysql的

SELECT (Test_ID) id, (Test_Host) host, (Test_Port) port 
FROM Test_Connection 

我可以告訴括號做什麼這可能意味着SELECT Test_ID AS id但有一個使用上述對比使用AS的優勢還是劣勢?

+0

這只是一種不同的語法。它符合相同的。 – 2014-08-29 13:40:10

+0

'因爲'完全是可選的 – 2014-08-29 13:42:30

回答

4

你說得對。這意味着Select Column_Name AS Alias。這是一種奇怪的編碼風格,可能代表了某人對SQL的低估程度。去除父母親身份沒有任何傷害。只需保持所有代碼相似。

使用AS是有效的,但與縮進一起導致代碼更容易閱讀。

Parenthesys用於設置表達式的操作順序。對於單列而言,它們是多餘的,但不會導致任何錯誤,因爲語法分析器無論如何都會放棄它們。這種風格會產生令人困惑和難以閱讀的代碼。

+0

所以基本上如果我使用'SELECT(Test_ID)id'我看起來很酷嗎? :) – GGio 2014-08-29 13:41:22

+0

對於沒有SQL語法線索的人 - 是的。你是否也想輸入不必要的符號。 – Stoleg 2014-08-29 13:43:01

+1

是的,當別人正在閱讀代碼時,您可能會引起混淆(如您現在) – mariobgr 2014-08-29 13:43:11

4

括號不做任何事。他們只是在括號中放置一個表達式,並且該表達式由單個列名組成。

這是很最好使用as定義列alaises:

SELECT Test_ID as id, Test_Host as host, Test_Port as port 
FROM Test_Connection; 

要明白其中的道理,考慮這兩個選擇條款:

SELECT Test_ID, Test_Host, Test_Port 
SELECT Test_ID Test_Host, Test_Port 

前返回三列,只有第二二。缺少的逗號可能很難找到並導致調試問題。

我承認,將列表達式放在圓括號中也解決了這個問題(別名不允許使用圓括號)。但是,您也可以使用標準慣例來編寫代碼。