随笔分类 - SQL(TSQL)
摘要:直接上代码:--获取往前推的N个半年度CREATE FUNCTION F3_GetRecentNHalfYear( @N INT)RETURNS @Result TABLE ( Year SMALLINT, HalfYear TINYINT, DateName VARCHAR...
阅读全文
摘要:摘要:sql中的for xml语法为表转化为xml提供了很好的支持,当然使用同样的程序语言也能够达到同样的效果,但是有了for xml将使得这一切更加的方便。主要内容: Select 的查询结果会作为行集返回,但是你同样可以在sql中指定for xml子句使得查询作为xml来检索。在for xml子句中,可以指定以下模式之一:RAW 、AUTO、EXPLICIT和PATH。RAW模式返回行为元素,每一列的值作为元素的属性;AUTO模式返回表名为节点的元素,每一列的属性作为属性输出;EXPLICIT模式通过SELECT语法定义输出XML结构;PATH模式中列名或列别名作为XPATH表达式来处理。
阅读全文
摘要:最近的项目写的SQL比较多,经常会用到对变量赋值,而我使用SET和SELECT都会达到效果。那就有些迷惑,这两者有什么区别呢?什么时候哪该哪个呢?经过网上的查询,及个人练习,总结两者有以下几点主要区别:假定有设定变量:DECLARE @VAR1 VARCHAR(1)DECLARE @VAR2 VARCHAR(2)1、SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值,如下:SELECT @VAR1='Y',@VAR2='N'-- 而SET要达到同样的效果,需要:SET @VAR1='Y'SET @VAR2='N
阅读全文
摘要:首先引用一篇博文地址:http://www.cnblogs.com/luluping/archive/2009/07/24/1530611.html主要是通过动态组合case语句来生成sql,并动态执行。个人在此照着碎碎念一下:首先:如何从一个数据集中组合生成多分支的case?比如:select distinct subject from studentcj ,该语句执行结果返回'语文'、'数学'...
阅读全文
摘要:昨天去面试,碰到一个问题是讲ADO.NET与ADO的区别。以前真没有注意过这2者的区别,只能说出来性能上ado.net比ado好。因此在这里记录一下两者的区别,以作备忘:1、两者都将数据保存在内存中,但ado.net以dataset数据集的形式存放,而ado以recordset记录集的形式存放。2、在ado中,记录集以单表的形式表现。而在ado.net中,数据集以一个表或多个表的形式表现。3、ad...
阅读全文
摘要:假设我们有一字段名为name,其值是用逗号分隔的。值为:'111,111xu2,1112'。现在,我们需要编写语句搜索该name值 like '11'的。按理说,这个name中没有11,我们要的结果就是返回空。但是如果我们 select * from student where name like '%11%'的话,依然可以正常的查询出结果。---此时,我们应该采用如下的语句来实现:[代码]---...
阅读全文
摘要:---以前做过这件事,但是,现在项目中碰到了,一时半会却想不起来~~~遇到到网上搜搜,并找到http://hi.baidu.com/grrc/blog/item/16d216a85b61bbb6ca130c13.html这篇文章。现在把该文章的内容摘抄在这里,以作备忘:通常情况下,不能向 SQL Server 自增字段插入值,如果非要这么干的话,SQL Server 就会好不客气地给你个错误警告:...
阅读全文
摘要:一直对T-SQL的聚合函数、group by、having“耿耿于怀",因为在使用它们的时候,我经常性的犯错误。因此,现在将它们之间的一些小规则在此记录一下,以后碰到问题好查:1、where与having的区别: where 的查询条件是在分组之前进行的,换句话说:就是只能针对单行操作.因此,在它里面是不能有聚合函数的。 而having的查询条件是在分组之后进行的,也就是说,它可以针对多行记录操作,,而且,它里面可以使用聚合函数。 特别记注:聚合函数是针对多行操作的,这样一来,为什么where里不能有聚合函数就比较好理解了。2、group by 与聚合函数 如果查询中包含一个聚合函数
阅读全文
摘要:OPENDATASOURCE:不使用链接服务器的名称,而提供特殊的连接信息,并将其作为四部分对象名的一部分。语法 OPENDATASOURCE ( provider_name, init_string )参数 provider_name 注册为用于访问数据源的 OLE DB 访问接口的 PROGID 的名称。provider_name 的数据类型为 char,无默认值。init_string 连接...
阅读全文
摘要:此文转自:http://www.cnblogs.com/abcdwxc/archive/2007/12/11/990274.html-----------------------为给定表或视图创建索引。只有表或视图的所有者才能为表创建索引。表或视图的所有者可以随时创建索引,无论表中是否有数据。可以通过指定限定的数据库名称,为另一个数据库中的表或视图创建索引。语法CREATE [ UNIQUE ] ...
阅读全文
摘要:此文转自:http://www.cnblogs.com/mqsuper/archive/2008/09/17/1292871.html-----------------------------(四)其他书上没有的索引使用经验总结 1、用聚合索引比用不是聚合索引的主键速度快 下面是实例语句:(都是提取25万条数据) select gid,fariqi,neibuyonghu,reader,ti...
阅读全文
摘要:此文转自:http://www.cnblogs.com/mqsuper/archive/2008/09/18/1292866.html------------------微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)…… (一)深入浅出理解索引结构 实际...
阅读全文
摘要:此文转自:http://www.cnblogs.com/Athrun/archive/2008/05/29/832446.html约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在SQL Server 中有5 种约束:主关键字约束(Primary Key...
阅读全文
摘要:此文章转自http://www.cnblogs.com/chenzhip123/archive/2008/04/26/1172018.html1 :普通SQL语句可以用Exec执行例: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- ...
阅读全文
摘要:/一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言,如果要在查询分析器中对多行记录(即记录集)进行读取操作时,则需要使用到游标或WHILE等循环/以下内容摘自http://www.cnblogs.com/aotian56/archive/2007/07/13/817281.html/游标的类型: 1、静态游标(不检测数据行的变化) 2、动态游标(反映所有数据行的改变) 3、仅向...
阅读全文
摘要:题1表info有name nvarchar(20) not nullid int identity(1,1)两个字段要求: 写一个存储过程,将该表中以id倒序排列的前10个name连接在一起 以一个字符串的形式返回答: 简单的语句 Declare @name nvarchar(200) select @name=@name+name from info order by id desc----你觉...
阅读全文
摘要:一:DateAdd与DateDiff的用法。DateAdd(interval,number,date),通过interval格式为date加上值numberDateDiff(interval,date1,date2),计算date1和date2之间的interval差距。在T-SQL中,日期类型的0表示的值是1900-01-01,可以用 select convert(datetime,0)来得出。...
阅读全文
摘要:在ACCESS中执行select top 5* from admin order by name desc时,如果name值不是惟一的,那么,查询的结果有可能多于5条(name值有重复时)。原因是ACCESS使用的是啥J-SQL语句,而不是T-SQL语句。因此,在这点上就和SQL中使用有区别了。避免它的出现的方法就是给表admin加上一个标识惟一的字段,比如自动增长的identity字段,然后se...
阅读全文