1. 程式人生 > >JAVA入門到精通-第62講-複雜查詢

JAVA入門到精通-第62講-複雜查詢


每個部門的平均工資是不一樣的;
--from子句中使用查詢 分析: 1.首先要知道各個部門的平均工資 select  avg(sal), deptno from emp group by deptno 2.把上面的查詢結果當做一個臨時表對待 兩張表,sal進行比較
tem 臨時表
tem表和emp表關聯起來:
給所在部門的平均工資取別名 myavg


不給子查詢取別名,會訪問不到需要的欄位;
--top ID *
top 取5到10個 top 後面的數表示要取出幾條記錄; top挑出6條,從emp表來,編號不能在xxx裡面 not in
排除不要的4個人,排除前4個人;


top查詢: 100萬條記錄,1-2秒鐘可以出結果
identity(1, 1)表示該欄位testID欄位自增長,從1,每次+1 通過這條語句進行瘋狂地複製,用於壓力測試;
insert into test (testName, testpass)            select  testName, testpass              from   test; 比如用於郵件伺服器的壓力測試;

欄位越多,速度越慢;上百萬的資料,分頁查詢,越到最後,速度越慢;
--如何刪除一張表中的重複記錄
 1.select  distinct  *  into  #temp3 from  cat  2.delete  from  cat   3.insert  into  cat  select  * from  #temp3   4.drop  table #temp3
1.把cat表的記錄distinct後的結果放入到臨時表#temp3中 2.把cat表的記錄清空 3.把#temp表的資料(沒有重複的記錄),插入到cat表中 ; 4.刪除臨時表#temp3
--左外連線和右外連線 -要求沒有上級的人名字也要顯示出來null  left  join 左外連  where換成on select  w.ename, b.ename       from  emp  w left join  emp  b on  w.mgr=b.empno
左外連線: 指左邊的表的記錄全部顯示, 如果 沒有匹配的記錄就用null填 emp   w 表的記錄全部出現;

--內連線:只有匹配上的才會出現 inner  join xx  on



--左外連線和右外連線

--思考題:顯示公司每個員工和他的上級領導的名字

--內連線的處理方式(內連線只顯示匹配的資訊)

select worker.ename"員工名字",boss.ename"領導名字" from emp worker,emp boss where worker.mgr=boss.empno

--思考題:顯示公司每個員工和他的上級領導的名字,沒有上級領導的也要顯示出來

--左外連線:指如果左邊的表記錄全部顯示,如果沒有匹配的記錄,就用null填寫

select worker.ename"員工名字",boss.ename"領導名字" from emp worker left join emp boss on worker.mgr=boss.empno

--右外連線:指如果右邊的表記錄全部顯示,如果沒有匹配的記錄,就用null填寫

select worker.ename"員工名字",boss.ename"領導名字" from emp worker right join emp boss on worker.mgr=boss.empno




























來自為知筆記(Wiz)