2011年3月23日
摘要: 一.字符串聚合需求如下。CREATE TABLE dbo.Groups( groupid VARCHAR(10) NOT NULL, memberid INT NOT NULL, string VARCHAR(10) NOT NULL, val INT NOT NULL, PRIMARY KEY (groupid, memberid));GO INSERT INTO dbo.Groups(groupid, memberid, string, val) VALUES ('a', 3, 'stra1', 6), ('a', 9, 'stra2 阅读全文
posted @ 2011-03-23 07:50 冷酒少 阅读(1395) 评论(0) 推荐(0) 编辑
2011年3月14日
摘要: 一天一篇,先占位。明天补回来。 阅读全文
posted @ 2011-03-14 22:28 冷酒少 阅读(383) 评论(2) 推荐(0) 编辑
2011年3月13日
摘要: 提问:id mc parent1 机械 -12 化工机械 13 反应器 2相得到 id mc parent rj1 机械 -1 机械2 化工机械 1 机械\化工机械3 反应器 2 机械\化工机械反应器关键是树结构的层次不确定,不知道有多少级解答:use InsideTSQL2008;go if OBJECT_ID('dbo.Test_tab') is not null drop table dbo.Test_tab;create table dbo.Test_tab( id int primary key, mc nvarchar(100) not null, parentid 阅读全文
posted @ 2011-03-13 21:57 冷酒少 阅读(597) 评论(0) 推荐(2) 编辑
摘要: 一.控制多联接的物理计算顺序在编写查询语句时,经常会多次联接查询多个表。在没有外联接的多联接查询中,连接查询的先后顺序对最终的结果是无影响的,查询优化器知道这一点,所以在最终的执行计划中,优化器访问表的顺序可能跟查询语句中指定的联接顺序不一样。例如,对于以下这样的一个多联接的查询:use Northwind;GOselect c.contactname,o.orderid,p.ProductName,s.ContactName from dbo.Customers c inner join dbo.Orders o on c.CustomerID=o.CustomerIDinner join 阅读全文
posted @ 2011-03-13 12:03 冷酒少 阅读(2328) 评论(6) 推荐(2) 编辑
2011年3月12日
摘要: 题外话:以前也写过几篇,后来总算觉得写得不够好,写了点又删了点,最后一直没有东西留下来,随着时间的流逝,几乎没有积累。最近在看T-SQL相关的书,结合工作中遇到的问题,我打算写点东西来记录我的学习经历,希望大家指出我的不对的地方,希望一起探讨开发中的问题。小弟再次谢过了。“T-SQL相关的”T-SQL查询处理详解 T-SQL查询处理详解 (续)T-SQL逻辑处理之表运算符废话就不多说了,公用表表达式(Common Table Expressions), 是SQL SERVER支持的一种类型的表表达式。CTE的语法如下:WITH<cte_name> [(<target_col_ 阅读全文
posted @ 2011-03-12 03:45 冷酒少 阅读(2878) 评论(14) 推荐(4) 编辑
2011年3月11日
摘要: 在前两篇T-SQL查询处理详解, T-SQL查询处理详解 (续)中,我较为详细地介绍了在一般查询中忽略实际的优化执行计划的情况下的逻辑处理过程。接下来,我将从表运算符,连接查询,分析函数,子查询等方面入手,深入地探讨这些细节,欢迎大家一起讨论T-SQL开发中遇到的问题。废话不多说,开始了。SQL SERVER 2008支持4种表运算符,JOIN,PIVOT,UNPIOVT,APPLY,。这四种运算符,JOIN大家肯定不陌生,但是后面的几个,估计就有不少人很少使用了。一.PIVOT。首先看这样的一条SQL查询。SELECT EmployeeID, SUM(CASE WHEN theyear = 阅读全文
posted @ 2011-03-11 23:04 冷酒少 阅读(2924) 评论(4) 推荐(2) 编辑
2011年3月10日
摘要: 在上一篇T-SQL查询处理详解,文中提到了在如果不考虑查询优化器做的优化的情况下T-SQL查询的逻辑处理过程,讲得很粗糙,这一篇将补充说明这个逻辑处理过程,并对一些容易误解的地方进行说明。不对之处,还请指出。另外再次声明一点,这种逻辑处理顺序,是理论上的处理过程,实际情况还会根据查询优化器选择最优的执行计划。还是从FROM阶段讲开。(1)FROM阶段 这个阶段是查询逻辑处理的第一步。想到这里,想起了LINQ表达式不就是从FROM开始的嘛,看来还是挺有道理的。FROM阶段负责表示表或要查询的表。如果指定了表运算符,还需 要按从左到右的顺序,对运算符进行逐个处理。表运算符有4类,JOIN,APPL 阅读全文
posted @ 2011-03-10 22:44 冷酒少 阅读(2557) 评论(10) 推荐(5) 编辑
2011年3月9日
摘要: 最近在看《Microsoft SQL Server 2008 技术内幕:T-SQL查询》这本书,受益匪浅。准备写点东西记录一下我的学习过程。首先简单提一下T-SQL。T-SQL的正式名称是Transact-SQL,是ANSI和ISO SQL标准的Microsoft SQL Server扩展,而PL/SQL是ORACLE对SQL标准的扩展。对于T-SQL编程,用得最广泛的,莫过于查询(Querying)。要想写出高质量、高性能的查询语句,必须深入地了解逻辑查询处理。一、逻辑查询处理的各个阶段(5)SELECT DISTINCT TOP(<top_specification>) < 阅读全文
posted @ 2011-03-09 22:02 冷酒少 阅读(3499) 评论(32) 推荐(11) 编辑