標籤:
彙總函式:(都會忽略null資料) 常用的有5種:將欄位中所有的資料彙總在一條中 1、sum(欄位名) :求總和 2、avg(欄位名) :求平均值 3、max(欄位名) :求最大值 4、min(欄位名) :求最小值 5、count(欄位名、*) :統計行數 ----2、按部門編號,查詢平均薪水 ,並且平均薪水<1300的不顯示,結果按降序排序select empno,avg(sal) as avgsalfrom scott.empgroup by empnohaving avg(sal)>=1300order by avgsal desc;說明: SQL語句的執行順序:一定是從上到下的! group by 執行之後才會執行having 、select中沒有使用彙總函式的欄位名必須寫在這裡 having 後不能使用欄位的別名 可以彙總函式、一般欄位名 order by 後面可以有:欄位名、彙總函式、欄位別名注意: Oracle 10g中才會出現的容錯性: having 語句可以寫在group by 之前,不會報錯,但是實際上執行的順序還是先執行group by 後執行having子句說明: 1、當一個查詢中,出現彙總函式和沒有使用彙總函式的欄位,則該欄位必須出現在group by子句中! 2、group by 欄位1,欄位2; 會先按照欄位1分組得到一個結果集,再按照欄位2進行分組! 3、where 發生在group by 前! 4、where 後面不能有彙總函式! 多表查詢: 表串連分類: 內串連、外串連、交叉串連 1、內串連: [inner] join on SQL文法格式: 文法1: select * from 表1 [inner] join 表2 on 表1.欄位1=表2.欄位1; 文法2: select * from 表1,表2 where 表1.欄位1=表2.欄位1; 說明: 內串連中的inner join 和 join 是等價的!但是建議為了程式的可讀性 盡量不要省略inner! 2、外串連: 分類:左外串連、右外串連、全串連! 1、左外串連:left outer join 串連效果: 左側的表中的全部資料都會被顯示出來,但是右側表的資料, 只有和左側匹配上的欄位才會被查詢出來!否則都會顯示null! SQL文法格式: 文法1: select * from 表1 left outer join 表2 on 表1.欄位1=表2.欄位1; 文法2: select * from 表1 left outer join 表2 where 表1.欄位1=表2.欄位1(+); 2、右外串連:right outer join 串連效果: 右側的表中的全部資料都會被顯示出來,但是左側表的資料, 只有和右側匹配上的欄位才會被查詢出來!否則都會顯示null! SQL文法格式: 文法1: select * from 表1 right outer join 表2 on 表1.欄位1=表2.欄位1; 文法2: select * from 表1 left outer join 表2 where 表1.欄位1(+)=表2.欄位1; 3、全外串連:full/all outer join SQL文法格式: select * from 表1 full outer join 表2 on 表1.欄位1=表2.欄位1; 2、交叉串連: 表與表之間做笛卡爾積查詢! SQL文法格式:(無條件查詢) select * from 表1 cross join 表2; 或者 select * from 表1, 表2;
資料庫(學習整理)----7--Oracle多表查詢,三種join串連