随笔分类 - MSSQL数据库
摘要:MySQL中select * for update锁表的问题 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例) ,否则MySQL将会执行Table Lock (将整个资料表单给锁住)。举个例子:假设有个表单p
阅读全文
摘要:文章导读拼SQL实现where in查询使用CHARINDEX或like实现where in 参数化使用exec动态执行SQl实现where in 参数化为每一个参数生成一个参数实现where in 参数化使用临时表实现where in 参数化like参数化查询xml和DataTable传参身为一名小小的程序猿,在日常开发中不可以避免的要和where in和like打交道,在大多数情况下我们传的参数不多简单做下单引号、敏感字符转义之后就直接拼进了SQL,执行查询,搞定。若有一天你不可避免的需要提高SQL的查询性能,需要一次性where in 几百、上千、甚至上万条数据时,参数化查询将是必然进行
阅读全文
摘要:大家一定在编写或分析一个复杂存错过程时,很希望能想VB代码一样进行调试,可惜SQL Server本身并没有提供调试器,我们可以利用VS来进行调试。 我写了一个简单的存储过程,介绍一下用VS调试存储过程的步骤。?1234567891011121314CreatePROCEDUREtestProcDebugger@id intASBEGINdeclare@testVal1 intset@testVal1=@iddeclare@empid varchardeclare@shipperid varcharselect@empid=shipperid,@shipperid=empid fromorder
阅读全文
摘要:Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对于两个表之间的数据进行操作的。 可以想象出,需要使用Merge的场景比如: 数据同步 数据转换 基于源表对目标表做Insert,Update,Delete操作使用Merge关键字的好处 首先是更加短小精悍的语句,在S..
阅读全文
摘要:declare @sql varchar(8000),@table_id varchar(20)select @sql=''declare ytbelwxg cursor for select distinct table_id from 主表open ytbelwxgfetch next from ytbelwxg into @table_idwhile @@fetch_status=0 begin select @sql=@sql+'select 主表.id,主表.x,'+@table_id+'.y from 主表,'+@table_id+&
阅读全文