oracle中case when用法 oracle with as區(qū)別和用法?
oracle with as區(qū)別和用法?With as 就是將一個子查詢的結(jié)果作為一張臨時表,下面接著寫select語句可以通過別名直接使用語法:針對一個別名with tmp as (select
oracle with as區(qū)別和用法?
With as 就是將一個子查詢的結(jié)果作為一張臨時表,下面接著寫select語句可以通過別名直接使用
語法:
針對一個別名
with tmp as (select * from tb_name)
針對多個別名
with
tmp as (select * from tb_name),
tmp2 as (select * from tb_name2),
tmp3 as (select * from tb_name3),
…
例子:
--相當(dāng)于建了個e臨時表
with e as (select * from scott.emp e where e.empno=7499)
select * from e
--相當(dāng)于建了e、d臨時表
with
e as (select * from scott.emp),
d as (select * from scott.dept)
select * from e, d where e.deptno = d.deptno
為什么傳統(tǒng)行業(yè)幾乎都用Oracle,而互聯(lián)網(wǎng)行業(yè)幾乎都不用Oracle呢?
首先銀行要求絕對穩(wěn)定性,使用付費不開源產(chǎn)品可以完全責(zé)任委托,而且數(shù)據(jù)庫廠商還會有專門維護(hù),省心,省力,安全。
mysql呢,開源產(chǎn)品,穩(wěn)定性沒有o高,如果要深度開發(fā)倒是很省事,不過使用mysql就完全要看自己了,銀行不會為了一個隨時都有可能出現(xiàn)意外的定時炸彈找專門團(tuán)隊維護(hù),而且銀行交易量很大,但并非像互聯(lián)網(wǎng)應(yīng)用一樣超級并發(fā),大部分都是內(nèi)部接口使用,而且分地區(qū)都是不同的服務(wù)器,每個地區(qū)只存儲自己相關(guān)的數(shù)據(jù),比如你從廣東給山東異地轉(zhuǎn)賬,原始山東賬戶里并不存你的記錄,轉(zhuǎn)了之后山東數(shù)據(jù)庫才有記錄,在依賴oracle商業(yè)委托的基礎(chǔ)下,銀行還會有對賬,來保證數(shù)據(jù)一致性。
但是反觀互聯(lián)網(wǎng)企業(yè)就不一樣了,超級并發(fā),小型機(jī)已經(jīng)不滿足這種并發(fā)條件了,哪怕oracle足夠優(yōu)秀,所以要使用應(yīng)對更高并發(fā)特制的mysql,需要有專業(yè)的團(tuán)隊進(jìn)行維護(hù),穩(wěn)定性不如oracle,不過分布式集群可以避免這種情況。而且mysql因為開源還可以針對自己的需求特制功能。不過大部分企業(yè)用不上[捂臉],小公司用啥都一樣。阿里重新開發(fā)mysql除了自己用外還可以賣服務(wù)。
再說一句,阿里其實棄o選m其實除了并發(fā)問題,還因為oracle太貴,因為企業(yè)要考慮收支,就算阿里利潤率也比不上銀行[靈光一閃]