有没有广泛使用的SQL编码标准?SQL与C/C++类型的编程语言略有不同.真的不知道如何最好地格式化它的可读性.
DJ.*_*DJ. 53
不会称它为编码标准 - 更像是编码风格
SELECT
T1.col1,
T1.col2,
T2.col3
FROM
table1 T1
INNER JOIN ON Table2 T2 ON T1.ID = T2.ID
WHERE
T1.col1 = 'xxx'
AND T2.Col3 = 'yyy'
Run Code Online (Sandbox Code Playgroud)
Rya*_*ill 14
我喜欢前面的逗号:
SELECT
column1
, column2
, column3
, COALESCE(column4,'foo') column4
FROM
tablename
WHERE
column1 = 'bar'
ORDER BY
column1
, column2
Run Code Online (Sandbox Code Playgroud)
在我看来,这使得它最容易阅读和调试.
Sna*_*Jag 14
我知道这很长,但请耐心等待,这很重要.这个问题打开了一个很酷的蠕虫病毒.如果您不喜欢数据库块,请继续阅读.
并且,在任何人想到打倒我的回复之前,请参阅以下文章和关于锁定和重新编译的连接文章; SQL数据库中两个最具破坏性的资源.
http://support.microsoft.com/kb/263889
我可以很快打字,而且我不想输入下一个人.但是下面的要点非常密切,即使是更多的打字.我已经构建了自己的SP应用程序来为我做这件事.
我提出的要点非常重要!你甚至可以对自己说,"你在开玩笑,这不是问题",好吧,那你就没有读过上面的文章.并且,M $将这些点放入注释中是完全愚蠢的.这些问题应该是BOLD和SCREAMING.
我还做了很多编码来使用C#应用程序构建我的基本脚本来加速开发,这些实践非常合理(10年值得),使脚本SP更容易,特别是更快.
还有更多,但这是我为前60%所做的事情.
最佳做法
喜好
选择
Run Code Online (Sandbox Code Playgroud)CREATE PROC [dbo].[procTable_SEL] AS SET NOCOUNT ON SELECT [Column1] = T1.[col1] , [Column2] = T1.[col2] , [Column3] = T2.[col3] FROM [dbo].[Table] T1 INNER JOIN ON [dbo].[Table2] T2 ON T1.ID = T2.ID WHERE T1.[col1] = 'xxx' AND T2.[Col3] = 'yyy' SET NOCOUNT OFF GO
更新
Run Code Online (Sandbox Code Playgroud)CREATE PROC [dbo].[procTable_UPD] AS SET NOCOUNT ON UPDATE t1 SET [Column1] = @Value1 , [Column2] = @Value2 , [Column3] = @Value3 FROM [dbo].[Table1] T1 INNER JOIN ON [dbo].[Table2] T2 ON T1.[ID] = T2.[ID] WHERE T1.[col1] = 'xxx' AND T2.[Col3] = 'yyy' SET NOCOUNT OFF GO
插入
Run Code Online (Sandbox Code Playgroud)CREATE PROC [dbo].[procTable_INS] AS SET NOCOUNT ON INSERT INTO [Table1] ( [Column1] , [Column2] , [Column3] ) VALUES ( @Value1 , @Value2 , @Value3 ) SET NOCOUNT OFF GO
要么
Run Code Online (Sandbox Code Playgroud)CREATE PROC dbo.procTable_INS AS SET NOCOUNT ON INSERT INTO [table1] ( [Column1] , [Column2] , [Column3] ) SELECT [Column1] = T1.col1 , [Column2] = T1.col2 , [Column3] = T2.col3 FROM dbo.Table1 T1 INNER JOIN ON Table2 T2 ON T1.ID = T2.ID WHERE T1.[col1] = 'xxx' AND T2.[Col3] = 'yyy' SET NOCOUNT OFF GO
删除
Run Code Online (Sandbox Code Playgroud)CREATE PROC dbo.procTable_DEL AS SET NOCOUNT ON DELETE FROM [dbo].[Table1] T1 INNER JOIN ON [dbo].[Table2] T2 ON T1.[ID] = T2.[ID] WHERE T1.[col1] = 'xxx' AND T2.[Col3] = 'yyy' SET NOCOUNT OFF GO