随笔分类 - 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');
阅读全文
摘要:表表达式是一种命名的查询表达式,代表一个有效的关系表。可以像其他表一样,在数据处理语句中使用表表达式。Microsoft SQL Server支持4种类型的表表达式:派生表(Derived table)、公用表表达式(CTE, common table expression)、视图(Views),以及内联表值函数(inline TVF, inline table-valued function)。再加上今天看书,书中有提及,有关表表达式如何有效定义任何类型的表表达式,查询语句必须满足三个要求:1. 不保证有一定的顺序。表表达式代表的是一个表,而关系表中的行是没有固定的顺序的。2. 所有的列必须
阅读全文
摘要:SQL Server的集合运算有先后顺序,INTERSEC运算比UNION和EXCEPT运算优先,而UNION与EXCEPT运算是同级运算,同级运算是按照从左到右顺序依次运算。当需要控制集合运算顺序时,可以使用圆括号,因为它具有最高的优先级。
阅读全文
摘要: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
阅读全文
摘要:UNION是并集,是把两个集合中所有元素的集合。集合运算有两个选项,即是DISTINCT和ALL, 当您使用 UNION时,也等于UNION DISTINCT,这个选项的结果,是消除重复的记录行,返回一个集合。而后者UNION ALL则是返回多集中所有记录行。下面演示UNION(DISTINCT),为了演示,首选创建两个变量表,并插入数据:第一个表:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DECLARE@T1ASTABLE(Col
阅读全文
摘要:SQL Server SELECT语句,逻辑处理顺序,虽然SELECT位于语句最前面,它在逻辑处理中,基本上是最后一个被执行的部分。下面列出查询子句在逻辑上处理顺序:1. FROM2. WHERE3. GROUP BY4. HAVING5. SELECT6. ORDER BY
阅读全文
摘要: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
阅读全文
摘要:以前曾经在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/
阅读全文
摘要:对于例子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
阅读全文
摘要:在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
阅读全文
摘要:上一个例子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
阅读全文
摘要:下面表[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
阅读全文
摘要:用户反映,系统操作日志会使用数据库快速增大,情况可参考下图,问题分析,整个系统每个页面,都有写记录用户操作代码,修改或禁用这个代码,看来是不可能的。在原有系统参数表添加一个选项,可以让管理员可选项,“是否启用操作日志”。这样子,就可以更改操作记录的存储过程,代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERPROCEDURE[dbo].[usp_Op
阅读全文
摘要:自定义函数(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/--
阅读全文
摘要:自定义函数(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].[
阅读全文
摘要:用户反映,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
阅读全文
摘要:为了演示触发器,下面例子分别实现插入,删除触发器。示例之前,先创建两个表,关关联起来。代码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
阅读全文
摘要:根据用户自定义需求报表。只有在SQL写好存储过程,然后把结果集显示在GridView中。报表做出来,用户接收了。有把这个效果分享给一些网友,结果网友都会问回一个问题,这个效果如何实现的。现在把一部分存储过程代码帖出来,分享一下,其实很简单。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--如果抽检数大于零和比率大于等于零IF((@RCount>0)AND(ISNULL(@Rate,0)>=0))BEGINBEGIN--定义一
阅读全文
摘要:前段时间,曾经写过一个例子,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--宣
阅读全文
摘要: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
阅读全文