我已經在各種數據庫管理系統(Oracle,SQL Server,MySQL,Access等)上編寫SQL了很多年了,有一件事情總是讓我感到似乎缺乏當涉及到表&子查詢別名時的命名約定。SQL表/子查詢別名約定
我一直在讀取表格alises是要走的路,儘管我並不總是使用它們,但是當我做這些事時,我總是卡在要使用的名稱之間。我已經從使用描述性名稱到單個字符,如「t」,「s」或「q」,然後再返回。舉個例子,我剛剛寫的這個MS Access查詢,即使對於一個相對簡單的查詢,我仍然不完全滿意我使用的別名,因爲我仍然不認爲這很容易閱讀:
SELECT stkTrans.StockName
, stkTrans.Sedol
, stkTrans.BookCode
, SUM(IIF(stkTrans.TransactionType="S", -1 * stkTrans.Units, 0)) AS [Sell Shares]
, SUM(IIF(stkTrans.TransactionType="B", stkTrans.Units, 0)) AS [Buy Shares]
, SUM(IIF(stkTrans.TransactionType="B", -1 * stkTrans.Price, 0) * stkTrans1.Min_Units) + SUM(IIF(stkTrans.TransactionType="S", stkTrans.Price, 0) * stkTrans1.Min_Units) AS [PnL]
, "" AS [Comment]
FROM tblStockTransactions AS stkTrans
INNER JOIN (SELECT sT1.BookCode
, sT1.Sedol
, MIN(sT1.Units) AS [Min_Units]
FROM tblStockTransactions sT1
GROUP BY sT1.BookCode, sT1.Sedol
HAVING (SUM(IIF(sT1.TransactionType="S", 1, 0)) > 0
AND SUM(IIF(sT1.TransactionType="B", 1, 0)) > 0)) AS stkTrans1 ON (stkTrans.BookCode = stkTrans1.BookCode) AND (stkTrans.Sedol = stkTrans1.Sedol)
GROUP BY stkTrans.BookCode, stkTrans.StockName, stkTrans.Sedol;
您怎麼看?以爲我會把它扔出去看看別人的感受是什麼。
「裏面的別名ST1 ..rather內聯視圖是完全不必要的「 - AFAIK這裏的想法是它有助於未來的發展,即當(如果不是!)第二個表需要被添加到查詢中,那麼相關名已經存在,源代碼控制比較等。當然,[YAGNI](http://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ctl=1331551355915&ved=0CDQQFjAA&url=http%3A%2F %2Fen.wikipedia.org%2Fwiki%2FYou_ain't_gonna_need_it&ei = etxdT9_-Gui-0QXhx62GAg&usg = AFQjCNHaDCOVQWLpBfX1NqScK8nJ-kZ8FQ)但這就是我的想法;) – onedaywhen 2012-03-12 11:22:55
這正是我的觀點。我有時會爲像ST1這樣的內聯視圖添加別名,但並非總是如此。就在我目前正在工作的地方發生這是一個'規則',我們總是使用別名的一切! – markblandford 2012-03-12 11:38:28