溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle系列:(13)多表查詢

發(fā)布時(shí)間:2020-08-02 01:45:13 來(lái)源:網(wǎng)絡(luò) 閱讀:508 作者:lsieun 欄目:關(guān)系型數(shù)據(jù)庫(kù)

多表查詢,包括等值連接、等值連接、外連接自連接。

內(nèi)連接,包括等值連接非等值連接


員工表emp和部門(mén)表dept的笛卡爾集(笛卡爾集表=列數(shù)之和,行數(shù)之積,笛卡爾集表內(nèi)中有些數(shù)據(jù)是不符合要求的)

select emp.ename,dept.dname
from emp,dept;


使用等值連接/內(nèi)連接(只能使用=號(hào)),顯示員工的編號(hào),姓名,部門(mén)名,使用表別名簡(jiǎn)化

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


使用非等值連接(不能使用=號(hào),其它符號(hào)可以,例如:>=,<=,<>,betwen and等),顯示員工的編號(hào),姓名,月薪,工資級(jí)別

select e.empno,e.ename,e.sal,s.grade
from emp e,salgrade s
where e.sal between s.losal and s.hisal;

Oracle系列:(13)多表查詢


內(nèi)連接查詢:只能查詢出符合條件的記錄

外連接查詢:既能查詢出符合條件的記錄,也能根據(jù)一方強(qiáng)行將另一個(gè)方查詢出來(lái)


使用外連接,按部門(mén)10,20,30,40號(hào),統(tǒng)計(jì)各部門(mén)員工人數(shù),要求顯示部門(mén)號(hào),部門(mén)名,人數(shù)

部門(mén)號(hào) 部門(mén)名        人數(shù)

10     ACCOUNTING    3 

20     RESEARCH      5

30     SALES         6

40     OPERATIONS    0


等值連接/非等值連接/內(nèi)連接只會(huì)查詢出多張表中,根據(jù)某個(gè)字段匹配,符合條件的記錄,不符合條件的記錄是不會(huì)存在的


左外連接[是oracle專用的,不是SQL99規(guī)則]:

select dept.deptno "部門(mén)號(hào)",dept.dname "部門(mén)名",count(emp.empno) "人數(shù)"
from dept,emp
where dept.deptno = emp.deptno(+) 
group by dept.deptno,dept.dname;

Oracle系列:(13)多表查詢


右外連接:

select dept.deptno "部門(mén)號(hào)",dept.dname "部門(mén)名",count(emp.empno) "人數(shù)"
from dept,emp
where emp.deptno(+) = dept.deptno
group by dept.deptno,dept.dname;

Oracle系列:(13)多表查詢


使用左外連接,按部門(mén)10,20,30,40號(hào),統(tǒng)計(jì)各部門(mén)員工人數(shù),要求顯示部門(mén)號(hào),部門(mén)名,人數(shù),且按人數(shù)降序排列

select dept.deptno "部門(mén)號(hào)",dept.dname "部門(mén)名",count(emp.empno) "人數(shù)"
from dept,emp
where dept.deptno = emp.deptno(+) 
group by dept.deptno,dept.dname
order by 3 desc;

Oracle系列:(13)多表查詢


使用自連接,顯示"SMITH的上級(jí)是FORD"這種格式

select users.ename || '的上級(jí)是' ||boss.ename
from emp users,emp boss
where users.mgr = boss.empno;

只有13條記錄,不含有KING

Oracle系列:(13)多表查詢


基于上述問(wèn)題,將KING的上級(jí)是“”顯示出來(lái)

select users.ename || '的上級(jí)是' ||boss.ename
from emp users,emp boss
where users.mgr = boss.empno(+);

14條記錄

注意:自連接也用到內(nèi)連接和外連接

Oracle系列:(13)多表查詢







向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI