随笔分类 -  MS SQL Server

摘要:EXCEPT(差集)集合运算, 对两个输入查询的结果集合进行操作,返回出现第一个结果集中,但不出现在第二个结果集中的所有行。为了演示,首选创建两个变量表,并插入数据:第一个表:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@T1ASTABLE(ColName1NVARCHAR(50),ColName2NVARCHAR(50))INSERTINTO@T1VALUES('tc1','tc2'); 阅读全文
posted @ 2011-01-04 19:06 Insus.NET 阅读(1017) 评论(0) 推荐(3) 编辑
摘要:表表达式是一种命名的查询表达式,代表一个有效的关系表。可以像其他表一样,在数据处理语句中使用表表达式。Microsoft SQL Server支持4种类型的表表达式:派生表(Derived table)、公用表表达式(CTE, common table expression)、视图(Views),以及内联表值函数(inline TVF, inline table-valued function)。再加上今天看书,书中有提及,有关表表达式如何有效定义任何类型的表表达式,查询语句必须满足三个要求:1. 不保证有一定的顺序。表表达式代表的是一个表,而关系表中的行是没有固定的顺序的。2. 所有的列必须 阅读全文
posted @ 2011-01-04 17:49 Insus.NET 阅读(432) 评论(0) 推荐(2) 编辑
摘要:SQL Server的集合运算有先后顺序,INTERSEC运算比UNION和EXCEPT运算优先,而UNION与EXCEPT运算是同级运算,同级运算是按照从左到右顺序依次运算。当需要控制集合运算顺序时,可以使用圆括号,因为它具有最高的优先级。 阅读全文
posted @ 2010-12-31 19:03 Insus.NET 阅读(762) 评论(1) 推荐(2) 编辑
摘要:INTERSECT 交集集合运算,把集合共同拥有的记录返回来。为了演示,首选创建两个变量表,并插入数据:第一个表:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@T1ASTABLE(ColName1NVARCHAR(50),ColName2NVARCHAR(50))INSERTINTO@T1VALUES('tc1','tc2');INSERTINTO@T1VALUES('tc3 阅读全文
posted @ 2010-12-31 18:54 Insus.NET 阅读(862) 评论(1) 推荐(2) 编辑
摘要:UNION是并集,是把两个集合中所有元素的集合。集合运算有两个选项,即是DISTINCT和ALL, 当您使用 UNION时,也等于UNION DISTINCT,这个选项的结果,是消除重复的记录行,返回一个集合。而后者UNION ALL则是返回多集中所有记录行。下面演示UNION(DISTINCT),为了演示,首选创建两个变量表,并插入数据:第一个表:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@T1ASTABLE(Col 阅读全文
posted @ 2010-12-31 18:24 Insus.NET 阅读(465) 评论(1) 推荐(2) 编辑
摘要:SQL Server SELECT语句,逻辑处理顺序,虽然SELECT位于语句最前面,它在逻辑处理中,基本上是最后一个被执行的部分。下面列出查询子句在逻辑上处理顺序:1. FROM2. WHERE3. GROUP BY4. HAVING5. SELECT6. ORDER BY 阅读全文
posted @ 2010-12-31 16:12 Insus.NET 阅读(434) 评论(1) 推荐(2) 编辑
摘要:INFORMATION_SCHEMA视图可以检索数据库中的对象的元数据。您可以直接在当前实例的数据库调用需求的数据。另外值得称好的是,在SQL 2005和SQL 2008这些Information Schema views符合ISO标准。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SELECT*FROMINFORMATION_SCHEMA.CHECK_CONSTRAINTS COLUMN_DOMAIN_USAGE COLUMN_PRI 阅读全文
posted @ 2010-12-31 13:33 Insus.NET 阅读(1389) 评论(1) 推荐(2) 编辑
摘要:以前曾经在asp.net实现记录排序功能,参考:http://www.cnblogs.com/insus/articles/1406440.html前端实现,写得很复杂。现在,把它改为触发器来实现,那就简单多了。由于时隔已久,原实例样版代码已经找不到了,只有再写一样功能一样的表。这个表实现与记录插入功能,可以参考相关链接:http://www.cnblogs.com/insus/articles/1921391.htmlhttp://www.cnblogs.com/insus/articles/1921465.htmlhttp://www.cnblogs.com/insus/articles/ 阅读全文
posted @ 2010-12-31 10:57 Insus.NET 阅读(1242) 评论(1) 推荐(2) 编辑
摘要:对于例子http://www.cnblogs.com/insus/articles/1921465.html写的触发器有bug,当使用http://www.cnblogs.com/insus/articles/1921618.html例子中的INSERT VALUES的语法头两种插入记录时,[Num]字段只做更第一笔,其他[Num]值均为NULL,解决办法,只好修改触发器,代码如下,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETA 阅读全文
posted @ 2010-12-30 18:06 Insus.NET 阅读(594) 评论(0) 推荐(2) 编辑
摘要:在http://www.cnblogs.com/insus/articles/1921391.html这个例子,我们创建了一个表,现在来演示SQL Server的INSERT VALUES语法,如果使用INSERT早期语法,插入十笔记录,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->INSERTINTO[dbo].[OrderDemo]([Name])VALUES('Title1');INSERTINTO[dbo].[O 阅读全文
posted @ 2010-12-30 13:18 Insus.NET 阅读(1637) 评论(1) 推荐(2) 编辑
摘要:上一个例子http://www.cnblogs.com/insus/articles/1921391.html中,触发器写得有点不好,因为没有考虑到主键值是自动增长的,如果出现有记录被删除了,这个[Num]字段值就不能顺序排列了,会出现空缺。因此需要修改一下这个触发器(TRIGGER),代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFEXISTS(SELECT[name]FROMsysobjectsWHERE[name]='t 阅读全文
posted @ 2010-12-30 10:49 Insus.NET 阅读(499) 评论(1) 推荐(2) 编辑
摘要:下面表[OrderDemo]有一个字段[Num],此字段作为排序字段,在插入时它的值为主键一样,但不能设为IDENTITY自动增长,因为它有可能被更新为其它值。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->IFOBJECT_ID('[dbo].[OrderDemo]')ISNOTNULLDROPTABLE[dbo].[OrderDemo]GOCREATETABLE[dbo].[OrderDemo](OrderDemoId 阅读全文
posted @ 2010-12-30 10:10 Insus.NET 阅读(668) 评论(1) 推荐(2) 编辑
摘要:用户反映,系统操作日志会使用数据库快速增大,情况可参考下图,问题分析,整个系统每个页面,都有写记录用户操作代码,修改或禁用这个代码,看来是不可能的。在原有系统参数表添加一个选项,可以让管理员可选项,“是否启用操作日志”。这样子,就可以更改操作记录的存储过程,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROCEDURE[dbo].[usp_Op 阅读全文
posted @ 2010-12-29 10:12 Insus.NET 阅读(539) 评论(1) 推荐(2) 编辑
摘要:自定义函数(User-Defined Function)有两种,一种是标量UDF(Scalar-valued Functions)和表值UDF(Table-valued Functions),前者只返回单个数据值,而后者则返回一个表。前面演示了标量自定义函数,http://www.cnblogs.com/insus/articles/1918983.html ,现在下面两个实例均演示表值自定义函数,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- 阅读全文
posted @ 2010-12-28 19:19 Insus.NET 阅读(1362) 评论(0) 推荐(2) 编辑
摘要:自定义函数(User-Defined Function)有两种,一种是标量UDF(Scalar-valued Functions)和表值UDF(Table-valued Functions),前者只返回单个数据值,而后者则返回一个表。下面示例是,是属于前者,返回单个值。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEFUNCTION[dbo].[ 阅读全文
posted @ 2010-12-28 19:09 Insus.NET 阅读(1658) 评论(0) 推荐(2) 编辑
摘要:用户反映,PO号码出现大小写情况,希望不管用户输入大写还是小写,都需要显示大写。问题如下截图:解决问题,是不能强制用户一定输入大写,只好在存储过程处理了,把这个参数使用UPPER()处理一下。有关Upper更详细资料,参考:http://msdn.microsoft.com/zh-cn/library/ms180055.aspxCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@ponumNVARCHAR(20)='Po1 阅读全文
posted @ 2010-12-28 18:53 Insus.NET 阅读(1463) 评论(0) 推荐(2) 编辑
摘要:为了演示触发器,下面例子分别实现插入,删除触发器。示例之前,先创建两个表,关关联起来。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--创建一个表[Topic]CREATETABLEdbo.Topic(TopicIdINTIDENTITY(1,1)PRIMARYKEYNOTNULL,TitleNVARCHAR(300)NOTNULL,ContentNVARCHAR(2000)NOTNULL,AuthorNVARCHAR(50)NOTNU 阅读全文
posted @ 2010-12-28 13:47 Insus.NET 阅读(729) 评论(1) 推荐(2) 编辑
摘要:根据用户自定义需求报表。只有在SQL写好存储过程,然后把结果集显示在GridView中。报表做出来,用户接收了。有把这个效果分享给一些网友,结果网友都会问回一个问题,这个效果如何实现的。现在把一部分存储过程代码帖出来,分享一下,其实很简单。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--如果抽检数大于零和比率大于等于零IF((@RCount>0)AND(ISNULL(@Rate,0)>=0))BEGINBEGIN--定义一 阅读全文
posted @ 2010-12-28 10:32 Insus.NET 阅读(751) 评论(0) 推荐(2) 编辑
摘要:前段时间,曾经写过一个例子,http://www.cnblogs.com/insus/articles/1916558.html是使用OUTPUT来记录更新前后的值,现在可以使用SQL Server的触发器来实现。演示,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--创建一个UPDATE触发器CREATETRIGGER[dbo].[tri_Member_Udate]ON[dbo].[Member]FORUPDATEASBEGIN--宣 阅读全文
posted @ 2010-12-27 19:18 Insus.NET 阅读(609) 评论(1) 推荐(2) 编辑
摘要:WHILE是SQL Server另一个基本流程控制元素,用于循环执行代码。WHILE后面的条件为TRUE时,循环执行指定的SQL语句或语句块,如果WHILE后的条件为FALSE或UNKNOWN时,循环终止。演示,更详细例子,请参阅http://www.cnblogs.com/insus/articles/1914346.html:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--宣告一个INT类型变量,并赋值DECLARE@FirstC 阅读全文
posted @ 2010-12-27 18:33 Insus.NET 阅读(373) 评论(1) 推荐(2) 编辑