聚合函數:(都會忽略null數據) 常用的有5種:將字段中所有的數據聚合在一條中 1、sum(字段名) :求總和 2、avg(字段名) :求平均值 3、max(字段名) :求最大值 4、min(字段名) :求最小值 5、count(字段名、*) :統計行數 ----2、按部門編號,查詢平均薪水 ,並且平均薪水<1300的不顯示,結果按降序排序 select empno,avg(sal) as avgsal from scott.emp group by empno having avg(sal)>=1300 order 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;