随笔分类 - SQL
摘要:/***********************************描述:纯SQL查看数据库描述文档作者:jehn联系:jehn@foxmail.com时间:2011-12-07 14:33:30************************************/SELECT (case when a.colorder=1 then ( select CAST(表序号 as nvarchar) from(SELECT d.name, row_number() over(order by d.name) 表序号FROM syscolumns a join sysobjects d...
阅读全文
摘要:--按某一字段分组取最大(小)值所在行的数据/*数据如下:namevalmemoa2a2(a的第二个值)a1a1--a的第一个值a3a3:a的第三个值b1b1--b的第一个值b3b3:b的第三个值b2b2b2b2b2b4b4b4b5b5b5b5b5b5*/--创建表并插入数据:createtabletb(namevarchar(10),valint,memovarchar(20))insertintotbvalues('a',2,'a2(a的第二个值)')insertintotbvalues('a',1,'a1--a的第一个值')
阅读全文
摘要:create trigger TgNameon tbfor updateas if update(recommend)beginupdate tb set commenddate=(getdate()) from tb inner join inserted on tb.vlistid=Inserted.vlistidend关键在于Inserted表触发器语句中使用了两种特殊的表:deleted表和inserted表。Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表
阅读全文
摘要:今天同学向我提了一个问题,是SQL Server中一个关于“如何保证可空字段中非空值唯一”的问题,我觉得蛮有意思,现记录下来大家探讨下。问题是:在一个表里面,有一个允许为空的字段,空是可以重复的,但是不为空的值需要唯一。表结构如下面代码创建CREATETABLEtest_tb ( TestIdintnotnullidentity(1,1)primarykey, Captionnvarchar(100)null); GO 解决方案:解决方案1:对于这个问题,大家的第一个想法可能是:在Caption这个字段上面加一个唯一键不就可以了吗?好,我们按着这个思路做下去,先创建唯一索引。CREATEUNI
阅读全文
摘要:实践证明,SQL Server 2000 + 2005 + 2008,完全可以共存,注意区别(1)只要实例名不同即可(如:默认实例、命名实例SQL2005、命名实例SQL2008)。(2)2005 与 2008要求的 .NET Framework 版本不一样,2005 要求 2.0,而 2008 要求 3.5 SP1;(3)特别要注意的是,安装 SQL2008 的机器上如果安装过开发工具 Visual Studio 2008, 则必须先安装 VS2008 SP1 补丁包(相当耗时但是必须的),否则压根就不让你继续装。(4)SQL2008真是爽啊,语法智能感知,Management Studi.
阅读全文
摘要:SQL Server数据库查询速度慢的原因有很多,常见的有以下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 ●可以通过以下方法来优化查询: 1、把数据、日志、索引放到不同的I/O设...
阅读全文
摘要:在SQL Server 2005中,可以利用SQL Server 2005 Surface Area Configuration较容易的实现远程连接。然而,SQL Server 2008已经移除该功能,不过,按照如下步骤仍然可以实现远程连接SQL Server 2008 Express。1. 启动SQL Server Browser service。SQL Server Browser的作用是监听来自Microsoft SQL Server资源的请求 以及提供关于安装在本机上的SQL Server实例的信息。2. 启用SQL Server 2008 Express的TCP/IP端口以便接受远程
阅读全文
摘要:【本文转自:http://msdn.microsoft.com/zh-cn/library/ms191472.aspx】联接条件可在 FROM 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件。WHERE 和 HAVING 子句还可以包含搜索条件,以进一步筛选根据联接条件选择的行。联接可分为以下几类:内部联接(典型的联接运算,使用类似于 = 或 <> 的比较运算符)。内部联接包括同等联接和自然联接。内部联接使用比较运算符根据每个表的通用列中的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。外部联接。外部联接可以是左向
阅读全文
摘要:【SQL Server 客户端连接配置】运行:cliconfg.exe【】--以周一为一周的起点,查询本周与下周的时间段SELECT DATEADD(DAY, 0, 0) SQL起始时刻,DATEADD(wk,DATEDIFF(wk,0,getdate()),0) 本周一,dateadd(wk,datediff(wk,0,getdate()),6) 本周日,DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 7) 下周一,DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 13) 下周日,DATENAME(wk, GETDATE()) 今
阅读全文
摘要:SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY dateandtime DESC本月记录SELECT * FROM 表 WHERE datediff(month,[dateadd],getdate())=0本周记录SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0当天记录SELECT * FROM 表 WHERE datediff(day,[dateadd],getdate
阅读全文
摘要:1.一个月第一天的 Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)2.本周的星期一 Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)3.一年的第一天 Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)4.季度的第一天 Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)5.当天的半夜 Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)6.上个月的最后一天复制 保存Selec
阅读全文
浙公网安备 33010602011771号