SQL 语句集

鉴于本人健忘,特新建一篇日志用于记录项目开发中觉得需要记录下来的SQL语句,以备日后之需微笑


一、从A表中获取特定字段数据批量insert到B表

注意:不需要Values关键字(没有验证过加上values是否可以),TableA与TableB的字段需要对应。

 insert into  TableA ( userName )  (select UserName  from TableB where [Status] =1 )

二、从数据库中随即取N条记录,这也是我在一家公司遇到的笔试题,当时不会,汗颜啊!! 

这是最简单的方法,通过调用SqlServer的newid()函数(产生GUID—全局唯一标志符)来产生随机记录。

采用这种方法时,需要将表中所有记录与newid()生成的值进行比较从而进行排序。因此,如果表中的记录较多,操作会非常缓慢。

  select top N * From Table  order by  NEWID()


三、显式对设置identity(1,1)的数据表插入自定义数据

如果一个数据表设置了主键并且自增长的话,ID会按照设置的递增种子累加,如1、2、3、4……,但是,如果我需要下一条记录将ID设置为6而不是默认的增长ID5的话,则需要设置打开 identity_insert

set   identity_insert  Table  ON 
insert into Table (ID,name) values( 6,'Tom')  

--必须写上需要插入的字段,即使insert的是全部字段,否则的话,
--会报“仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'Table'中的标识列指定显式值”的错误


四、使用下面语句查看执行的查询计划,我的理解应该历史执行过的sql语句,还驻留在sqlserver的缓存之中

SELECT *  FROM sys.syscacheobjects 
我们也可以关注下面四个字段,usecounts为使用的次数,表示该计划用了多少次,而sql字段为是执行了哪个sql语句

SELECT cacheobjtype,objtype,usecounts,sql FROM sys.syscacheobjects 


五、Sqlserver自动增长列归零

一个项目完成后数据库中会有很多无用的测试数据,可以使用delete * 将数据全部删除,但自增长列(一般是主键)基数不会归零,使用TRUNCATE函数可以将表中数据全部删除,并且将自增长列基数归零。一定要注意,表中的数据全部删除了。它的语法如下:

TRUNCATE  TABLE  tableName    --其中tableName中所要操作的数据


六、使用Sql语句添加新字段,因为数据量很大的表使用设计器新增表字段的时候,往往出现超时,所以,解决方法可以使用sql语句。

 alter table [TableName]  add [字段名]  bigint  default 0  not null


七、SQL语句处理事务以及Try……Catch捕抓异常后回滚事务

BEGIN TRY                                                                     --开始Try
     BEGIN TRANSACTION;                                                        --开始事务                                                              
     insert into [EtradeNowDB].[dbo].[T_HelpEnterprise]  (EntId,CreditGrade,UserName)  --不会出错的sql语句
 values(9999999,1,11)
      insert into [EtradeNowDB].[dbo].[T_HelpEnterprise]  (EntId,CreditGrade,UserName) --会出错的sql语句
 values(null,1,11)
      COMMIT TRANSACTION;                                                           --提交事务
END TRY
BEGIN CATCH 
    ROLLBACK TRANSACTION;                                                           --回滚事务
END CATCH;

sql语句解释:事务中,执行2条sql语句,第一条不会出错,第二条将null插入一个不允许插入null的字段,所以第二条肯定会出错的,执行该sql,程序发现错误的时候,会自动回滚,也就是第一条记录也不会执行,保证了数据的完整性





续……


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值