久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

sql語句中with as的用法介紹

185次閱讀
沒有評論

共計(jì) 1928 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。

本篇內(nèi)容介紹了“sql 語句中 with as 的用法介紹”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

WITH AS 短語,也叫做子查詢部分,可以定義一個(gè) SQL 片斷,該 SQL 片斷會(huì)被整個(gè) SQL 語句用到。可以使 SQL 語句的可讀性更高,也可以在 UNION ALL 的不同部分,作為提供數(shù)據(jù)的部分。

–針對一個(gè)別名

with tmp as (select * from tb_name)

–針對多個(gè)別名

with
tmp as (select * from tb_name),
tmp2 as (select * from tb_name2),
tmp3 as (select * from tb_name3),
…

–相當(dāng)于建了個(gè) e 臨時(shí)表

with e as (select * from scott.emp e where e.empno=7499)
select * from e;

–相當(dāng)于建了 e、d 臨時(shí)表

with
e as (select * from scott.emp),
d as (select * from scott.dept)
select * from e, d where e.deptno = d.deptno;

其實(shí)就是把一大堆重復(fù)用到的 sql 語句放在 with as 里面,取一個(gè)別名,后面的查詢就可以用它,這樣對于大批量的 sql 語句起到一個(gè)優(yōu)化的作用,而且清楚明了。

向一張表插入數(shù)據(jù)的 with as 用法

insert into table2
s1 as (select rownum c1 from dual connect by rownum  = 10),
s2 as (select rownum c2 from dual connect by rownum  = 10)
select a.c1, b.c2 from s1 a, s2 b where…;

select s1.sid, s2.sid from s1 ,s2 需要有關(guān)聯(lián)條件,不然結(jié)果會(huì)是笛卡爾積。

with as 相當(dāng)于虛擬視圖。

with as 短語,也叫做子查詢部分 (subquery factoring),可以讓你做很多事情,定義一個(gè) sql 片斷,該 sql 片斷會(huì)被整個(gè) sql 語句所用到。有的時(shí)候,是為了讓 sql 語句的可讀性更高些,也有可能是在 union all 的不同部分,作為提供數(shù)據(jù)的部分。

特別對于 union all 比較有用。因?yàn)?union all 的每個(gè)部分可能相同,但是如果每個(gè)部分都去執(zhí)行一遍的話,則成本太高,所以可以使用 with as 短語,則只要執(zhí)行一遍即可。如果 with as 短語所定義的表名被調(diào)用兩次以上,則優(yōu)化器會(huì)自動(dòng)將 with as 短語所獲取的數(shù)據(jù)放入一個(gè) temp 表里,如果只是被調(diào)用一次,則不會(huì)。而提示 materialize 則是強(qiáng)制將 with as 短語里的數(shù)據(jù)放入一個(gè)全局臨時(shí)表里。很多查詢通過這種方法都可以提高速度。

with
sql1 as (select to_char(a) s_name from test_tempa),
sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1))
select * from sql1
union all
select * from sql2
union all
select ‘no records’ from dual
where not exists (select s_name from sql1 where rownum=1)
and not exists (select s_name from sql2 where rownum=1);

WITH 語句的優(yōu)點(diǎn):

(1). SQL 可讀性增強(qiáng)。比如對于特定 with 子查詢?nèi)€(gè)有意義的名字等。

(2)、with 子查詢只執(zhí)行一次,將結(jié)果存儲(chǔ)在用戶臨時(shí)表空間中,可以引用多次,增強(qiáng)性能。

舉例: 在進(jìn)行導(dǎo)入 EXCEL 的過程中,有時(shí)候,需要將數(shù)據(jù)存儲(chǔ)在臨時(shí)表中,當(dāng)下一次在進(jìn)行導(dǎo)入的時(shí)候,進(jìn)行清除臨時(shí)表的數(shù)據(jù),但是這時(shí)候,有時(shí)候發(fā)生并發(fā)問題的話,兩個(gè)用戶可能會(huì)分別操作對方的數(shù)據(jù),所以,可能造成混亂,但是可以使用 WITH 函數(shù)和 UNION 語句拼接一個(gè) SQL 語句,存儲(chǔ)在 SESSION 中,當(dāng)需要導(dǎo)出錯(cuò)誤信息的時(shí)候,可以使用該語句構(gòu)造數(shù)據(jù)。

“sql 語句中 with as 的用法介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計(jì)1928字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 武鸣县| 清苑县| 潼南县| 卓资县| 宜宾县| 中超| 涿鹿县| 临湘市| 清河县| 兴和县| 波密县| 盱眙县| 马关县| 凭祥市| 抚松县| 临澧县| 阿合奇县| 新泰市| 林芝县| 宣武区| 山阴县| 项城市| 临高县| 沐川县| 临夏市| 务川| 阿克苏市| 鄂温| 康平县| 耿马| 吉木乃县| 农安县| 清河县| 张家川| 曲靖市| 潮州市| 孝义市| 剑河县| 佛冈县| 临潭县| 祁阳县|