資源描述:
《韓順平 oracle聽(tīng)課筆記 經(jīng)典.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、復(fù)雜查詢-單表查詢:查詢部門(mén)中各個(gè)崗位的平均工資和最高工資。selectavg(sal),max(sal),deptno,jobfromempgroupbydeptno,job;groupby用于對(duì)查詢的結(jié)果分組統(tǒng)計(jì);selectavg(sal),max(sal),deptno,jobfromempgroupbydeptno,jobhavingavg(sal)>2000;having子句用于限制分組顯示結(jié)果;selectavg(sal),max(sal),deptno,jobfromempgroupbydeptno,jobhavingavg(sal)>2000orderbydept
2、nodesc;orderby用于排序;復(fù)雜查詢-多表查詢:select?,?fromempa1,depta2wherea1.deptno=a2.deptno;自連接(同一張表的關(guān)聯(lián)查詢):select?,?fromempworker,empbosswherewoker.?=boss.?;子查詢:1.單行子查詢:返回單行數(shù)據(jù)2.多行子查詢:返回多行數(shù)據(jù)select*fromempwherejobin(select());all=嵌套select(max());any=嵌套select(min());3.多列子查詢:select?,?fromempwhere(?,?)=(select?
3、,?);注意對(duì)應(yīng)關(guān)系4.from子句中使用子查詢:select?,?fromempa1,(selectdeptno,avg(sal)mysalfromempgroupbydeptno)a2wherea1.deptno=a2.deptnoanda1.sal>a2.mysal;(a2叫做內(nèi)嵌視圖)表指定別名不可加as,列可以加as;5.用查詢結(jié)果創(chuàng)建表:createm1(?,?,?)asselect?,?,?fromemp;復(fù)雜查詢-分頁(yè)查詢:1.rownum分頁(yè):(select*fromemp)2.顯示rownum(oracle分配的)selecta1.*,rownumrnfrom(
4、select*fromemp)a1;3.指定范圍:6到10條記錄selecta1.*,rownumrnfrom(select*fromemp)a1whererownum<=10;前10條記錄select*from(selecta1.*,rownumrnfrom(select*fromemp)a1whererownum<=10)wherern>=6;4.幾個(gè)查詢變化:a.指定查詢列,(只需要修改最里層的子查詢)select*from(selecta1.*,rownumrnfrom(select?,?fromemp)a1whererownum<=10)wherern>=6;b.如何排序
5、,(只需要修改最里層的子查詢)select*from(selecta1.*,rownumrnfrom(select?,?fromemporderby?)a1whererownum<=10)wherern>=6;復(fù)雜查詢-合并查詢:unoin:并集且去除重復(fù)的unionall:并集且不去除重復(fù)的,也不排序intersect:取交集minus:取差集sql函數(shù)的使用:lower(char),upper(char),length(char),substr(char,m,n)從m開(kāi)始取n個(gè)字符。selectupper(substr(ename,1,1))fromemp;(首字母大寫(xiě))sel
6、ectlower(substr(ename,2,length(ename)-1))fromemp;(除首字母大寫(xiě)后面字母小寫(xiě))replace(char,m,n)選擇字段名將m替換成nround(n,[m])四舍五入m為小數(shù)點(diǎn)后面的的m位trunc(n,[m])截取數(shù)字m為小數(shù)點(diǎn)后面的的m位mod(m,n)取模(余數(shù))floor(n)返回小于或者等于n的最大整數(shù)ceil(n)返回大于或者等于n的最小整數(shù)例:顯示一個(gè)月(30天)的情況下所有員工的日薪,忽略余數(shù):selecttrunc(sal/30),enamefromemp;或者selectfloor(sal/30),enamefro
7、memp;顯示員工的入職天數(shù):Selecttrunc(sysdate-hiredate)"入職天數(shù)",enamefromemp;顯示當(dāng)月倒數(shù)第三天入職的員工:last_day(d):返回指定日期所在月份的最后一天selecthiredate,enamefromempwherelast_day(hiredate)-2=hiredate;轉(zhuǎn)換函數(shù):to_char(char,data):將字符串轉(zhuǎn)換成date類型的數(shù)據(jù)to_date('1988-12-12','yyyy-m