多表查詢(連線查詢)

2021-08-28 22:22:33 字數 1037 閱讀 1356

多表查詢: 資料**是多個表,這時注意一定要書寫連線條件。當n個表連線,至少需要n-1個連線條件。

注意:(1)如何判斷兩個表之間有公共列?  型別一致、寬度一致。(列名不能作為判斷標準,列名不同也能是公共列 如:emp的empno和emp的mgr)

(2)如何避免二義性問題?給每個屬性加歸屬。    

(3)注意使用表別名。表別名一經定義,在該查詢中只能使用該別名,原名不可再用。

列別名 vs 表別名: (列別名只能用在select和排序中)

(1)等值連線: 連線條件用=號,滿足連線條件的記錄輸出,不滿足的不輸出。

查詢每個員工的姓名和其所在部門名稱。

select emp.deptno,emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno;

from emp inner join dept on emp.deptno=dept.deptno 

查詢每個員工的姓名和其經理的姓名。

select e.ename,m.ename from emp e,emp m  where e.mgr=m.empno;

(3)外連線:滿足連線條件的記錄輸出,不滿足的也輸出。在oracle中,外連線運算子:(+),當其出現在等號的左邊,為右外連線,反之為左外連線。

select e.ename,m.ename from emp e,emp m  where e.mgr=m.empno(+);  //左外連線

select e.ename,m.ename from emp e,emp m   where m.empno(+)=e.mgr;  //右外連線

(4) 不等連線:連線條件用除等號以外的運算子。這時,表與表之間通常沒有公共列。

查詢每個員工的工資等級。    salgrade 

select emp.ename,emp.sal,r.grade from emp,salgrade r where emp.sal between r.losal and r.hisal;

如何提公升連線查詢的效率? 

sql99連線方法。

多表連線查詢

1 內連線 inner join 只返回兩個表中所有滿足連線條件的行 2 外連線outer join 除了返回兩個表中所有滿足連線條件的行之外,還返回 某個表中不滿足連線條件的行 3 交叉連線 產生笛卡爾積的連線 如果連線條件使用等號 就可以叫做相等連線 1 使用natural join關鍵字進行內...

多表連線查詢

1.如果乙個查詢需要多個表進行操作,就成為連線查詢。2.連線查詢實際上是通過各個表之間共同列的關聯性來查詢資料的,資料表之間的聯絡是通過表的字段值來體現的。查詢 劉偉 老師所教授的課程,要求列出教師號,教師姓名和課程號 1.方法一 select t.no,tn,cno from t,tc where...

多表連線查詢

多表連線查詢 本文主要列舉兩張和三張表來講述多表連線查詢。新建兩張表 表1 student 截圖如下 表2 course 截圖如下 此時這樣建表只是為了演示連線sql語句,當然實際開發中我們不會這樣建表,實際開發中這兩個表會有自己不同的主鍵。一 外連線 外連線可分為 左連線 右連線 完全外連線。1 ...