Sql语句使用规范

规范内容以及注意事项:

1、查询时候使用top 10 /top 100 和where 字句控制每次执行SQL 返回的结果集合,在满足业务需求的同时返回最小的结果。

2、使用数据投影的方式,选择前端程序需要的数据列,不允许使用select * from dbo.TableA的方式访问数据库中的列。

如:select userid , username , sex from dbo.TableA

3、尽量使用存储过程访问数据库中的数据。减少直接使用SQL 脚本访问数据库资源。

4、所有的SQL 语句都不允许使用系统表和系统字段,作为判断业务逻辑或者生成临时数据的依据。

如:select name from sys.sysobjects where xtype = ‘U’ 来查询所有的用户表。

5、编写长脚本需要注意缩进和换行,提高SQL脚本的阅读性。

如:

--查询Orders
Select top 10
OrderID,
UserID,
ProductID
From dbo.Orders
Where …
--插入Orders
Insert into dbo.Orders
(OrderID,UserID,ProductID)
Values
(1,2,3)

6、插入数据的语句需要把插入字段写全。

如上:

插入orders示例,不允许写成:insert into dbo.orders select 1,2,3

7、SQL 语句调用对象的时候需要加上对象的所有者,如果是默认的所有者,需要加上dbo。

如:

select userid,username from dbo.TableA 不要写成 select userid,username from TableA

8、如果需求没有强制要求返回的查询结果需要排序,SQL脚本后面不要加上Order By子句。

9、SQL语句如果设计到多表连接查询的时候,需要用表的别名,而不要使用“表名.列名”的方式。

如:select a.userid,a.username,b.sex
From dbo.TableA a
Join dbo.TableB b on a.userid = b.userid
Where …….
错误写法:select TableA.userid,TableA.username,TableB.sex
From dbo.TableA
Join dbo.TableB on tableA.userid = TableB.userid
Where …….

10、在大量数据插入的情况下,把需要插入的数据整合起来一起插入数据库,会节省很多资源。

如:常规写法

Insert into dbo.TableA(id,name)
Select 1,’aa’
Insert into dbo.TableA(id,name)
Select 2,’bb’

建议写法:

Insert into dbo.TableA(id,name)
Select 1,’aa’
Union all
Select 2,’bb’

建议写法2:

Insert into dbo.tableA(id,name)
Values(1,’aa’),(2,’bbb’)

如:常规写法:

Update a
Set a.userno = a.userno+1
From dbo.TableA a
Where a.username = ‘张三’
Go
Update a
Set a.userno = a.userno +1
From dbo.TableA a
Where a.username = ‘李四’

建议写法

Update a
Set a.userno = a.userno+1
From dbo.TableA a
Where a.username in (‘张三’,’李四’)

11、 多表查询时候需要严格限制字段的别名,以防止SQL解析出现逻辑错误。

如:

select
OrderID,
UserID
from dbo.Orders
where UserID in
(
select
OrderID
from dbo.UserInfo
)
如果作为子查询UserInfo中没有OrderID,SQL会到父查询中寻找OrderID字段,导致逻辑错误

12、引用的对象名或字段名,严格按照其原始大小写调用

如:查询Orders表

不能写成select orderid,…. From dbo.orders …

要写成select OrderID,…. From dbo.Orders …

防止数据库编码规则更改,导致无法找到对象。

sql server 语句使用规范的更多相关文章

  1. Oracle、Mysql、Sql Server语句的区别

    1.空值的处理——判断是否为空,为空时取一个值,不为空时取另一个值 1).Sql Server 中 ISNULL(check_expression,replacement_value) 解释:如果ch ...

  2. SQL Server 语句整理

    1. 创建数据库 create database dbName 2. 删除数据库 drop database dbName 3. 备份sql server --- 创建 备份数据的 device US ...

  3. 基本的SQL Server 语句,包含 增、删、改、查 程序员必会

    这是我以前学习时, 整理的一套基础SQL Server增.删.改.查 等语句 ,初学者可以从上往下学完. 也方便自己忘记时翻看! create database SQLschool go --批 go ...

  4. sql server语句

    一.基础1.说明:创建数据库CREATE DATABASE 数据库名2.说明:删除数据库drop database 数据库名3.说明:备份sql server--- 创建 备份数据的 deviceUS ...

  5. Sql Server语句大全

    T-SQL语句大全 --跳转到SQL myDemo USE [SQL myDemo] go --声明变量id declare @id int --为变量赋值:直接赋值 --将cid为3的cname值赋 ...

  6. 常用SQL Server 语句

       常用SQL语句大全 1.//创建数据库 CREATE DATABASE DBName 2.//删除数据库 DROP DATABASE DBName 3.//备份SQL SERVER --- 创建 ...

  7. SQL SERVER 语句大全

    ·SQL的简单查询实例教程关键词:SQL语句大全 中文网 整理编辑,经典SQL语句大全(SQL语句大总结),欢迎网友投稿 下列语句部分是Mssql语句,不可以在access中使用.SQL分类:DDL— ...

  8. 经典实用SQL Server语句大全总结(一)

    简要介绍基础语句:1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创 ...

  9. sql server 语句书写注意事项

    1  Between在某些时候比IN 2 在必要是对全局或者局部临时表创建索引,有时能够提高速度,但不是一定会这样,因为索引也耗费大量的资源.他的创建同是实际表一样 3 尽量少用视图,它的效率低.对视 ...

随机推荐

  1. jQuery之DOM属性

    1. .addClass()方法:为每个匹配的元素添加指定的样式类名.值得注意的是设个方法不会替换一个样式类名.他只是简单的添加一个样式类名到元素上.对所有匹配的元素可以一次添加多个用空格隔开的样式类 ...

  2. Android 适配知识点

    转载:https://gold.xitu.io/post/58451c1d8e450a006c0f1c74 支持多种屏幕 Android 可在各种具有不同屏幕尺寸和密度的设备上运行.对于 应用,And ...

  3. Redis模式匹配删除key

    Redis keys命令支持模式匹配,但是del命令不支持模式匹配,有时候需要根据一定的模式来模糊删除key,这时只能结合shell命令来完成了. 具体命令是: redis-cli KEYS &quo ...

  4. AI贪吃蛇(二)

    前言 之前写过一篇关于贪吃蛇AI的博客,当时虽然取得了一些成果,但是也存在许多问题,所以最近又花了三天时间重新思考了一下.以下是之前博客存在的一些问题: 策略不对,只要存在找不到尾巴的情况就可能失败, ...

  5. codevs 1772 歌词

    1772 歌词  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver       题目描述 Description 35痛过以后才知情已难寻吾爱至斯只剩飞花梦影回 ...

  6. TypeScript Declaration Merging(声明合并)

    TypeScript中有一些独特的概念,来自需要描述JavaScript对象类型发生了哪些变化.举个例子,最为独特的概念就是"声明合并".理解了这个概念将会对你在当前JavaScr ...

  7. php 错误

    ini_set('display_errors', '1');error_reporting(E_ALL ^ E_NOTICE);   有时有了其它框架 应该用它的配置,要不然,你改了,它又改回去了: ...

  8. J2EE学习路线图

    一:J2SE 面向对象-封装.继承.多态 内存的分析 递归 集合类.泛型.自动打包与解包.Annotation IO 多线程.线程同步 TCP/UDP AWT.事件模型.匿名类 正则表达式 反射机制 ...

  9. Ubuntu一路填坑...

    1.安装 从ubuntu9.0开始,一路更新,越来越垃圾,更可恶的是工作上经常指定特定的版本,于是乎,我电脑里装了n个版本的ubuntu. Win7 + Ubuntu 15.10 1)装完win7之后 ...

  10. BerkeleyDB库简介

    BerkeleyDB库简介 BerkeleyDB(简称为BDB)是一种以key-value为结构的嵌入式数据库引擎: 嵌入式:bdb提供了一系列应用程序接口(API),调用这些接口很简单,应用程序和b ...