Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

SQL SERVER数据库脚本开发规范 PDF 下载


分享到:
时间:2020-08-15 10:13来源:http://www.java1234.com 作者:小锋  侵权举报
SQL SERVER数据库脚本开发规范 PDF 下载
失效链接处理
SQL SERVER数据库脚本开发规范 PDF 下载

本站整理下载:
 
相关截图:
 
主要内容:

一、命名规范
1)命名标志法
用Pascal标志法,给数据库对象命名,Tables,Views,Store Procedures。表和视图建议用“s”结尾。例如:
Contracts;
ContactPhones
 
2)一组相关表的命名
如果有一组相关的表,需要加前缀。以下划线“_”分割。例如:
Products_USA
Products_India
Products_Mexico
 
3)存储过程命名
UP[_ApplicationName]_[GroupName_]<Action><TableName>。
这里的Action如:Get,Delete,Update,Write,Archive,Erase等动词。
例如:
UP_Clop_GetStockProcess;
UP_GetOrgUsers
 
4)触发器命名
TR_<TableName>_<Action><Description>
例如:
TR_UserDetails_UpdateUserName。
 
5)索引命名
IX_<TableName>_<Columns Separated By_>。例如:
IX_UserDetails_UserID。
 
6)主键
PK_<TableName>。
 
7)外键
FK_<TableName1>_<TableName2>。例如:
FK_UserDetails_Emails。
 
8)引用字段命名
一个表如有引用字段,指有外键的列,该字段名格式为:<ReferedTableName>ID;
 
9)缺省值
DF_<TableName>_<Column Name>。例如:
DF_UserDetails_UserName。
 
10)避免使用空格
在数据库对象命名时,避免使用空格。
 
11)数据库保留字
不要使用数据库保留字,给数据对象命名;
 
二、书写格式
1)SELECT语句
不要在SELECT语句后面用星号*,表名前需要加Owner(dbo)。在SELECT语句后面写明需要的列名。例如:
SELECT MainDeptId
   ,PowerDesc 
FROM [dbo].[AppDatabases] WITH(NOLOCK)
 
2)数据库对象引用
在多表关联时,列名前需要加上别名(或表名),表名前加Owner(dbo)。如果涉及到跨数据库,就需要加上Database名称。例如:
例如:AdventureWorks.dbo.Contact;存储过程也一样;
 
3)不要拼SQL语句
从安全角度出发,尽可能用参数化来实现;
 
4)明确写出关联方式(不要用旧的书写方式)
--错误的格式:
SELECT *
FROM Table1, Table2
WHERE Table1.d = Table2.c
 
--正确的格式:
SELECT Tb1.Columns1
  ,Tb2.Columns2
FROM Table1 Tb1 WITH(NOLOCK)
INNER JOIN Table2 Tb2 WITH(NOLOCK)
ON Tb1.d = Tb2.c
 
5)SQL语句缩进方式
SQL语句要按照缩进方式书写。提高可读性。例如:
Example:Wrong Format
SELECT E.UserName,UD.PasswordEncode FROM DBO.UserDetails UD WITH(NOLOCK) INNER JOIN Employee E WITH(NOLOCK) ON E.EmployID = UD.UserID
Example:Correct Format
SELECT E.UserName
,UD.PasswordEncode
FROM DBO.UserDetails UD WITH(NOLOCK) 
INNER JOIN Employee E WITH(NOLOCK) 
ON UD.UserID = E.EmployID
 
6)SQL保留字要大写
对SQL的保留字,都需要大写。例如:
SELECT,UPDATE,INSERT,WHERE,INNER JOIN,AND,OR等。
 
7)不使用系统前缀
不要用系统对象使用了的前缀来命名。例如“sp_”是数据库系统自身存储过程的前缀(请参存储过程的命名格式);
 
8)注释的重要性
不要忘记在存储过程,触发器,SQL Batches中添加注释。注释不会影响性能。
 
9)注释的格式
单行注释,用两个减号(--)。多好注释,用(/* */)括起来;
 
10)过多使用GOTO语句会使得代码可读性降低
 
三、性能相关
1)尽量用主键
在Update和Delete的Where子句中,尽量用主键
 
2)Where子句中的条件按照精度从高到底依次排列
SELECT P.Description
,P.Model 
From Products P WITH(NOLOCK)
Where Brand = 'Panasonic'
AND Category = 'HomeAplliance'
Wrong Format:
SELECT P.Name
,P.Age
FROM PersonTable P WITH(NOLOCK)
WHERE CountryID = ‘CN’
AND ProvinceID = ‘HeBei’
AND CityID = ‘ShiJiaZhuang’
 
3)尽量避免使用游标Cursors
建议使用SELECT语句,或用While Loop语句实现相同功能;
 
4)SET NOCOUNT ON 语句
把 SET NOCOUNT ON 语句放到存储过程和触发器中,作为第一句执行语句。例如:
CREATE PROCEDURE [dbo].[UP_GetOrgChildren]
AS
BEGIN
SET NOCOUNT ON
......
关闭数据库提示输出。
 
5)模糊查询Like语句
在模糊查询Like语句中,不要使用前置通配。即不要在单词的第一个字母使用百分号%。这样Index不再起作用;
 
6)不要在Where子句关联字段上使用函数
这会使得Index不起作用;
 
7)Filtered Index可以提高查询性能
当特定集合经常被访问,使用Filtered Index可以提高查询性能,可以减少索引维护开销;
 
8)尽量不用临时表
建议使用派生表或公用表表达式(CTE)
--查找排在第二位的价格
SELECT Min(UnitPrice)
FROM Products With(Nolock)
WHERE ProductID IN
(
    SELECT TOP 2 ProductID
        FROM Products With(Nolock)
        ORDER BY UnitPrice DESC
)
 
实现同样功能,可以改造成以下用派生表来表达。效率是上面的两倍:
SELECT Min(UnitPrice)
FROM
(
    SELECT TOP 2 UnitPrice
        FROM Products With(Nolock)
        ORDER BY UnitPrice DESC
) As Pro
 
9)尽可能不用“不等于号”
 
10)及时检查global变量@@ERROR
在执行数据处理(INSERT/UPDATE/DELETE)后,及时检查global变量@@ERROR。以便在出错时,能Rollback。或者用Try Catch;
 
11)不要使用RECOMPLIE选项
不要在调用存储过程时,使用RECOMPLIE选项
EXECUTE dbo.UP_Test_Defaults @p2 = 'A' WITH RECOMPILE;
 
12)Declare语句
在存储过程的起始部分定义Declare语句。这会使查询优化器,Reuse查询计划;
 
13)SET语句
在存储过程前面(Declare后面),执行SET语句,对变量进行初始化;
 
14)尽可能不使用Cross Join
 
15)尽可能不使用集合返回
如果在没有必要返回集合的情况下,不要使用集合返回。
例如:
IF EXISTS(SELECT Top 1 1
  FROM dbo.UserDetails WITH(NOLOCK)
  WHERE UserID = 50),这样比下面写法好:
IF EXISTS(SELECT * 
  FROM dbo.UserDetails WITH(NOLOCK)
  WHERE UserID = 50)


 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐