随笔分类 - SQL
摘要:语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100GO/*实例*/USE 库名GOIF EXISTS(SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经...
阅读全文
摘要:1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数...
阅读全文
摘要:看到一篇文章是讲sql语句or与union all的执行效率比较的,以前没怎么注意这个问题,感觉文章写的不错,转来一看。文章原链接:http://www.cunyoulu.com/zhuanti/qtstudy/20081124orunion.htmsql语句or与union all的执行效率比较 ...
阅读全文
摘要:MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能,还可以编写更安全的代码。...
阅读全文
摘要:概述很多时候我们需要在.NET应用程序中使用一条SQL语句来访问来自不同服务器、不同数据库中的不同的表,实现方法有很多。我们可以在.NET应用程序中建立数据访问层,使用ADO.NET Entity Framework将我们的数据库以及数据表抽象成应用程序对象,进而在程序里使用Code来对不同库当中的...
阅读全文
摘要:关键字:SQL Server 2008, recover deleted records今天有个朋友很着急地打电话给我,他用delete语句误删除了SQL Server 2008数据库中两个表中的所有记录,而这个数据库之前没有任何备份。让我帮他解决一下,不然他要赔偿客户很多钱。SQL Server中...
阅读全文
摘要:SQL Server 中时间比较例子:select count(*) from table whereDATEDIFF ([second], '2004-09-18 00:00:18', '2004-09-18 00:00:19')> 0说明 select DATEDIFF(day, time1 ...
阅读全文
摘要:数据库分页是老生常谈的问题了。如果使用ORM框架,再使用LINQ的话,一个Skip和Take就可以搞定。但是有时由于限制,需要使用存储过程来实现。在SQLServer中使用存储过程实现分页的已经有很多方法了。之前在面试中遇到过这一问题,问如何高效实现数据库分页。刚好上周在业务中也遇到了这个需求,所以...
阅读全文
摘要:存储过程或视图的字符串查询存储过程查询SELECT a.name,b.text FROM sys.procedures a LEFT JOIN sys.syscomments b ON a.object_id = b.id WHERE b.text LIKE '%DEMO.DBO.RFI_StartOpr%'视图查询SELECT a.name,b.text FROM sys.views a LEFT JOIN sys.syscomments b ON a.object_id = b.id WHERE b.text LIKE '%COPTD%'CREATE TAB
阅读全文
摘要:一、表变量 表变量在SQL Server 2000中首次被引入。表变量的具体定义包括列定义,列名,数据类型和约束。而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用)。定义表变量的语句是和正常使用Create Table定义表语句的子集。只是表变量通过DECLARE @local_variable语句进行定义。 表变量的特征:表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自动被清除。表变量较临时表产生更少的存储过程重编译。针对表变量的事务仅仅在更新数据时生效,所以锁和日..
阅读全文
摘要:本篇我们来讲一下事务处理技术。为什么要使用事务呢,事务有什么用呢,举个例子。假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果都顺利插入成功了,当然没有问题,如果任意一张表插入失败了,而另一张表插入成功了,插入成功的表就是垃圾数据了。我们要判断,任意一张表插入失败都回滚,就是都不插入,这就是事务的基本使用。一,sql事务定义所谓事务是用户定义的一个数据库操作序列,是一个不可分割的工作单位。他包含的所有数据库操作命令作为一个整体一起向系提交或撤消 ,这些操作要么全做,要么全不做,例如在关系数据库中,一个事务可以是一条sql语句
阅读全文
摘要:在开发过程中,很多时候要把结果集存放到临时表中,常用的方法有两种。一. SELECT INTO1. 使用select into会自动生成临时表,不需要事先创建select * into #temp from sysobjectsselect * from #temp2. 如果当前会话中,已存在同名的临时表select * into #temp from sysobjects再次运行,则会报错提示:数据库中已存在名为 '%1!' 的对象。Msg 2714, Level 16, State 6, Line 2There is already an object named '
阅读全文
摘要:最近,我有一朋友,对我说他的数据库中的很多存储过程,执行都是超时.让我替他看看是什么原因.我一看,原来他的存储过程中用了很多的临时表与变量表.于是我跟他说过犹不及.在存储过程中使用临时表或变量表,使用的好可以提高速度,使用的不好,可能会起到反作用. 然后给了他几个示例让他自己去看,然后针对自己的数据库进行修改.那么表变量一定是在内存中的吗?不一定.通常情况下,表变量中的数据比较少的时候,表变量是存在于内存中的。但当表变量保留的数据较多时,内存中容纳不下,那么它必须在磁盘上有一个位置来存储数据。与临时表类似,表变量是在tempdb数据库中创建的。如果有足够的内存,则表变量和临时表都在内存(数据缓
阅读全文
摘要:比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID)这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢?EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseE
阅读全文
摘要:一.控制面板-》服务-》MS SQL SERVER-》登陆--》本地系统帐户--》重新启动MS SQL SERVER用windows验证登陆查询分析器--》执行 sp_password null,sa新密码,'sa'二."无法连接到服务器,用户xxx登陆失败"该错误产生的原因是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接.解决方法如下所示:1.在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL S
阅读全文
摘要:因为不知道你A表的字段。这里假如A表有字段ID,Name,Age如果 Name,Age重复,要去掉重复的Delete T From (Select Row_Number() Over(Partition By Name,Age ORDER BY ID ASC) As RowNumber From A) T Where T.RowNumber > 1 有哪些字段重复就用这些字段分组。就是Partition 后面的字段。
阅读全文
摘要:表A 有 ID 和NAME 表A 的ID为空 表B也是ID和NAME如何通过表B的NAME和ID,填入表A的 ID A表 表BID NAME ID NAME N 1 L M 2 N L 3 M就是将表A添上对应的IDupdate A set id=B.id from A,B where A.name=B.name
阅读全文
摘要:在sqlServer20005 的management studio里使用bak文件还原数据库的时候,总是失败!Restore failed for Server 'ADANDELI'. (Microsoft.SqlServer.Smo)An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfoThe backup set holds a backup of a database other than the existi
阅读全文
摘要:最近我在忙于研究负载平衡、并发性容错性等性能优化问题,ASP.NET有太多强大的功能等待学习和挖掘。今天,Bosnma和大家一起研究在ASP.NET中缓存机制如何帮助我们在高流量网站中减少服务器负担。何为缓存 缓存无处不在,尤其是流量较高的网站。对于某些页面(尤其是带有一个或更多数据库操作的页面)可能会对数据库服务器带来过大的负载,而这些负载经常是不必要的。比如某公司的商品清单页面可能在一个小时,一天甚至更长时间并未改变,遗憾的是每一个浏览该页面的用户都会造成数据库的连接及查询。缓存就是为了解决这样的问题应运而生。缓存的简单实现 在ASP.NET中实现缓存的最简单的方法就是在页面上加一个Out
阅读全文
摘要:CROSS JOIN连接用于生成两张表的笛卡尔集。 在sql中cross join的使用: 1、返回的记录数为两个表的记录数乘积。 2、将A表的所有行分别与B表的所有行进行连接。 例如: tableA r1 r2 A B C D tableB r3 r4 1 2 3 4 select * from tableA cross join tableB; return: r1 r2 r3 r4 r1 r2 1 2 r1 r2 3 4 A B r3 r4 A B 1 2 A B 3 4 C C r3 r4 C D 1 2 C D 3 4 将两张表的情况...
阅读全文