暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 数据库高级查询语句方法

西安川石 2022-09-14
237


每天一个测试技术

只需几分钟

川石信息 带你学点更好的


川石信息|腾讯课堂

免费试学 | 性能测试




等值连接


    SQL> ---查询出员工和员工的部门的名称是什么(涉及两个表emp,dept的联合查询,找等值条件  emp.deptno = dept.deptno)
    SQL> ---1.等值查询
    SQL> select e.*,d.dname from emp e,dept d where e.deptno = d.deptno;
    复制

    左右拉动查看完整代码


    笛卡尔积,笛卡尔积(没有等值条件) emp 14条 dept 4条 结果 14*4 = 56条记录


      SQL> select e.empno,e.ename,d.dname from emp e,dept d;
      复制

      左右拉动查看完整代码


      内连接(和等值查询的结果一样) inner join


        SQL> select e.empno,e.ename,d.dname from emp e inner join dept d on e.deptno = d.deptno;
        复制

        左右拉动查看完整代码


        外连接 left [outer] join 左外联,right [outer] join 右外联,full join完全连接


        left [outer] join 左外联:


        rows selected


          SQL> ----3.left [outer] join 左外联,以左表为准 emp e left join dept d,left join左边的emp为左表,left join右边 dept为右表
          SQL> 左外联,以左表emp为准,不管关联的字段deptno是否在右表dept中是否有对应的数据,左表emp的数据全部要显示(注意:查询结果合理,实战中推荐使用左外联)
          左外联,以左表emp为准,不管关联的字段deptno是否在右表dept中是否有对应的数据,左表emp的数据全部要显示
          SQL> select e.empno,e.ename,d.dname from emp e left join dept d on e.deptno = d.deptno;
          复制

          左右拉动查看完整代码


          right [outer] join 右外联,右外联,以右表dept为准,不管关联的字段deptno是否在左表emp中是否有对应的数据,右表dept的数据全部要显示,坐标emp中关联的deptno为null的记录不显示


          full [outer] join 完全连接 都要显示左表和右表的数据,不管左表emp的关联字段deptno为null,还是右表dept的数据deptno=40被左表emp引用(注意:mysql不支持)


          联合查询中的三表联合查询


            SQL> select e.empno,e.ename,e.job,e.sal,d.dname,g.grade
            2 from emp e
            3 left join dept d on e.deptno = d.deptno
            4 left join salgrade g on e.sal between g.losal and g.hisal
            5 order by e.empno
            6 ;
            复制

            左右拉动查看完整代码


            如何使用(+)进行多表查询(注意:该语法在别的数据库不支持,所以不通用,不推荐使用)


              SQL> select e.empno, e.ename, d.deptno, d.dname
              2 from emp e, dept d
              3 where e.deptno(+) = d.deptno;




              EMPNO ENAME DEPTNO DNAME
              ----- ---------- ------ --------------
              7499 ALLEN 30 SALES
              7521 WARD 30 SALES
              7566 JONES 20 RESEARCH
              7654 MARTIN 30 SALES
              7698 BLAKE 30 SALES
              7782 CLARK 10 ACCOUNTING
              7788 SCOTT 20 RESEARCH
              7844 TURNER 30 SALES
              7876 ADAMS 20 RESEARCH
              7900 JAMES 30 SALES
              7902 FORD 20 RESEARCH
              7934 MILLER 10 ACCOUNTING
              7839 KING 10 ACCOUNTING
                                   40 OPERATIONS


              14 rows selected
              复制

              左右拉动查看完整代码


              使用using来实现联合查询


                SQL> select e.empno,e.ename,d.deptno,d.dname from emp e inner join  dept d using(deptno);




                select e.empno,e.ename,d.deptno,d.dname from emp e inner join dept d using(deptno)




                ORA-25154: USING 子句的列部分不能有限定词




                SQL> select e.empno,e.ename,deptno,d.dname from emp e inner join dept d using(deptno);




                EMPNO ENAME DEPTNO DNAME
                ----- ---------- ------ --------------
                7499 ALLEN 30 SALES
                7521 WARD 30 SALES
                7566 JONES 20 RESEARCH
                7654 MARTIN 30 SALES
                7698 BLAKE 30 SALES
                7782 CLARK 10 ACCOUNTING
                7788 SCOTT 20 RESEARCH
                7844 TURNER 30 SALES
                7876 ADAMS 20 RESEARCH
                7900 JAMES 30 SALES
                7902 FORD 20 RESEARCH
                7934 MILLER 10 ACCOUNTING
                 7839 KING           10 ACCOUNTING


                13 rows selected


                SQL>
                复制

                左右拉动查看完整代码





                今天的内容就学习到这里了,每个工作日小编都会更新一个有关测试的小知识,希望大家多多关注我们,一起来学习喔!


                温馨提示:添加老师微信【13691729932】可以获取全套软件测试自学资料!


                 往期回顾 

                Oracle数据库简单查询语句的方法


                扫码邀你加入

                软件测试群

                免费软件测试课

                川石课堂

                文章转载自西安川石,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论