数据库多表查询的几种方法
生活随笔
收集整理的這篇文章主要介紹了
数据库多表查询的几种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據庫奪標查詢的三種方法:
連接查詢(左外連接,右外連接,完全外連接)
1.傳統方式
/*-- 傳統連接方式 --*/select e.ename,d.dnamefrom dept d , emp ewhere d.deptno = e.deptno/*--natural join 兩張表中只有一個同名欄位時行連接 --*/select e.ename,d.dnamefrom dept d natural join emp e/*--using 兩個表中有多個同名欄位時 --*/select e.ename,d.dnamefrom dept d join emp eusing(deptno)左外連接查詢
/*--左外連結 左表的全部記錄(部門表中的所有記錄:demp)-- *//*--方式1--*/select e.ename,d.dname from dept d left outer join emp eon d.deptno = e.deptno/*--方式2--*/ select e.ename,d.dnamefrom dept d , emp ewhere d.deptno = e.deptno(+)右外連接查詢?
/*--右外連結-- (員工表中的所有記錄:emp)*//*-- 方式1 --*/ select e.ename,d.dname from dept d right outer join emp eon d.deptno = e.deptno/*-- 方式2 --*/select e.ename,d.dnamefrom dept d , emp ewhere d.deptno(+) = e.deptno完全外鏈接查詢
/*--完全外連結(匹配與不匹配)-- (包括部門表及員工表中的所有記錄)*/select e.ename,d.dname from dept d full outer join emp eon d.deptno = e.deptno子查詢(單、多行,)
單行查詢
/*--子查詢(單行,多行)--*/select * from empwhere sal > (select avg(sal) from emp)/*--單行子查詢可以引用(=,>,>=,<,<=,<>)操作符 --*/select * from emp ewhere e.deptno=(select d.deptno from dept d where d.deptno=1 )多行查詢
/*--多行子查詢可以引用(in,any,all)操作符--*/select * from emp ewhere e.deptno in(select d.deptno from dept d)/*-- any 比較返回值中的任何一個,其中一個滿足,則返回true --*/select * from emp ewhere e.sal < any(select sal from emp where deptno=2)/*-- all 比較返回值中的所有,全部滿足,則返回true --*/select * from emp ewhere e.sal < all(select sal from emp where deptno=2)?
聚合查詢(求和,平均,記錄總數)
求和,平均查詢
/*--求和,平均 --*/select sum(sal),avg(sal) from empselect avg(nvl(sal,0)) from emp記錄總數
/*--記錄總數 --*/select count(*) from empselect count(memo) from emp /*--統計該欄非空記錄 --*/select count(distinct(sex)) from emp /*--去掉重復記錄 --*//*-- group by --*/select e.deptno,sum(e.sal)from emp egroup by e.deptno/*-- group by having --*/select e.deptno,avg(e.sal)from emp egroup by e.deptnohaving avg(e.sal) > 4500?
總結
以上是生活随笔為你收集整理的数据库多表查询的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3道常见的SQL笔试题,你要不要来试试!
- 下一篇: Verilog语言实现并行(循环冗余码)