1. 程式人生 > 實用技巧 >【Oracle】子查詢、偽列、分頁查詢、表連線

【Oracle】子查詢、偽列、分頁查詢、表連線

子查詢、偽列、分頁查詢、表連線

①. 子查詢
子查詢可代替表、屬性值
	
①子查詢結果是1行1列
	例:查詢工資最高的員工資訊
	select * from employees where salary = (select max(salary) from employees);
②子查詢結果是n行1列
	例:查詢和“king”一個姓的並且在同一部門的員工的資訊
	select * from employees where department_id in(select department_id from employees where last_name = ‘king’);
③子查詢結果是n行n列
	例:查詢工資前五位到前十位之間的員工資訊
select * from (select employee_id, first_name, last_name,rownum as rn from (select * from employees order by salary desc)) where rn >= 5 and rn <= 10
②. 偽列、分頁查詢
偽列:
rowid			行的實體地址,不存在於任何表,可查詢
rownum			對查詢滿足條件的結果資料進行編號(從1開始)
用法:
 		select rowid,rownum,其他欄位 from 表;
分頁:
	利用子查詢,將查詢所有表資料再加上序列(rownum)作為一個臨時表

例如:
①查詢薪資從第五到第十位的員工資訊
	**先按工資降序排序,在加上序號欄位形成臨時表
select * from (select employees_id, first_name, last_name, salary, rownum as rn from (select * from employees order by salary desc)) where rn >= 5 and rn <= 10

②對錶加序號
  select employees.*, rownum as rn from employees;
③. 表連線
將多張表連線為一張表進行處理(放在from後)

1.內連線
	關鍵詞:…(inner)join … on  		 inner可以省略
	語法:表1 (inner)join 表2 on 表1.xxx = 表2.xxx
特點:①合併表1存在且表2也與之對應存在的資料②不保留表1存在且在表2中對應不存在的元組資料(與外連線對比)
2.外連線
	①左外連
		關鍵詞:left (outer) join … on    	outer可以省略
		語法:表1 left join 表2 on 表1.xxx = 表2.xxx
		特點:合併表1和表2,並且會保留表1存在且表2對應不存在的元組,並對其補充為空
	②右外連
		語法:表1 right join 表2 on 條件
3.擴充套件
	如果有兩張以上的表進行連線時,先連線兩個後成為一個表,再連線下一個,依次連線