SQL Server 總結復習(一)建站知識
導讀:1建站知識寫這篇文章,主要是總結最近學到的一些新知識,這些特性不一定是SQLSERVER最新版才有,大多數是2008新特性,有些甚網站建設教程網站建設。
1. TVP, 表變量,臨時表,CTE 的區別 TVP和臨時表都是可以索引的,總是存在tempdb中,會增加系統數據庫開銷,而表變量和CTE只有在內存溢出時才會被寫入tempdb中。對于數據量大,并且反復使用,反復進行查詢關聯的,建議使用臨時表或TVP,數據量小,使用表變量或CTE比較合適 2. sql_variant 萬能類型 可以存放所有數據類型,相當于C#中的object數據類型 3. datetime, datetime2, datetimeoffset datetime 時間有效期較小,在1753-1-1 之前就不能使用了,精度為毫秒級別,而datetime2 數據范圍相當于C#中的datetime ,精度達到了秒后面小數點后7位,datetimeoffset則是考慮是時區的日期類型 4. MERGE的用法 語法很簡單就不說了,主要是處理兩張表某些字段對比后的操作,需注意 when not matched (by target) 與 when not matched by source的區別,前者是是針對對比后目標表不存在的記錄,可以選擇insert操作,而后者則是針對對比后目標表多出來的記錄,可以選擇delete或update操作 5. rowversion 類型 代替以前的timestamp,時間戳,8字節二進制值,常用來進行解決并發操作的問題 6. Sysdatetime() 返回datetime2類型,精度比datetime高 7. with cube , with rollup , grouping sets 運算符 都可與group by 后連用,with cube 表示匯總所有級別的組合,with rollup 則是按級別匯總,從下面的代碼可以詳細看出區別。注意,匯總行,null可以看成所有值 而grouping sets運算符,則僅返回每個分組頂級匯總行,在查詢匯總行中 可使用grouping(字段名) = 1來判斷,該運算符可和rollup, cube連用,表示按照grouping by sets和按照rollup/cube處理的結果集union all 示例代碼如下:
復制代碼 代碼如下:
With cube, With rollup --示例代碼 declare @t table(goodsname VARCHAR(max) ,sku1name VARCHAR(max) , sku2name VARCHAR(max), qty INT) insert @t select '凡客TX','紅色','S',1 insert @t select '凡客TX','黑色','S',2 insert @t select '凡客TX','白色','L',3 insert @t select '京東村山','白色','L',4 insert @t select '京東村山','紅色','S',5 insert @t select '京東村山','黑色','L',6 insert @t select '亞馬遜拖鞋','白色','L',7 insert @t select '亞馬遜拖鞋','紅色','S',8 SELECT * FROM @t select goodsname,sku1name,sku2name,sum(qty) sumqty from @t group by goodsname,sku1name,sku2name with rollup ORDER BY goodsname,sku1name,sku2name select goodsname,sku1name,sku2name,sum(qty) sumqty from @t group by goodsname,sku1name,sku2name with cube ORDER BY goodsname,sku1name,sku2name ----------------------- declare @t table(goodsname VARCHAR(max) ,sku1name VARCHAR(max) , sku2name VARCHAR(max), qty INT) insert @t select '凡客TX','紅色','S',1 insert @t select '凡客TX','黑色','S',2 insert @t select '凡客TX','白色','L',3 insert @t select '京東村山','白色','L',4 insert @t select '京東村山','紅色','S',5 insert @t select '京東村山','黑色','L',6 insert @t select '亞馬遜拖鞋','白色','L',7 insert @t select '亞馬遜拖鞋','紅色','S',8 --GROUPING SETS 運算符 SELECT goodsname,sku1name,sku2name, SUM(qty) FROM @t GROUP BY GROUPING SETS(goodsname,sku1name,sku2name) SELECT goodsname, sku1name, sku2name ,SUM(qty) FROM @t GROUP BY GROUPING SETS(goodsname), ROLLUP(sku1name,sku2name) ORDER BY goodsname,sku1name,sku2name SELECT goodsname, sku1name, sku2name ,SUM(qty) FROM @t GROUP BY ROLLUP(goodsname,sku1name,sku2name) ORDER BY goodsname,sku1name,sku2name SELECT CASE WHEN GROUPING(goodsname) = 1 THEN '[ALL]' ELSE goodsname END goodsname, CASE WHEN GROUPING(sku1name) = 1 THEN '[ALL]' ELSE sku1name END sku1name, CASE WHEN GROUPING(sku2name) = 1 THEN '[ALL]' ELSE sku2name END sku2name ,SUM(qty) FROM @t GROUP BY GROUPING SETS(goodsname), ROLLUP(sku1name,sku2name) ORDER BY goodsname,sku1name,sku2name
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章SQL Server 總結復習(一)建站知識主要講述標簽,標題,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_6132.html