内连接,包括等值连接 和 非等值连接。
员工表emp和部门表dept的笛卡尔集(笛卡尔集表=列数之和,行数之积,笛卡尔集表内中有些数据是不符合要求的)
selectemp.ename,dept.dname fromemp,dept;
使用等值连接/内连接@H_502_36@(只能使用=号),显示员工的编号,姓名,部门名,使用表别名简化
selectemp.empno,emp.ename,dept.dname,dept.deptno fromemp,dept whereemp.deptno=dept.deptno;
使用非等值连接@H_502_36@(不能使用=号,其它符号可以,例如:>=,<=,<>,betwen and等),显示员工的编号,姓名,月薪,工资级别
selecte.empno,e.ename,e.sal,s.grade fromempe,salgrades wheree.salbetweens.losalands.hisal;
使用外连接,按部门10,20,30,40号,统计各部门员工人数,要求显示部门号,部门名,人数
部门号 部门名 人数
10 ACCOUNTING 3
20 RESEARCH 5
30 SALES 6
40 OPERATIONS 0
等值连接/非等值连接/内连接@H_502_36@:只会查询出多张表中,根据某个字段匹配,符合条件的记录,不符合条件的记录是不会存在的@H_502_36@
左外连接[是oracle专用的,不是sql99规则]:
selectdept.deptno"部门号",dept.dname"部门名",count(emp.empno)"人数" fromdept,emp wheredept.deptno=emp.deptno(+) groupbydept.deptno,dept.dname;
右外连接:
selectdept.deptno"部门号",emp whereemp.deptno(+)=dept.deptno groupbydept.deptno,dept.dname;
使用左外连接,按部门10,40号,统计各部门员工人数,要求显示部门号,部门名,人数,且按人数降序排列
selectdept.deptno"部门号",dept.dname orderby3desc;
使用自连接,显示"SMITH的上级是FORD"这种格式
selectusers.ename||'的上级是'||boss.ename fromempusers,empboss whereusers.mgr=boss.empno;
只有13条记录,不含有KING
基于上述问题,将KING的上级是“”显示出来
selectusers.ename||'的上级是'||boss.ename fromempusers,empboss whereusers.mgr=boss.empno(+);
14条记录
注意:自连接也用到内连接和外连接@H_502_36@
原文链接:https://www.f2er.com/oracle/212702.html