Oracle数据库多表查询
生活随笔
收集整理的這篇文章主要介紹了
Oracle数据库多表查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多表查詢就是說從多個表中獲取相應的數據。 (1)笛卡爾積【連接條件無效或被省略,兩個表的所有行都發生連接,所有行的組合都會返回(n*m)】 SQL> select e.ename,d.dname from emp e,dept d;//無效 SQL> select e.ename,d.dname from emp e,dept d 2? where e.ename='SCOTT';//有效 (2)等值連接(內連接或簡單連接) 兩個表的連接條件的列值必須相等,通常這樣的連接包含一個主鍵和一個外鍵 SQL> select e.ename,d.dname from emp e,dept d 2? where e.deptno=d.deptno 3? and e.ename='SCOTT'; (3)多于兩個表的連接 SQL> create table manager 2? as 3? select ename,deptno,sal,job 4? from emp;?? //創建manager表 SQL> select e.empno,m.ename,m.deptno,d.loc 2? from emp e,manager m,dept d 3? where m.deptno=d.deptno 4? and m.ename=e.ename 5? and e.job=UPPER('manager'); (4)非等值連接【使用其他連接運算符】 SQL> select e.empno,e.ename,e.sal,s.grade 2? from emp e,salgrade s 3? where e.sal 4? between s.losal and hisal; (5)外部連接【外部連接不只列出與連接條件向匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數據行】 SQL> select e.ename,e.deptno,d.dname 2? from emp1 e,dept1 d 3? where e.deptno(+)=d.deptno;//dept1表為不缺乏連接信息的表,emp1表為缺乏連接信息的表外部連接運算符(+)放在缺少相關連接信息的表的一側,它能返回該表中那些在另一個表中沒有得到匹配的記錄。 SQL> select e.ename,e.deptno,d.dname 2? from emp1 e left outer join dept1 d 3? on e.deptno=d.deptno;//左外連接 SQL> select e.ename,e.deptno,d.dname 2? from emp1 e right outer join dept1 d 3? on e.deptno=d.deptno;//右外連接 SQL> select e.ename,e.deptno,d.dname 2? from emp1 e full outer join dept1 d 3? on e.deptno=d.deptno;//全外連接 (6)自然連接 在oralce中使用natural join,也就是自然連接。在Oracle中的join連接中使用using關鍵字,是相對于natural join的。如果是使用natraul join,并且兩張表中如果有多個字段是具有相同的名稱和數據類型的,那么這些字段都將被oracle自作主張的將他們連接起來。但實際上我們有時候是不需要這樣來連接的。我們只需要將他們的多個具有相同的名稱和數據類型的字段中挑選一兩個。這時候我們就需要用到using 關鍵字了。 SQL> select ename,dname 2? from emp1 natural join dept1;//自然連接(會自動搜索表結構,判斷是否有列完全相同,完全相同就作為連接的條件) SQL> select ename,deptno,dname 2? from emp join dept using (deptno);//using的使用 SQL> select ename,emp.deptno,dname 2? from emp join dept using (deptno);//using()里面的字段不能指定前綴,否則會出錯 1、如果在使用using關鍵字時,而且select的結果列表項中包含了using關鍵字所指明的那個關鍵字,那么請不要在select的結果列表項中對該關鍵字指明它屬于哪個表。 2、using中僅能使用一個列名。 3、natural join關鍵字和using關鍵字是互斥的,也就是說不能同時出現。 (7)自連接【把一個表看做兩張表,起兩個別名,然后再根據要求進行連接】 SQL> select e.ename as "Employee Name",e.mgr,m.ename "Manager Name" 2? from emp1 e,emp1 m 3? where e.mgr=m.empno 4? and e.ename='SMITH';
CUUG
更多oracle視頻教程請點擊:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6
CUUG
更多oracle視頻教程請點擊:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6
轉載于:https://blog.51cto.com/19880614/1150098
總結
以上是生活随笔為你收集整理的Oracle数据库多表查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跟我一起考PMP---项目时间管理
- 下一篇: php编码处理的文章一篇