資源描述:
《oracle的函數(shù)與sql高級(jí)查詢》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、Oracle函數(shù)與高級(jí)查詢二Oracle的函數(shù)2.1什么是函數(shù)函數(shù):指對(duì)一堆邏輯的打包,能夠支持傳入的參數(shù),根據(jù)參數(shù)得到一定的結(jié)呆;那么,在oracle中,都有什么函數(shù),有什么類型的函數(shù),函數(shù)有什么分類?2.2函數(shù)的分類2.2.1單行與多行除了聚合(組)函數(shù),其它全是單行函數(shù)Oracle的兩數(shù)咱們可以簡(jiǎn)單分成再種:多行函數(shù)與單行函數(shù),如卜?圖:函數(shù)單行函數(shù)多行函數(shù)2.2.1.1什么是單行函數(shù)簡(jiǎn)單理解:對(duì)單行數(shù)據(jù)進(jìn)行是操作,得到單行數(shù)據(jù);比如concat連接函數(shù)concat連接函數(shù)得到的效果;使JIJconcat不會(huì)影響行數(shù),以前100行,使川concatZ后得到的結(jié)杲也是100行。單行函數(shù):
2、在執(zhí)行獲得結(jié)果后??梢灾С謧魅?yún)?shù)【列和表達(dá)式】,針對(duì)每一行單獨(dú)做運(yùn)算。最終不會(huì)影響結(jié)果的行數(shù)。單行函數(shù)特點(diǎn):1接收參數(shù)返回一個(gè)值2對(duì)每一行返回行起作用3每一行返I叫一個(gè)結(jié)果4可以修改數(shù)據(jù)類型5可以使用嵌套concat(concat(coll,col2),col2)除了concat這樣的單行兩數(shù)以外,還有其他的單行兩數(shù),比如字符處理函數(shù);比如有時(shí)要求用戶名全部大寫(xiě)或者小寫(xiě),或者需要得到一個(gè)人的姓,這些都需耍字符函數(shù)進(jìn)行處理,字符函數(shù)中,也存在分類2.2.1.2什么是多行函數(shù)多行函數(shù):簡(jiǎn)單理解對(duì)多行數(shù)據(jù)進(jìn)行操作,最后返回一個(gè)數(shù)據(jù)比如count函數(shù):Count針對(duì)過(guò)濾后的結(jié)果支持傳入表的列名或者
3、常量,對(duì)所有行的記錄統(tǒng)一處理。最終只會(huì)得到一個(gè)結(jié)果,會(huì)影響結(jié)果行數(shù);多行函數(shù):在執(zhí)行獲得結(jié)果后??梢灾С謧魅?yún)?shù)【列和表達(dá)式】,針對(duì)每一行整體統(tǒng)計(jì)做運(yùn)算。最終只會(huì)產(chǎn)生1行數(shù)據(jù)咱們所說(shuō)的單行與多行是指這個(gè)函數(shù)操作的數(shù)據(jù)是單行還是多行(不是說(shuō)的結(jié)果)2.2.1.3單行.多行分別用在哪?擴(kuò)展理解耳練習(xí)比如concat用在哪里?可以放在select后,把它的姓和名連接起來(lái);單行函數(shù):select關(guān)鍵字之后where之后的條件上(whereZ后單行函數(shù)如下)姓名中有e或者a的員工?把姓名組合起來(lái)查詢seIect*fromempIoyeeswherefirst_name
4、
5、last_nameIike'%
6、e%'orfirst_name
7、
8、Iast_nameIike'%a%'使用函數(shù)Select*fromemployeesWhereconcat(first_name,last_name)like'%e%'Orfirst_name11last_namelike'%a%';多行函數(shù):針對(duì)Select關(guān)鍵之后;比如count函數(shù)統(tǒng)計(jì)所有行,放在select之后使用多行函數(shù)得到就一個(gè)結(jié)果,那我放在where后面有意義嗎?Where是針對(duì)每一行,而多行函數(shù)返回結(jié)果只有一行,如果放在where之后,執(zhí)行一次,是一個(gè)結(jié)果,執(zhí)行二次還是同一個(gè)結(jié)果,所以沒(méi)有意義.222函數(shù)功能分類可以分為:字符函數(shù)、數(shù)字函數(shù),
9、轉(zhuǎn)換函數(shù),H期函數(shù),組函數(shù),其它函數(shù)字符(串)函數(shù):拼接字符串,截取字符串,全變?nèi)藢?xiě),全變小寫(xiě),首字母大寫(xiě)…數(shù)字(number)函數(shù):四舍五入,舍掉轉(zhuǎn)換函數(shù):字符《-》口期字符《-》數(shù)字FI期函數(shù):拿到年,月,日,時(shí),分,秒組函數(shù):sum,count,max....其它函數(shù):2.3字符函數(shù)字符函數(shù)分為大小寫(xiě)轉(zhuǎn)換函數(shù)與字符處理函數(shù)2.3.1大小寫(xiě)轉(zhuǎn)換函數(shù)大小寫(xiě)轉(zhuǎn)換函數(shù):Lower(列
10、表達(dá)式)全部轉(zhuǎn)換小寫(xiě)Upper例
11、表達(dá)式)全部轉(zhuǎn)換人寫(xiě)lnitcap(列
12、表達(dá)式)首字母人耳練習(xí)案例:select'HelloworId1fromdua1;人寫(xiě):se1ectupper(*He1Iowor1d*)
13、fromdua1;小寫(xiě):selectlower('He1Iowor1d')fromdua1;練習(xí)案例:1,查詢first_name為randall的員工工資;分析:我們查詢的時(shí)候不需要關(guān)心名稱中的人小寫(xiě)問(wèn)題—seIect*fromempIoyeeswherelower(firstname)二'randall';練習(xí)案例:2,客戶在輸入名字的時(shí)候,可以不會(huì)在意名稱的人小寫(xiě),比如,WangXiaoer,假設(shè)現(xiàn)在在發(fā)送郵件,需要按照正規(guī)的格式輸出姓名;請(qǐng)使用SQL處理分析:我們可以插入一條小寫(xiě)的名字,然后使用首字母大寫(xiě)查詢出來(lái),格式更完整insertintoemployees(employee」d
14、,first_namejast_name,email,phone_number;hire_datejob」d)values(300z'wang7xiaoer7xxx@qq.com71895236541'/sysdate/,SH_CLERK,)查詢:seIectinitcap(firstname)
15、
16、F,
17、
18、initcap(Iastname)fromempIoyees;2.3.2字符處理函數(shù)1、CONCAT(s