如何書寫優雅、漂亮的SQL腳本?
本篇來聊聊如何書寫漂亮、整潔、優雅的SQL腳本,下面這些是我個人總結、整理出來的。姑且做個拋磚引玉吧,呵呵,歡迎大家一起來討論。
我們首先來看看一段創建數據表的腳本(如下所示),你是否覺得有什么不妥或是不足呢?如果是你,你怎樣書寫呢?
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->CREATE TABLE [dbo].[TableDataDictionary]( |
可能你也沒有覺得它有什么不妥,因為你一直都是這樣書寫哦。而且更混亂、更雜的的腳本你也見過,也可能習慣了;那么來看看下面的腳本,
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->USE [Test]; IF OBJECT_ID(N'TableDataDictionary') IS NULL |
上面兩段腳本比起來,你是否覺得下面的更美觀、優雅呢?
接下來我們來看看四段申明變量的腳本,自己可以對比
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> (一) (二) DECLARE @PayType VARCHAR(50); --支付類型 (四) |
如果是你,你愿意運用哪種書寫格式呢? 個人覺得(一)寫得極極糟糕,不僅閱讀不方便、而且也不方便注視。(二)則是我以前習慣書寫的格式,一來沒有注視、二來看起來沒有(三)、(四)美觀、大方。
存儲過程、函數頭部注視的樣式(個人曾今用過的樣式):
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> (一) --============================================================================================================= Function 簡要描述存儲過程、函數功能。
--=============================================================================================================
|
個人覺得(一) >= (二) > (三) > (四) ,不知道大家有沒有更好的格式推薦。
下面看看這樣一段腳本,一眼就覺得有點糟糕,其實實際開發中腳本比這個可能復雜得多,頭痛吧
select PermissionID from Permission where resourceid= ( select top 1 resourceid from [Resource] where resourcename=@resourcename) and actionid=(select top 1 actionid from [Action] where actionname=@actionname) AND SchemaId in (SELECT SchemaId FROM dbo.BindToSchema WHERE DcUserID=@UserID) |
首先就應該統一關鍵字大小寫,不要一部分大寫、一部分小寫。然后從結構上面調整。 可能每個人的審美觀、習慣的格式不同,這個無所謂,也沒有必要統一。 但是你書寫出來的腳本至少要結構清晰,一目了然。不要讓別人費很大的勁去調整格式,然后才能理解它的邏輯,如果寫出上面或是比上面更糟糕的腳本,我想項目經理真應該教訓教訓你。這樣只會給后來維護的人痛苦不堪(實際開發中可能比這糟糕十倍呢,想必很多人是深受其害啊)
SELECT Permission FROM Permission WHERE resourceid =( SELECT TOP 1 resourceid FROM [Resource] WHERE resourcename=@resourcename) AND actionid =(SELECT TOP 1 actionid FROM [Action] WHERE actionname=@actionname) AND SchemaId IN (SELECT SchemaId FROM dbo.DcUserBindToSchema WHERE DcUserID=@UserID) |
動態組合語句是否讓你的腳本看起來林亂不堪啊,你有沒有試過讓其在某些方面看起來美觀點、優雅點啊、
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->'SELECT Order_ID = @OrderID, CampaignCode= @CampaignCode, ProductCode = @ProductCode, StartDate= SpotDate,
|
怎么樣是否覺得下面的”清新脫俗“,眼前一亮啊,呵呵,不是在說美女啊。看看我以前一個同事寫的吧,我只截取了一部分。
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->-- Construct column list EXEC sp_executesql -- Create the PIVOT query |
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE SET @schemaname = N'dbo'; EXEC(@sql); |
posted on 2012-05-29 09:53 順其自然EVO 閱讀(282) 評論(0) 編輯 收藏 所屬分類: 數據庫