您好,登錄后才能下訂單哦!
多表查詢,包括等值連接、非等值連接、外連接、自連接。
內連接,包括等值連接 和 非等值連接。
員工表emp和部門表dept的笛卡爾集(笛卡爾集表=列數之和,行數之積,笛卡爾集表內中有些數據是不符合要求的)
select emp.ename,dept.dname from emp,dept;
使用等值連接/內連接(只能使用=號),顯示員工的編號,姓名,部門名,使用表別名簡化
select emp.empno,emp.ename,dept.dname,dept.deptno from emp,dept where emp.deptno = dept.deptno;
使用非等值連接(不能使用=號,其它符號可以,例如:>=,<=,<>,betwen and等),顯示員工的編號,姓名,月薪,工資級別
select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;
內連接查詢:只能查詢出符合條件的記錄 外連接查詢:既能查詢出符合條件的記錄,也能根據一方強行將另一個方查詢出來 |
使用外連接,按部門10,20,30,40號,統計各部門員工人數,要求顯示部門號,部門名,人數
部門號 部門名 人數
10 ACCOUNTING 3
20 RESEARCH 5
30 SALES 6
40 OPERATIONS 0
等值連接/非等值連接/內連接:只會查詢出多張表中,根據某個字段匹配,符合條件的記錄,不符合條件的記錄是不會存在的
左外連接[是oracle專用的,不是SQL99規則]:
select dept.deptno "部門號",dept.dname "部門名",count(emp.empno) "人數" from dept,emp where dept.deptno = emp.deptno(+) group by dept.deptno,dept.dname;
右外連接:
select dept.deptno "部門號",dept.dname "部門名",count(emp.empno) "人數" from dept,emp where emp.deptno(+) = dept.deptno group by dept.deptno,dept.dname;
使用左外連接,按部門10,20,30,40號,統計各部門員工人數,要求顯示部門號,部門名,人數,且按人數降序排列
select dept.deptno "部門號",dept.dname "部門名",count(emp.empno) "人數" from dept,emp where dept.deptno = emp.deptno(+) group by dept.deptno,dept.dname order by 3 desc;
使用自連接,顯示"SMITH的上級是FORD"這種格式
select users.ename || '的上級是' ||boss.ename from emp users,emp boss where users.mgr = boss.empno;
只有13條記錄,不含有KING
基于上述問題,將KING的上級是“”顯示出來
select users.ename || '的上級是' ||boss.ename from emp users,emp boss where users.mgr = boss.empno(+);
14條記錄
注意:自連接也用到內連接和外連接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。