sql server 语句使用规范
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 语句使用规范的更多相关文章
- Oracle、Mysql、Sql Server语句的区别
1.空值的处理——判断是否为空,为空时取一个值,不为空时取另一个值 1).Sql Server 中 ISNULL(check_expression,replacement_value) 解释:如果ch ...
- SQL Server 语句整理
1. 创建数据库 create database dbName 2. 删除数据库 drop database dbName 3. 备份sql server --- 创建 备份数据的 device US ...
- 基本的SQL Server 语句,包含 增、删、改、查 程序员必会
这是我以前学习时, 整理的一套基础SQL Server增.删.改.查 等语句 ,初学者可以从上往下学完. 也方便自己忘记时翻看! create database SQLschool go --批 go ...
- sql server语句
一.基础1.说明:创建数据库CREATE DATABASE 数据库名2.说明:删除数据库drop database 数据库名3.说明:备份sql server--- 创建 备份数据的 deviceUS ...
- Sql Server语句大全
T-SQL语句大全 --跳转到SQL myDemo USE [SQL myDemo] go --声明变量id declare @id int --为变量赋值:直接赋值 --将cid为3的cname值赋 ...
- 常用SQL Server 语句
常用SQL语句大全 1.//创建数据库 CREATE DATABASE DBName 2.//删除数据库 DROP DATABASE DBName 3.//备份SQL SERVER --- 创建 ...
- SQL SERVER 语句大全
·SQL的简单查询实例教程关键词:SQL语句大全 中文网 整理编辑,经典SQL语句大全(SQL语句大总结),欢迎网友投稿 下列语句部分是Mssql语句,不可以在access中使用.SQL分类:DDL— ...
- 经典实用SQL Server语句大全总结(一)
简要介绍基础语句:1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创 ...
- sql server 语句书写注意事项
1 Between在某些时候比IN 2 在必要是对全局或者局部临时表创建索引,有时能够提高速度,但不是一定会这样,因为索引也耗费大量的资源.他的创建同是实际表一样 3 尽量少用视图,它的效率低.对视 ...
随机推荐
- hdu3087 LCA + 暴力
Network Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Su ...
- javascript学习笔记10----字符串的基本操作
1.字符串的基本操作如下: 定义字符串: var str = "Hello World!" 字符串的基本操作如下: str.length-----返回字符串长度,这里返回12 st ...
- 上传本地代码到github
第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令git init第二步:将项目的所有文件添加到仓库中git add .如果想添加某个特定的文件,只需把.换成特定的文件名即可第三步:将 ...
- iis虚拟目录名称“ReportServer”的巧合
今天测试一个Crystal Report网站的报表服务,建立一个虚拟目录,名为ReportServer,结果无论怎样访问浏览器都返回 localhost/ReportServer - / Micr ...
- Mysql连表之多对多
说明 这里的文章是接着前面 Mysql连表一对多 写的. 连表多对多 可以理解成一夫多妻和一妻多夫. 男人表: nid name 1 xxx 2 yyy 3 zzz 女人表: nid name 1 a ...
- div
<div id="container"> <div id="left">左边</div> <div id=" ...
- <<< PermGen space溢出解决方法
错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域.还没有弄明白PermGen space是属于非堆内存,还是就是非堆内存,但至 ...
- arcgis desktop 10.1 license manager无法启动问题解决
19:44:36 (ARCGIS) Vendor daemon can't talk to lmgrd (License server machine is down or not respondin ...
- [Unity3d]调试问题之UI/Image不显示
问题描述 在项目中添加的UI/Image资源,在PC和通过Unity Remove测试都没有问题: PC上的效果 手机上Unity Remove测试结果 可真正发布到手机上运行则如下显示,说明imag ...
- ecshop 支付
支付分成两部分 1.订单信息 2.支付日志ID 3.生成支付代码 一次性支付完成 // 支付信息 include_once('includes/lib_payment.php'); $order['l ...