久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

Sql Server2005 Transact-SQL 新兵器學(xué)習(xí)總結(jié)之-公用表表達(dá)式(CTE)

時(shí)間:2019-05-15 09:46:14下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《Sql Server2005 Transact-SQL 新兵器學(xué)習(xí)總結(jié)之-公用表表達(dá)式(CTE)》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《Sql Server2005 Transact-SQL 新兵器學(xué)習(xí)總結(jié)之-公用表表達(dá)式(CTE)》。

第一篇:Sql Server2005 Transact-SQL 新兵器學(xué)習(xí)總結(jié)之-公用表表達(dá)式(CTE)

公用表表達(dá)式是Sql Server2005新增加的一個非常好用的功能。

公用表表達(dá)式(CTE)可以認(rèn)為是在單個 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 語句的執(zhí)行范圍內(nèi)定義的臨時(shí)結(jié)果集。

CTE 與派生表類似,具體表現(xiàn)在不存儲為對象,并且只在查詢期間有效。與派生表的不同之處在于,CTE 可自引用,還可在同一查詢中引用多次。

CTE可用于:

1.創(chuàng)建遞歸查詢(我個人認(rèn)為CTE最好用的地方)2.在同一語句中多次引用生成的表 CTE優(yōu)點(diǎn): 使用 CTE 可以獲得提高可讀性和輕松維護(hù)復(fù)雜查詢的優(yōu)點(diǎn)。

查詢可以分為單獨(dú)塊、簡單塊、邏輯生成塊。之后,這些簡單塊可用于生成更復(fù)雜的臨時(shí) CTE,直到生成最終結(jié)果集。

CTE可使用的范圍:

可以在用戶定義的例程(如函數(shù)、存儲過程、觸發(fā)器或視圖)中定義 CTE。

下面看一個簡單的CTE例題:

把test表中salary最大的id記錄保存在test_CTE中,再調(diào)用

with test_CTE(id,salary)as(select id ,max(salary)from test group by id)select * from test_cte

由上面例題可以看出:

CTE 由表示 CTE 的表達(dá)式名稱、可選列列表和定義 CET 的查詢組成。

定義 CTE 后,http://mmm.qqq23.com 可以在 SELECT、INSERT、UPDATE 或 DELETE 語句中對其進(jìn)行引用,就像引用表或視圖一樣。簡單的說CTE可以替代臨時(shí)表和表變量的功能。

我個人認(rèn)為cte最好用的地方是創(chuàng)建遞歸查詢,下面演示一下這功能: 現(xiàn)有一數(shù)據(jù)結(jié)構(gòu)如下:

這些數(shù)據(jù)存放在表Co_ItemNameSet中,表結(jié)構(gòu)和部分?jǐn)?shù)據(jù)如下: ItemId ParentItemId ItemName 2 0 管理費(fèi)用 3 0 銷售費(fèi)用 4 0 財(cái)務(wù)費(fèi)用 5 0 生產(chǎn)成本 35 5 材料 36 5 人工 37 5 制造費(fèi)用 38 35 原材料 39 35 主要材料 40 35 間輔材料 41 36 工資 42 36 福利 43 36 年獎金

現(xiàn)在需求是:我想查詢ItemId=2,也就是管理費(fèi)用和其下屬所有節(jié)點(diǎn)的信息 通過CTE可以很簡單達(dá)到需求要的數(shù)據(jù)

為了體現(xiàn)CTE的方便性,我特意也寫了一個sql2000版本的解決方法,先看看sql2000是怎么解決這個問題的

--sql2000版本 DECLARE @i INT SELECT @i=2;http://www.tmdps.cn /* 使用臨時(shí)表作為堆棧來跟蹤所有正在處理中的項(xiàng)目(已經(jīng)開始但尚未結(jié)束)。某個項(xiàng)目一旦處理完畢,將被從堆棧中刪除。當(dāng)發(fā)現(xiàn)新的項(xiàng)目時(shí),這些項(xiàng)目將被添加到堆棧中。*/

CREATE TABLE #tem([ItemId] [INT] NOT NULL, [level] INT);/* 存放結(jié)果 */

CREATE TABLE #list([ItemId] [INT] NOT NULL, [ParentItemId] [INT] NOT NULL DEFAULT((0)), [ItemName] [nvarchar](100)NOT NULL DEFAULT(''), [level] INT);

INSERT INTO #tem([ItemId],[level])SELECT ItemId, 1 FROM Co_ItemNameSet WHERE itemid=@i

INSERT INTO #list([ItemId],[ParentItemId],[ItemName],[level])SELECT ItemId, ParentItemId, ItemName ,1 FROM Co_ItemNameSet WHERE itemid=@i

DECLARE @level INT SELECT @level=1

DECLARE @current INT SELECT @current=0

/* 當(dāng) @level 大于 0 時(shí),執(zhí)行以下步驟:

1.如果當(dāng)前級別(@level)的堆棧中有項(xiàng)目,就選擇其中一個,并稱之為 @current。2.從堆棧中刪除該項(xiàng)目以免重復(fù)處理它,然后將其所有子項(xiàng)目添加到堆棧的下一級(@level + 1)中。

3.如果有子項(xiàng)目(IF @@ROWCOUNT > 0),則下降一級處理它們(@level = @level + 1);否則,繼續(xù)在當(dāng)前級別上處理。

4.最后,如果在當(dāng)前級別的堆棧中沒有待處理的項(xiàng)目,則返回到上一級,看上一級是否有待處理的項(xiàng)目(@level = @level-1)。當(dāng)再沒有上一級時(shí),則完畢。*/

WHILE(@level>0)BEGIN

SELECT @current=ItemId FROM #tem WHERE [level]=@level

IF @@ROWCOUNT>0

BEGIN

--從堆棧中刪除該項(xiàng)目以免重復(fù)處理它

DELETE FROM #tem WHERE [level]=@level and ItemId=@current

--將其所有子項(xiàng)目添加到堆棧的下一級(@level + 1)中。

INSERT INTO #tem([ItemId],[level])SELECT [ItemId],@level+

1FROM Co_ItemNameSet WHERE ParentItemId=@current

--將其所有子項(xiàng)目添加

INSERT INTO #list([ItemId],[ParentItemId],[ItemName],[level])SELECT [ItemId],[ParentItemId],[ItemName] ,@level+1

FROM Co_ItemNameSet WHERE ParentItemId=@current

IF @@rowcount>0

BEGIN

SELECT @level=@level+1

END

END

ELSE

BEGIN

SELECT @level=@level-1

END END--顯示結(jié)果

SELECT * FROM #list

DROP TABLE #tem DROP TABLE #list go

結(jié)果如下:

ItemId ParentItemId ItemName level 2 0 管理費(fèi)用 1 52 2 汽車費(fèi)用 2 55 2 招聘費(fèi) 2 56 2 排污費(fèi) 2 53 52 燃料 3 54 52 輪胎 3

大家看到sql2000解決這個問題比較麻煩,要實(shí)現(xiàn)這需求編寫的代碼比較多,比較復(fù)雜 現(xiàn)在好了,在sql2005中通過CTE的遞歸特點(diǎn)可以2步就實(shí)現(xiàn).得到同樣的結(jié)果,sql2005的CTE代碼簡單了許多.這就是CTE支持遞歸查詢的魅力。請看下面的代碼:

--sql2005版本 DECLARE @i INT SELECT @i=2;

WITH Co_ItemNameSet_CTE(ItemId, ParentItemId, ItemName,Level)AS(SELECT ItemId, ParentItemId, ItemName ,1 AS [Level]

FROM Co_ItemNameSet WHERE itemid=@i

UNION ALL

SELECT c.ItemId, c.ParentItemId, c.ItemName ,[Level] + 1 FROM Co_ItemNameSet c INNER JOIN Co_ItemNameSet_CTE ct ON c.ParentItemId=ct.ItemId)

SELECT * FROM Co_ItemNameSet_CTE go

Sql Server2005 Transact-SQL 新兵器學(xué)習(xí)總結(jié)之-TOP 運(yùn)算符

TOP 運(yùn)算符介紹:

TOP 運(yùn)算符在Sql Server2005得到了增強(qiáng),可以使用任何數(shù)值表達(dá)式(如變量名),而不是僅使用整數(shù)來指定該運(yùn)算符返回的行數(shù)。TOP 現(xiàn)在還可以在 INSERT、UPDATE 和 DELETE 語句中指定。TOP 運(yùn)算符的幾個使用總結(jié):

1.TOP 表達(dá)式可用在 SELECT、INSERT、UPDATE 和 DELETE 語句中。2.Top表達(dá)式可以是常量,變量,子查詢

3.取代set rowcount,可以防止鎖升級,提高效率

特別提示: 與INSERT、UPDATE 或 DELETE 一起使用的 TOP 表達(dá)式中被引用行將不按任何順序排列。

TOP n 隨機(jī)返回 n 行。

例如,下面的 INSERT 語句包含 ORDER BY 子句,但該子句并不影響由 INSERT 語句直接引用的行。請看例題:

有1個test表,表結(jié)構(gòu)和表中數(shù)據(jù)如下: select * from test

id salary manid 100 6500 100 200 5500 200 101 6600 100 102 6200 100 103 5100 100 104 6700 100 201 5800 200 202 4200 200 執(zhí)行下面的語句:

declare @t table(id int,salary int,manid int)

INSERT TOP(2)INTO @t SELECT id, salary, manid from test ORDER BY salary asc

select * from @t

結(jié)果如下:

id salary manid 100 6500 100 200 5500 200

上個查詢中的 ORDER BY 子句僅引用嵌套 SELECT 語句返回的行。INSERT 語句選擇 SELECT 語句返回的任意兩行。

若要確保插入 SELECT 子查詢返回的前兩行,可以按如下寫該查詢。

declare @t table(id int,salary int,manid int)

INSERT INTO @t

SELECT TOP(2)id, salary, manid from test ORDER BY salary asc

select * from @t

結(jié)果如下:

id salary manid 202 4200 200 103 5100 100

TOP 運(yùn)算符在Sql Server2005得到了增強(qiáng),Top表達(dá)式可以是常量,變量,子查詢

下面我們再來看另個例題:

create table test2([no] int , n nvarchar(100))

insert into test2([no],n)select 1,'a' union select 2,'b' union select 3,'c' union

select 3,'c2' union

select 2,'b2' union

select 2,'b3' go

select * from test2 order by [no] asc go

結(jié)果如下: no n 1 a 2 b 2 b2 2 b3 3 c 3 c2

1.利用top變量,篩選no最小的2行

--利用top變量,篩選no最小的2行 declare @i int select @i = 2 select top(@i)* from test2 order by [no] asc go

結(jié)果如下: no n 1 a 2 b 我們可以看到,在Sql Server2005中top后面跟的可以是變量了,而在Sql Server2000中必須是常量才可以

要在Sql Server2000實(shí)現(xiàn)上述功能比較麻煩,需要用到動態(tài)sql語句,請看下面代碼:

--Sql Server2000版本 declare @i int select @i = 2

declare @sql nvarchar(255)select @sql=''

select @sql='select top('+ convert(nvarchar(100),@i)+')* from test2 order by [no] asc' exec(@sql)

2.利用top子查詢來篩選 select top(select count([no])from test2 where [no]=3)* from test2 order by [no] asc go

結(jié)果如下: no n 1 a 2 b

3.WITH TIES參數(shù):

指定從基本結(jié)果集中返回更多的行,返回的行與TOP n(PERCENT)行中的最后一行在ORDER BY 列中具有相同的值。

只有在指定ORDER BY 子句之后才能指定TOP WITH TIES。

--返回no前2行,并還返回no=2的行 select top(2)WITH TIES * from test2 order by [no] asc go

第二篇:中小學(xué)信息技術(shù)“在Excell中制作圖表”的講授新課與歸納總結(jié)之學(xué)習(xí)總結(jié)

中小學(xué)信息技術(shù)“在Excell中制作圖表”的講授新課與歸納總結(jié)

學(xué)習(xí)總結(jié)

我聽了溫曉捷老師主講的中小學(xué)信息技術(shù)《“在Excell中制作圖表”的講授新課與歸納總結(jié)》。知道了這節(jié)課是從課堂教學(xué)中的主要環(huán)節(jié)——教授新課;如何分段掌控課堂教學(xué)時(shí)間;教學(xué)過程與師生互動的對應(yīng)關(guān)系;“總結(jié)歸納”教學(xué)環(huán)節(jié)的意義;常用的“總結(jié)歸納”形式;“課后作業(yè)”的三個功能。六個角度對課堂教學(xué)五個環(huán)節(jié)中的講授新課、歸納總結(jié)和布置課后作業(yè)進(jìn)行了探討。并且對這節(jié)課做了相關(guān)的筆記。

然后看了宋東艷老師設(shè)計(jì)的《 Excel中制作圖表》一課,詳細(xì)的介紹教學(xué)的各個環(huán)節(jié)和總結(jié)歸納的形式和意義。本課的教學(xué)始終圍繞著“圖表的作用和圖表類型的選擇”教學(xué)重點(diǎn)展開。通過一環(huán)套一環(huán)的教學(xué)活動及恰當(dāng)?shù)娜蝿?wù)設(shè)計(jì),將圖表的作用闡述的明白清晰,讓學(xué)生很清楚地掌握了柱型圖、餅圖、折線圖常用的范圍。很好地調(diào)動了學(xué)生的學(xué)習(xí)積極性和興趣,充分說明教師對學(xué)生情況十分了解,能依據(jù)學(xué)生特點(diǎn),選用適當(dāng)?shù)慕虒W(xué)手段,因此收到了良好的教學(xué)效果。從而使自己地溫曉捷老師的專題講座有了進(jìn)一步的理解。

同時(shí)我與一起的學(xué)員進(jìn)入了交流,且回答了“思考與活動”板塊的相關(guān)問題。總之通過聽講、析案、交流、回答問題,感覺對本講座的認(rèn)識提高了一個層次,且提高自己的教育理論水平,讓自己的遠(yuǎn)程培訓(xùn)走入了一新的階段。

下載Sql Server2005 Transact-SQL 新兵器學(xué)習(xí)總結(jié)之-公用表表達(dá)式(CTE)word格式文檔
下載Sql Server2005 Transact-SQL 新兵器學(xué)習(xí)總結(jié)之-公用表表達(dá)式(CTE).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    主站蜘蛛池模板: 精品国产自线午夜福利在线观看| 欧美一区二区三区红桃小说| 少妇内射视频播放舔大片| 7777欧美大白屁股ass| 亚洲愉拍一区二区三区| 久久永久免费人妻精品| 亚洲精品无码视频| 国产福利无码一区在线| 熟妇人妻系列av无码一区二区| 国产成人亚洲精品青草天美| 欧美与黑人午夜性猛交久久久| 国产不卡视频一区二区三区| 国产另类ts人妖一区二区| 中文国产乱码在线人妻一区二区| 粗大猛烈进出高潮视频| 国产精品原创av片国产日韩| 国产美女自卫慰黄网站| 麻豆妓女爽爽一区二区三| 99久久国产综合精品女同图片| 极品无码国模国产在线观看| 肉体暴力强伦轩在线播放| 亚洲国产成人久久综合一区| 伊人色综合网久久天天| 亚洲精品乱码久久久久久app| 久久成人免费观看草草影院| 国产精品网红尤物福利在线观看| 国产精品兄妹在线观看麻豆| 国产欧美精品亚洲日本一区| 国产亚洲综合区成人国产| 中文无码熟妇人妻av在线| 又色又爽又黄18禁美女裸身无遮挡| 无码精品a∨在线观看| 国产乱子伦在线一区二区| 中文字幕人妻被公上司喝醉| 国产在线aaa片一区二区99| 国产内射999视频一区| 黑人强辱丰满的人妻熟女| 884aa四虎影成人精品| 无码小电影在线观看网站免费| 日韩精品射精管理在线观看| 久久狠狠色噜噜狠狠狠狠97|