oracle的多表查詢與表的串連

來源:互聯網
上載者:User

標籤:就是   image   結果   into   內串連   src   笛卡爾積   產生   顯示   

一、多表查詢    在任何多表查詢中一定會產生笛卡爾積的問題,但是,笛卡爾積產生的結果對於使用者來說是毫無意義的,是重複的無用資料。因此我們需要消除笛卡爾積,那麼在多表查詢的時候,就必須要有關聯欄位。    範例:emp.deptno=dept.deptno;兩張表中的關聯欄位將消除笛卡爾積    SELECT * FROM emp, dept WHERE emp.deptno=dept.deptno;     多表的查詢,建議多做些習題增加熟練度。二、表的串連     內串連:之前利用了WHERE子句消除了笛卡爾積,這個是內串連。只有滿足條件的資料才會顯示。    外串連:分為左外串連、右外串連、全外串連。

為了更好的觀察到串連的區別,現在已經在dept表中提供了一個沒有僱員的部門40,同時在emp表中增加一個沒有部門的僱員。

INSERT INTO emp (empno,ename,deptno) VALUES(8989,‘HELLO‘, null);

emp表目前如下:HELLO這個僱員沒有部門

觀察一:內串連實現效果

SELECT e.empno, e.ename, d.deptno, d.dname

FROM emp e, dept d

WHERE e.deptno = d.deptno;

此時沒有部門的僱員以及沒有僱員的部門資訊都沒有出現,因為null的判斷不滿足。

觀察二:使用左(外)串連,希望所有的僱員資訊都顯示出來,即便他沒有部門。

SELECT e.empno, e.ename, d.deptno, d.dname

FROM emp e, dept d 

WHERE e.deptno = d.deptno(+);

此時出現了沒有部門的僱員。也就是左表的資料全部顯示了。

觀察三:使用右(外)串連,將所有的部分資訊都顯示出來。

SELECT e.empno, e.ename, d.deptno, d.dname

FROM emp e, dept d

WHERE e.deptno(+) = d.deptno;

內串連指的就是所有滿足關聯條件的資料出現,不滿足的不出現。外串連就是指定一張資料表中的資料全部都顯示,但是沒有對應的其他表資料,內容為null。

oracle的多表查詢與表的串連

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.