淺談SQL與PLSQL開發(fā)實(shí)戰(zhàn)
編者注:當(dāng)講到了性能優(yōu)化和案例方面的東西,就要想到如何從開發(fā)人員的角度進(jìn)行了理解,認(rèn)識(shí)SQL是如何執(zhí)行,以及如何學(xué)習(xí)高級(jí)的SQL,這篇文章對(duì)以上問題做了簡(jiǎn)單小結(jié)。
▲ITPUB版主丁俊
▲全面的ORACLE SQL知識(shí)體系
談到認(rèn)識(shí)SQL的邏輯和物理執(zhí)行順序邏輯順序時(shí),丁俊提到兩點(diǎn):一、理解SQL的邏輯執(zhí)行順序,可以大幅度減少錯(cuò)誤SQL的編寫。二、理解SQL的邏輯執(zhí)行順序,可以深化對(duì)SQL的認(rèn)識(shí),有利于處理更加復(fù)雜的業(yè)務(wù)邏輯。
▲認(rèn)識(shí)SQL的邏輯和物理執(zhí)行順序邏輯順序
能夠用SQL解決的就不要用PLSQL了,而PLSQL是SQL的很好的補(bǔ)充。
▲認(rèn)識(shí)SQL的邏輯和物理執(zhí)行順序 邏輯順序續(xù)
SQL的物理執(zhí)行順序就是實(shí)際的EXECUTION PATH.物理執(zhí)行順序依賴于CBO優(yōu)化器組件,非常復(fù)雜。
▲認(rèn)識(shí)SQL的邏輯和物理執(zhí)行順序 CBO簡(jiǎn)介
▲認(rèn)識(shí)SQL的邏輯和物理執(zhí)行順序 物理執(zhí)行順序案例
▲從分析函數(shù)學(xué)習(xí)談如何學(xué)SQL
從文檔提取分析函數(shù)特點(diǎn):
分析函數(shù)依賴于分析子句對(duì)當(dāng)前行所屬的分組進(jìn)行分析函數(shù)計(jì)算。用于復(fù)雜的行間和累計(jì)值的計(jì)算。
分析函數(shù)與組函數(shù)不同。根據(jù)1的特點(diǎn),分析函數(shù)同時(shí)能計(jì)算分組值,并且還能保留當(dāng)前行的其他列值。--重要特性
分析函數(shù)分類:排名(rank,dense_rank,row_number,first/last,ntile等)、聚合報(bào)表函數(shù)(sum,count等以及ratio_to_report)、行比較(lead/lag,first_value/last_value)、數(shù)學(xué)統(tǒng)計(jì)(stddev,var_pop等)等函數(shù)。
從分析函數(shù)學(xué)習(xí)談如何學(xué)SQL總結(jié)
分析函數(shù)可以實(shí)現(xiàn)復(fù)雜的行間計(jì)算功能,諸如累計(jì)值,行間比較,報(bào)表統(tǒng)計(jì)等功能。學(xué)習(xí)分析函數(shù)要把握每種分析函數(shù)的特點(diǎn),并掌握分析函數(shù)中的關(guān)鍵元素的聯(lián)系區(qū)別:比如ROWS與RANGE區(qū)別,window子句與partition、order by的關(guān)系,掌握窗口、當(dāng)前行的概念。此外ORACLE還支持自定義的聚集函數(shù),可以實(shí)現(xiàn)分析函數(shù)的功能,可以參考Data Cartridge Developer's Guide。
【編輯推薦】