From http://www.simple-talk.com/sql/t-sql-programming/transact-sql-formatting-standards-(coding-styles)/
1.大写
把关键字和用户定义的对象(比如表,列,变量)区别,比如把关键字大写,而把用户定义的对象Camel Case(首字母大写)。
IF OBJECT_ID(‘ProductDocs’, ‘U’) IS NOT NULL
DROP TABLE ProductDocs
GO
CREATE TABLE ProductDocs
(
DocID INT NOT NULL IDENTITY,
DocTitle NVARCHAR(50) NOT NULL,
DocFileName NVARCHAR(400) NOT NULL,
CONSTRAINT PK_ProductDocs_DocID PRIMARY KEY CLUSTERED (DocID ASC)
)
GO
2.对象引用
对于Select,尽量用Column Name,避免*,Table Name尽量用Database and Scheme 表示。
SELECT DocID, DocTitle
FROM AdventureWorks.dbo.ProductDocs
ORDER BY DocTitle DESC
3.Alias
Table Alias可用可不用,如果要用的话,尽量用Table Name的缩写,而不要用没有意义的Name(比如:a, b,c)
SELECT
(cnt.FirstName + ' ' + cnt.LastName) FullName,
emp.LoginID, emp.Title
FROM HumanResources.Employee emp
INNER JOIN Person.Contact cnt
ON emp.ContactID = cnt.ContactID
ORDER BY cnt.LastName
4.逗号的使用
对于Select Column Name,应该把每一个Column+','作为单独的一行。
对于Order By,把所有的Column+','作为整个一行。
SELECT FirstName,
MiddleName,
LastName,
City,
StateProvinceName
FROM HumanResources.vEmployee
WHERE JobTitle LIKE ‘Production Technician%’
ORDER BY StateProvinceName, City
5.空格对齐
每一个语句作为单独的一行,如果有子句的话,用TAB分隔。
SELECT FirstName, MiddleName, LastName, City, StateProvinceName
FROM HumanResources.vEmployee
WHERE JobTitle LIKE 'Production Technician%'
ORDER BY StateProvinceName, City
6.代码块
(,),子查询作为单独的一行,用TAB分隔。
IF OBJECT_ID(‘ProductDocs’, ‘U’) IS NOT NULL
DROP TABLE ProductDocs
GO
CREATE TABLE ProductDocs
(
DocID int NOT NULL IDENTITY,
DocTitle nvarchar(50) NOT NULL,
DocFileName nvarchar(400) NOT NULL,
CONSTRAINT PK_ProductDocs_DocID PRIMARY KEY CLUSTERED (DocID ASC)
)
GO
7.注释
Before/After Code用/* */,Within Code用--注释。