select e.empno, e.ename, d.deptno, d.dname
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、松溪網(wǎng)站維護(hù)、網(wǎng)站推廣。
from emp e, dept d
where e.deptno = d.deptno;
在之前所使用的查詢操作之中,都是從一張表之中查詢出所需要的內(nèi)容,那么如果現(xiàn)在一個(gè)查詢語句需要顯示多張表的數(shù)據(jù),則就必須應(yīng)用到多表查詢的操作,而多表查詢的語法如下:
SELECT [DISTINCT] * | 字段 [別名] [,字段 [別名] ,…] FROM 表名稱 [別名], [表名稱 [別名] ,…] [WHERE 條件(S)] [ORDER BY 排序字段 [ASC|DESC] [,排序字段 [ASC|DESC] ,…]]。
擴(kuò)展資料:
Oracle 常用的關(guān)聯(lián)查詢:
Oracle外連接:
(1)左外連接 (左邊的表不加限制)。
(2)右外連接(右邊的表不加限制)。
(3)全外連接(左右兩表都不加限制)。
outer join則會(huì)返回每個(gè)滿足第一個(gè)(頂端)輸入與第二個(gè)(底端)輸入的聯(lián)接的行。它還返回任何在第二個(gè)輸入中沒有匹配行的第一個(gè)輸入中的行。
外連接分為三種: 左外連接,右外連接,全外連接。 對應(yīng)SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常我們省略outer 這個(gè)關(guān)鍵字。 寫成:LEFT/RIGHT/FULL JOIN。
在左外連接和右外連接時(shí)都會(huì)以一張表為基表,該表的內(nèi)容會(huì)全部顯示,然后加上兩張表匹配的內(nèi)容。 如果基表的數(shù)據(jù)在另一張表沒有記錄。 那么在相關(guān)聯(lián)的結(jié)果集行中列顯示為空值(NULL)。
1、在使用where進(jìn)行查詢的時(shí)候,對于查詢條件中的字段要指定歸屬表或者表別名。如下圖。
2、如果改為using進(jìn)行查詢的話那就不用指定表別名,using關(guān)鍵字的使用規(guī)則就是等值連接而且連接的字段名稱和字段類型必須要一致。
3、如果在使用了using關(guān)鍵字進(jìn)行查詢的時(shí)候如果添加了表的別名或者是表名,則直接會(huì)報(bào)如下錯(cuò)誤,對于using關(guān)鍵字指定的列名 在查詢中是不能使用表名或者表別名的。
4、并且還有一點(diǎn)需要注意的是using后只能接字段名不能使用 大于? 等于? 小于等符號進(jìn)行比對。
以oracle使用rownum偽列實(shí)現(xiàn)分頁為例:
三表連接分頁示例代碼如下:
select * from (select rownum r,k.kch,k.kcm,cj.cj,x.xh,x.xm from KCB k,CJB cj,XSB x where k.kch = cj.kch and cj.xh = x.xh and rownum=10) where r0
特別注意這樣外層查詢時(shí)由于內(nèi)層查詢的字段有重復(fù)列名,所以內(nèi)層查詢最后不要用*。取完每一個(gè)表字段,這樣很容易報(bào)錯(cuò)(“無效字段”)
外連接 : 使用外連接可以查存不滿足條件的數(shù)據(jù) 符號(+) SQL select e.ename,e.sal,d.dname,d.loc from emp e,dept d 2 where e.deptno=d.deptno(+); 自連接: SQL select w.ename||' work for '||m.job from emp w,emp m 2 where w.empno=m.empno;
以oracle使用rownum偽列實(shí)現(xiàn)分頁為例:
三表連接分頁示例代碼如下:
select * from (select rownum r,k.kch,k.kcm,cj.cj,x.xh,x.xm from KCB k,CJB cj,XSB x where k.kch = cj.kch and cj.xh = x.xh and rownum=10) where r0
特別注意這樣外層查詢時(shí)由于內(nèi)層查詢的字段有重復(fù)列名,所以內(nèi)層查詢最后不要用*。取完每一個(gè)表字段,這樣很容易報(bào)錯(cuò)(“無效字段”)
以兩表為例:
有以下兩張表:
現(xiàn)在要通過deptno字段,在查詢中顯示emp表中全部內(nèi)容和dept表中的dname字段。
可用如下語句:
select?a.*,b.dname?from?emp?a,dept?b?where?a.deptno=b.deptno;
查詢結(jié)果: