sql
dasihg
这个作者很懒,什么都没留下…
展开
-
共享锁+行锁防止其他事务对指定行同时更新
BEGIN TRANSELECT * FROM ceb_Area WITH(ROWLOCK,HOLDLOCK) where ID=1WAITFOR DELAY '00:00:10'COMMIT TRAN;原创 2013-06-30 15:58:51 · 801 阅读 · 0 评论 -
常用表操作Sql语句
--更改表脚本 --添加列Alter table PrintOrder Add PO_CreateDate datetime null default(getdate()) --更改列Alter table PrintOrder Alter column PO_CreateDate datetime null --更改默认值ALTER TABLE [dbo].[原创 2013-03-27 21:43:37 · 532 阅读 · 0 评论 -
sql计算百分比
select a.creatdate,a.subcount,b.total,a.subcount*100/total from(select creatdate,COUNT(0) subcount from test where [percent]>75 group by creatdate)a,(select creatdate,COUNT(0) as total from tes原创 2013-04-05 16:16:23 · 1590 阅读 · 0 评论 -
sql锁进程相关操作
创建死锁 begin transelect * from paymenthistory WITH (TABLOCKX) --WAITFOR DELAY '00:00:10' 延时,相当于sleep commit tran--注释该句后将产生死锁查找被锁的进程 SELECT request_session_id spid,OBJECT_NAME(reso原创 2013-04-05 16:57:02 · 846 阅读 · 0 评论 -
sql将逗号分隔的字符串转为表Table
Create Function [dbo].[Func_SplitStrToTable](@str varchar(8000))Returns @tableName Table( str2table varchar(100))As--该函数用于把一个用逗号分隔的多个数据字符串变成一个表的一列,例如字符串'1,2,3,4,5' 将转换成一个表Beginset @s原创 2013-04-05 16:43:03 · 6405 阅读 · 0 评论 -
sql删除重复行
delete [Payment] from [Payment] inner join( select ID from (select *,ROW_NUMBER() over(partition by Policy_No,PTD_Start order by PTD_Start) as rowno from [Payment])Twhere rowno>1) T2 --查询行号大于1的记录原创 2012-12-29 13:36:34 · 367 阅读 · 0 评论 -
判断两个时间段是否有交集
时间段:starttime_1到endtime_1,starttime_2到endtime_2SQL语句:where least(endtime_1, endtime_2) > greatest(starttime_1, starttime_2)解释:least取最小值,greatest取最大值。创建函数least、greatestCREATE FUNCTION least(原创 2012-12-29 12:59:30 · 3723 阅读 · 0 评论 -
数据库不同版本的相互迁移问题(DTS/SSIS)
1. SQL Server 2000 DTS包可以用在SQL Server 2005中吗? DTS不在SQL Server 2005中使用了,它由一个崭新的被称作SQL Server集成服务(SSIS)的抽取、转换和装载(ETL)引擎所替代。SSIS为构建ETL解决方案提供了一个比DTS更加强大、灵活和具有更好性能的基础,但是这可能使许多数据库管理员不知道该拿他们的DTS包怎么办。 好原创 2012-10-18 18:36:48 · 4118 阅读 · 1 评论 -
函数和存储过程的区别
1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 3. 存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 4. 函数限原创 2012-10-18 12:42:06 · 695 阅读 · 0 评论 -
利用sql语句随机抽取记录
数据库的随机查询SQL 1. Oracle,随机查询20条select * from( select * from 表名 order by dbms_random.value) where rownum 2.MS SQL Server,随机查询20条select top 20 * from 表名order by n转载 2013-05-11 15:41:08 · 1232 阅读 · 0 评论 -
oracle实现left join的两种写法
select * from a,b where a.id=b.id(+);--该写法的执行效率高select * from a left join b on a.id=b.id;原创 2013-05-11 15:50:08 · 7407 阅读 · 1 评论 -
存储过程调试
BEGIN TRY BEGIN TRAN; /***需调试的存储过程开始**/ declare @Stat tinyint; set @Stat=1; select @Stat=10000; /***需调试的存储过程结束**/ ROLLBACK TRAN; END TRY BEGIN CATCH原创 2013-06-29 19:54:14 · 1834 阅读 · 0 评论 -
安装 SQL Server2008 安装程序规则支持提示“重新启动计算机”失败
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除 PendingFileRenameOperations这个值再执行安装程序即可原创 2013-12-19 09:31:41 · 2780 阅读 · 1 评论 -
历史执行Sql语句性能分析 CPU资源占用时间分析
SELECT HIGHEST_CPU_QUERIES.PLAN_HANDLE, HIGHEST_CPU_QUERIES.TOTAL_WORKER_TIME, Q.DBID, Q.OBJECTID, Q.NUMBER, Q.ENCRYPTED, Q.[TEXT],max_WORKER_TIME,last_execution_tim原创 2013-11-28 16:46:33 · 1710 阅读 · 0 评论 -
返回List的分页方法
cs代码 /// /// 处理分页检索存储过程(SQL2005) /// /// 需要查询的字段 /// 表名 /// sql条件 /// 排序字符串 /// 当前页 /// 每页记录数 /// 总记录数原创 2013-11-12 13:55:35 · 1111 阅读 · 0 评论 -
@@IDENTITY与SCOPE_IDENTITY()
在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操作,那么,在语句执行后立即调用 @@IDENTI转载 2013-11-08 10:55:10 · 698 阅读 · 0 评论 -
mdf导入sqlServer
导入mdf有两种方法: (需要mdf和ldf两个文件) 1. 在SQL企业管理器中,选择左边树型列表,根节点即“数据库”的文件夹图标,右键“所有任务”→“附加数据库”→选择mdf文件→指定库名称(“附加为”)→指定所有者→确定 2:在查询分析器里执行如下语句exec sp_attach_db '数据库名','mdf文件路原创 2013-10-16 11:00:54 · 831 阅读 · 0 评论 -
sql设置事务隔离级别
SET TRANSACTION一共有以下几种级别:SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }第一种情况:READ COMMITTED这句的作原创 2013-10-15 17:43:16 · 924 阅读 · 0 评论 -
sql 判断表、列、视图等是否存在
1 判断数据库是否存在if exists (select * from sys.databases where name = '数据库名') drop database [数据库名] 2 判断表是否存在if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(i转载 2013-08-01 19:47:50 · 4646 阅读 · 0 评论 -
OUTPUT新增记录入库示例C#+存储过程
2.存储过程 public int Insert(CebContractData model) { var parameters = new SqlParameter[] { new SqlParameter("@ID",SqlDbType.Int){Value = mo原创 2013-07-15 15:08:01 · 516 阅读 · 0 评论 -
Varchar的最大长度
mssql 2000中,varchar有长度限制,最大长度为8000。如果字符串的长度超过8000,保存在VARCHAR中时就会被截断。没有varchar(max),但是可以使用text类型,不限制长度 mssql 2005中varchar(max)、nvarchar(max)、varbinary(max)这几个数据类型最大长度都为2^31-1。(2^10*2^10*2^10=2^30原创 2012-10-18 17:52:01 · 5162 阅读 · 0 评论 -
索引类型
索引类型唯一索引:唯一索引不允许两行具有相同的索引值主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,原创 2012-10-18 12:53:35 · 6774 阅读 · 0 评论 -
查询产品销售总额排行前3和最后3名的产品ID
select pid from (select pid,ROW_NUMBER() over (order by sum(amount) ) s1,ROW_NUMBER() over (order by sum(amount) desc) s2 from progroup by pid)twhere s1原创 2012-10-12 19:50:09 · 2583 阅读 · 0 评论 -
sql Case语句 条件语句
select case isnull(PAudit ,0) when 0 then '在线' when 1 then '未测试' when 2 then '测试异常' else '已删除' end as PAuditfrom program--null须替换为其他值,不可以 case PAudit when null原创 2011-11-10 15:44:32 · 394 阅读 · 0 评论 -
sql获取自增行号
select row_number() over( order by @@identity) as row原创 2011-12-25 17:03:49 · 1302 阅读 · 0 评论 -
int、bigint、smallint 和 tinyint
int、bigint、smallint 和 tinyint使用整数数据的精确数字数据类型。bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。int从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647转载 2011-12-13 18:01:27 · 336 阅读 · 0 评论 -
sql快速查记录数
数据不多时一般使用 select count(0) from T_Imei with (nolock) 上百万的用:select top 1 rowcnt from sysindexes where id=object_id('T_Imei')原创 2011-12-09 11:20:31 · 406 阅读 · 0 评论 -
sql 事务语句
create procedure [dbo].[Proc_Prepaid] as begin BEGIN TRY BEGIN TRAN; declare @Stat int; set @Stat=0; --定义变量 ......... select @Stat; COMMIT TRAN; END T原创 2011-11-15 13:51:30 · 538 阅读 · 0 评论 -
sql获取受影响行数、插入标识值
@@ROWCOUNT--受影响行数@@IDENTITY 和 SCOPE_IDENTITY 可以返回当前会话中的所有表中生成的最后一个标识值。但是,SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 可以返回任何会话和任何作用域中为特定表生成的标识值原创 2011-11-15 13:47:02 · 4114 阅读 · 0 评论 -
sql处理死锁
/*--处理死锁 查看当前进程,或死锁进程,并能自动杀掉死进程 因为是针对死的,所以如果有死锁进程,只能查看死锁进程 当然,你可以通过参数控制,不管有没有死锁,都只查看死锁进程--邹建 2004.4--*//*--调用示例 exec p_lockinfo转载 2011-10-14 13:48:31 · 339 阅读 · 0 评论 -
杀掉相应数据库的进程
代码来源:http://www.cnblogs.com/LCX/archive/2008/12/03/1346924.html Create Proc Sp_KillAllProcessInDB@DbName VarChar(100)asi转载 2011-10-14 13:37:33 · 512 阅读 · 0 评论 -
匹配用逗号分隔的数字(防sql注入检查)
string p = @"^\d+(,\d+)*$";//格式: 1,32,44,2 Regex r = new Regex(p); Match m = r.Match(bid); if (!m.Success)//防sql注入检查 { MessageBox("非法参数!");原创 2011-12-27 12:23:35 · 1063 阅读 · 0 评论 -
sql判断临时表是否存在
if not (select object_id('Tempdb..#TempTable')) is nulldrop table #TempTable原创 2012-02-24 17:52:07 · 485 阅读 · 0 评论 -
sql日期格式转换
select CONVERT(varchar, getdate(), 120 )2004-09-12 11:06:08select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')20040912110608select CONVERT(varchar(12) , ge原创 2012-03-27 11:36:52 · 336 阅读 · 0 评论 -
存储过程优缺点
优点:1.由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,StoredProcedure为封装此代码提供了一个替换位置。2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划-- 实际上是 Microsoft SQL Server为在存储过程中获取由 T-SQL 指定的结果而必须采取的步骤的记录。)缓存改善性能。但sql server新版本,转载 2012-10-12 22:30:05 · 324 阅读 · 0 评论 -
sql游标用法示例
Declare @ida smalldatetimeDeclare @icd intDECLARE S_Cursor CURSOR FOR SELECT Date,cid FROM DayRecomStat group by Date order by DateOPEN S_Cursor FETCH NEXT FROM S_Cursor INTO @ida,@icd ;W原创 2011-12-08 12:08:31 · 291 阅读 · 0 评论 -
sql去重统计
SELECT count(distinct imei) FROM [VPDB].[dbo].Stat_NochanelPage原创 2012-08-28 16:58:01 · 2073 阅读 · 0 评论 -
查找外键引用的表
--下面语句去掉where条件的话是所有的外键关系 select t1.* ,t2.name,t3.name from dbo.sysforeignkeys t1 left join sysobjects t2 on t1.fkeyid = t2.id原创 2012-07-25 10:53:18 · 622 阅读 · 0 评论 -
row_number和partition by分组取top数据,每组查询前N条
--取每个学科的前3条数据select * from ( select subject,name,score,ROW_NUMBER() over(PARTITION by subject order by @@identity) as num from #score) T where T.num原创 2012-06-26 17:24:14 · 1056 阅读 · 0 评论 -
多表关联更新,UPDATE FROM用法
UPDATE A set A.ImageID_list=F.AListImgIDFROM ProgramRelate A, #temp_rlt FWHERE A.PID=F.PAutoID原创 2012-06-13 14:16:52 · 1221 阅读 · 0 评论