日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库:SQLServer中with as 用法笔记

發布時間:2023/12/20 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库:SQLServer中with as 用法笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、with as 概念介紹

with as 也叫做子查詢部分(subquery factoring),可以定義一個SQL段落,該SQL段落可以被整個SQL語句所用到類似于臨時表的作用。with as 可以提高你的SQL語句的可讀性,也有可以用在在UNION ALL的不同部分,作為提供臨時數據的部分。

二、with as 用途

with as對于UNION ALL查詢語句非常有用。因為UNION ALL的每個查詢部分可能相同,但是如果每個部分都去執行一遍的話,則查詢成本很高,如果使用WITH AS段落查詢,則只要執行一遍即可。如果with as段落所定義的表名被調用兩次以上,則SQLServer會自動將with asS段落所獲取的數據放入一個臨時表里,如果只是被調用一次,則不會放到臨時表里面。而提示materialize則是強制將WITH AS短語里的數據放入一個全局臨時表里。很多查詢通過這種方法都可以提高速度。

三、什么是CTE

CTE完整的描述是公用表表達式(Common Table Expression)是SQL SERVER 2005版本之后引入的一個新特性。CTE可以看作是一個臨時的查詢結果集,可以在接下來的一個SELECT,INSERT,UPDATE,DELETE,MERGESQL語句中被多次引用。使用公用表達式可以讓SQL語句更加可讀。、

四、CTE有下面四個優點:

1、可以定義遞歸公用表表達式(CTE)

2、當需要將查詢結果集作為視圖被多個地方引用時,CTE可以使SQL更加簡潔

3、GROUP BY語句可以直接作用于子查詢所得的標量列

4、可以在一個語句中多次引用公用表表達式(CTE)

五、CTE語法格式

with table1as(查詢語句)select * from table1示例:withtb1 as( select name.age,address from person.T_user where name like 'a%')select * from tb1


六、CTE 注意事項

1、CTE后面必須直接跟使用CTE的SQL語句(如select、insert、update等),否則,CTE將查詢結果失效。比如:

withtb1 as( select name.age,address from person.T_user where name like 'a%')select * from T_userselect * from tb1 -- 查詢將會失效

2、CTE后面也可以跟其他的CTE,但只能使用一個with,多個CTE中間用逗號(,)分隔。

with table1as(CTE_query_definition) , --用逗號分割table2 as(查詢語句)...select * from table1 ,table2

3. 如果CTE的表達式名稱與某個數據表或視圖重名,則緊跟在該CTE后面的SQL語句使用的仍然是CTE,后面的SQL語句使用的就是數據表或視圖了。

withT_user as( select * from T_user where name='小王')select * from T_user -- 查詢結果為T_user的公共表表達式select * from T_user -- 查詢結果為T_user的數據表

4. CTE 可以引用自身,也可以引用在同一 WITH 子句中預先定義的 CTE。不允許前向引用。

with tb as(select * from T_user where id=2),tb2 as(select * from tb where id=2)select * from tb -- tb2 可以調用tb,不可以反向調用

5. 不能在 CTE_query_definition 中使用以下子句:

(1)COMPUTE 或 COMPUTE BY

(2)ORDER BY(除非指定了 TOP 子句)

(3)INTO

(4)帶有查詢提示的 OPTION 子句

(5)FOR XML

(6)FOR BROWSE

6. 如果將 CTE 用在屬于批處理的一部分的語句中,那么在它之前的語句必須以分號結尾。

declare @s nvarchar(3) set @1 = 100; -- 必須加分號withtb1 as( select name.age,address from person.T_user where name like 'a%')select * from tb1


以上是SQLServer中with as 用法介紹,希望能對大家有所 幫助,感興趣的歡迎交流!

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

總結

以上是生活随笔為你收集整理的数据库:SQLServer中with as 用法笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。