我想寫正確的SQL查詢,我需要知道SQL格式的標準。我不是指邏輯或效率,我的意思是正確的縮進和空格。在命令的情況下,我也很有趣。是否有任何正確的SQL格式模式?
是否有任何正確的SQL格式模式(標準)?
我想寫正確的SQL查詢,我需要知道SQL格式的標準。我不是指邏輯或效率,我的意思是正確的縮進和空格。在命令的情況下,我也很有趣。是否有任何正確的SQL格式模式?
是否有任何正確的SQL格式模式(標準)?
看看Database Coding Standard and Guideline。它自2008年以來已經過時了,但我還找不到更好的東西。我在幾個月前正在尋找這個,看起來非常好。
我在看oracle和mysql的網站,但是「怪物」從未發表過正式的論文。
謝謝!這就是我一直在尋找的。 –
好吧,我現在不開始討論大寫表名,但大多數情況下你會考慮如何格式化select/update/insert/delete語句。在巴勃羅·多明戈斯giben文檔,他們暗示格式化選擇這樣
select t.Task_Id,
t.Course_Id,
t.Due_Dt,
t.Start_Time,
t.End_Time,
t.Name,
et.Completed_Flag,
et.Completed_Dt
from BusyWork.dbo.TB_TASK t
inner join BusyWork.dbo.ENROLLMENTTASK et
on t.Task_Id = et.Task_Id
where t.Due_Dt >= @pStartDate
and t.Due_Dt <= @pEndDate
and et.Member_Id = @pMemberId
order by t.Due_Dt,
t.Start_Time
我可以說,這是很難(對我來說)來讀取這樣的腳本,尤其是from
的一部分,所以在我們的系統,我們使用這樣
select
t.Task_Id,
t.Course_Id,
t.Due_Dt,
t.Start_Time,
t.End_Time,
t.Name,
et.Completed_Flag,
et.Completed_Dt
from BusyWork.dbo.TB_TASK as t
inner join BusyWork.dbo.ENROLLMENTTASK as et on t.Task_Id = et.Task_Id
where
t.Due_Dt >= @pStartDate and t.Due_Dt <= @pEndDate and
et.Member_Id = @pMemberId
order by t.Due_Dt, t.Start_Time
在update
約定,delete
陳述我一直想寫from
條款,所以我總是可以輕鬆地改寫update
/delete
到select
測試它
update BusyWork.dbo.TB_TASK set
Due_Dt = getdate(),
Name = 'updated'
from BusyWork.dbo.TB_TASK as T
inner join BusyWork.dbo.ENROLLMENTTASK as et on t.Task_Id = et.Task_Id
where
t.Due_Dt >= @pStartDate and t.Due_Dt <= @pEndDate
delete BusyWork.dbo.TB_TASK
from BusyWork.dbo.TB_TASK as T
inner join BusyWork.dbo.ENROLLMENTTASK as et on t.Task_Id = et.Task_Id
where
t.Due_Dt >= @pStartDate and t.Due_Dt <= @pEndDate
在insert
聲明,我試圖避免values
條款,所以我也可以很容易地重寫聲明爲純select
。始終在插入中明確指定列以避免在添加/刪除表中的字段後出現問題。也可以嘗試使用列別名,所以當你使用普通select
insert into BusyWork.dbo.TB_TASK
(
Due_Dt,
Name
)
select
getdate() as Due_Dt,
'New' as Name
另一條規則測試它,你可以檢查正確的價值觀 - 總是用別名列和表/圖/表函數。將來修改語句會更容易,它可以幫助您在更改表模式時避免一些令人討厭的錯誤。
我也不喜歡巴勃羅的多明戈斯的方式。你的更好。但它只是SELECT示例。 –
我不認爲我喜歡你的風格「*避免價值條款*」。我認爲這會讓意圖變得更加混亂(並且並非所有DBMS都允許沒有FROM的SELECT)。 –
是的,它可能不適合其他RDBMS,但對於我非常喜歡的SQL服務器。它並不令人困惑,而且更容易支持和維護這樣的代碼 –
我使用http://poorsql.com/ – Tariqulazam
http://programmers.stackexchange.com/questions/114346/algorithm-for-formating-sql-code – RGO
沒有太多的正式標準,但我懷疑至少有一本Celko書可以涵蓋它。您可以通過標記爲[SQL](http://stackoverflow.com/questions/tagged/sql)的問題來查看代碼,特別是在答案中查看人們如何格式化SQL以用於演示。問題的格式通常不及答案。 –