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