多表查詢有3種方式,分別是:1、傳統方式,包括左外連接查詢,右外連接查詢 ,完全外鏈接查詢;2、子查詢方式,包括單行查詢,多行查詢;3、聚合查詢方式,包括求和,平均查詢,記錄總數。
多表查詢有3種方式,分別是:
一、傳統方式
/*--?傳統連接方式?--*/ ? select?e.ename,d.dname ? from?dept?d?,?emp?e ? where?d.deptno?=?e.deptno ? ? ? /*--natural?join?兩張表中只有一個同名欄位時行連接?--*/ ? select?e.ename,d.dname ? from?dept?d? ? ? natural?join?emp?e ? ? ? /*--using?兩個表中有多個同名欄位時?--*/ ? select?e.ename,d.dname ? from?dept?d?join?emp?e ? using(deptno)
?1、左外連接查詢
/*--左外連結?左表的全部記錄(部門表中的所有記錄:demp)--?*/ ? /*--方式1--*/ ? select?e.ename,d.dname?from?dept?d?left?outer?join?emp?e ? on?d.deptno?=?e.deptno ? /*--方式2--*/? ? ? select?e.ename,d.dname ? from?dept?d?,?emp?e ? where?d.deptno?=?e.deptno(+)
2、右外連接查詢?
/*--左外連結?左表的全部記錄(部門表中的所有記錄:demp)--?*/ ? /*--方式1--*/ ? select?e.ename,d.dname?from?dept?d?left?outer?join?emp?e ? on?d.deptno?=?e.deptno ? /*--方式2--*/? ? ? select?e.ename,d.dname ? from?dept?d?,?emp?e ? where?d.deptno?=?e.deptno(+)
3、完全外鏈接查詢
/*--完全外連結(匹配與不匹配)--?(包括部門表及員工表中的所有記錄)*/ ? select?e.ename,d.dname?from?dept?d?full?outer?join?emp?e ? on?d.deptno?=?e.deptno
二、子查詢(單、多行)
1、單行查詢
/*--子查詢(單行,多行)--*/ ? select?*?from?emp ? where?sal?>?(select?avg(sal)?from?emp) ? /*--單行子查詢可以引用(=,>,>=,<,<=,<>)操作符?--*/ ? select?*?from?emp?e ? where?e.deptno=(select?d.deptno?from?dept?d?where?d.deptno=1?)
2、多行查詢
/*--多行子查詢可以引用(in,any,all)操作符--*/ ? select?*?from?emp?e ? where?e.deptno?in(select?d.deptno?from?dept?d) ? /*--?any?比較返回值中的任何一個,其中一個滿足,則返回true?--*/ ? select?*?from?emp?e ? where?e.sal?<p>?</p><p><strong>三、聚合查詢(求和,平均,記錄總數)</strong></p><p>1、求和,平均查詢</p><pre class="brush:php;toolbar:false">/*--求和,平均?--*/ ? select?sum(sal),avg(sal)?from?emp ? select?avg(nvl(sal,0))?from?emp
2、記錄總數
/*--記錄總數?--*/ ? select?count(*)?from?emp ? select?count(memo)?from?emp?/*--統計該欄非空記錄?--*/ ? select?count(distinct(sex))?from?emp?/*--去掉重復記錄?--*/ ? /*--?group?by?--*/ ? select?e.deptno,sum(e.sal) ? from?emp?e ? group?by?e.deptno ? /*--?group?by?having?--*/ ? select?e.deptno,avg(e.sal) ? from?emp?e ? group?by?e.deptno ? having?avg(e.sal)?>?4500
相關學習推薦:mysql視頻教程
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END