zoukankan      html  css  js  c++  java
  • 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

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

    如:

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

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

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

    如: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 …

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

  • 相关阅读:
    非常不错的学习网站——技术胖
    Vue中使用mescroll.js实现下拉刷新
    2020.10.07【NOIP提高A组】模拟
    2020.10.06【NOIP提高A组】模拟 总结
    2020.09.19【NOIP提高A组】模拟
    2020.09.12【NOIP提高A组】模拟
    GMOJ 4417. 【HNOI2016模拟4.1】神奇的字符串 题解
    上下界网络流学习笔记
    GMOJ 3571. 【GDKOI2014】内存分配 题解
    [模板]人工栈
  • 原文地址:https://www.cnblogs.com/lx823706/p/5624214.html
Copyright © 2011-2022 走看看