mssql sqlserver sql查询插入时禁止隐藏列名


摘要:
下文讲述在sql脚本编写中,使用通配符的可能导致异常的分析,如下所示:
实验环境:sql server 2008 R2



1.减少代码编写长度

在平常的开发中,有些程序员处于懒惰,在查询表数据时,直接使用”*”代表列名
或在数据插入时,不使用列名,让系统默认所有列的放入进行数据插入和查询操作。
例:

     select * from [maomao365]  ---采用星号代替列名查询表中所有列信息
    -------------------------------------------
    insert into [maomao365]
     values (...)
    ----对所有列进行数据插入操作
  

以上插入代码,当我们对“表列数”稍做修改,则会导致插入操作失败,

所有如果insert into不输入列名,则会对程序埋下很多的坑,不方便程序的扩展

使用隐式的插入,当我们的列顺序发生变化,也会导致insert into操作产生意想不到的结果,并且这种异常的排查非常困难。



select * 产生多余的系统开销

select * from tableName
通配符的写法,当列数越来越多时,返回了过多的信息给客户端,当有很多并发操作时,占用了过多的系统资源。


在实际的开发中,我们需避免使用通配符的写法,我们应该每次查询或插入时,都使用固定的列名。

采用固定的列名写法,不会因为列移动而影响插入操作
当列删除后,可以快速的定位异常位置
当列增加后,不会对原有代码产生异常
当避免使用通配符查询时,可减少系统的开销。