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

Oracle 数据库如何查询行

西安川石 2022-09-21
389


每天一个测试技术

只需几分钟

川石信息 带你学点更好的


川石信息|腾讯课堂

免费试学 | 性能测试




查询行



 where查询语句

 比较条件


= 、 >、 <、 >=、 <=、 !=、 <>、 between and


    -- 查询EMP表显示工资超过2850的雇员姓名和工资。
    select ename,sal from emp where sal > 2850;
    -- 查询EMP表显示工资不在1500~2850之间的所有雇员及工资。
    select * from emp where sal between 1500 and 2850

    左右拉动查看完整代码


    ● between 值1 and 值2 等价于 >=值1 and <=值2


     且,或,非


    and、 or、 not


      -- 查询 岗位 为 CLERK 且部门编号为 20的员工名称 部门编号,工资
      select * from emp where job='CLERK' and deptno=20
      -- 查询 岗位 为 CLERK 或部门编号为 20的员工名称 部门编号,工资
      select * from emp where job='CLERK' or deptno=20
      -- 查询 岗位 不是 CLERK 员工名称 部门编号,工资
      select * from emp where not job = 'CLERK'

      左右拉动查看完整代码


       null


      null不能使用条件判断,只能使用is


        -- 存在佣金的员工名称
        select * from emp where comm is null;
        -- 不存在佣金的员工名称
        select * from emp where comm is not null;
        select * from emp where not comm is null;

        左右拉动查看完整代码


         集合操作


        Union、Union All、Intersect、Minus


        ● Union,并集(去重) 对两个结果集进行并集操作,不包括重复行同时进行默认规则的排序;


        ● Union All,全集(不去重) 对两个结果集进行并集操作,包括重复行,不进行排序 ;


        ● Intersect,交集(找出重复) 对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排 序;


        ● Minus,差集(减去重复) 对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序


          -- 查询工资大于1500 或 含有佣金的人员姓名
          -- union 去除重复行
          select ename from emp where sal>1500
          union
          select ename from emp where comm is not null;
          -- union all 不去除重复行
          select ename from emp where sal>1500
          union all
          select ename from emp where comm is not null;
          -- 查询显示不存在雇员的所有部门号。
          select deptno from dept
          minus
          select distinct deptno from emp
          -- 查询工资大于1500 且 含有佣金的人员姓名
          select ename,sal,comm from emp where sal>1500 intersect
          select ename,sal,comm from emp where comm is not null;

          左右拉动查看完整代码


           模糊查询


          通配符:


          ● %:零个及以上(任意个数的)的字符


          ● _:一个字符


          ● 遇到内容中包含 % _ 使用escape(‘单个字符’)指定转义符


            -- 查询员工姓名中包含字符A的员工信息
            select * from emp where ename like '%A%';
            -- 查询员工姓名中包含第二个A的员工名称信息
            select * from emp where ename like '_A%';
            -- 查询员工姓名中包含字符%的员工名称 岗位 工资 部门编号
            select ename,job,sal,deptno from emp where ename like '%a%%' escape('a');

            左右拉动查看完整代码


             in与exists


            in相当于使用or的多个等值,定值集合 ,如果存在 子查询,确保 类型相同、字段数为1,如果记录多,效 率不高,用于 一些 少量定值判断上


              --10或30部门的雇员信息
              select * from emp where deptno in(10,30);

              左右拉动查看完整代码


              exists条件为true,存在记录则返回结果,后续不再继续 比较查询,与查询的字段无关,与记录有关


                -- exists :条件为true,存在记录,则返回结果,后续不再继续 ,与字段无关,与记录有关
                -- exists 难点: 外层结果集 内层结果集 关系列(没有关系列 true)
                select *
                from emp
                where exists
                (select deptno,dname from dept where dname in ('SALES', 'ACCOUNTING'));

                左右拉动查看完整代码



                排序

                使用 ORDER BY 排序,排序不是真实改变存储结构的顺序,而是获取的集合的顺序。


                ● 顺序 :asc升序(默认) desc降序


                ● 多字段: 在前面字段相等时,使用后面的字段排序


                ● 空排序: 降序为 desc,注意 null 为最后


                  -- 按工资降序
                  select * from emp order by sal desc;
                  -- 多字段排序,按雇员编号降序排序,如果与相同则按部门编号升序排序,部门编号相同则按姓名降序排序
                  select * from emp order by empno desc,deptno,ename desc;

                  左右拉动查看完整代码




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


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


                   往期回顾 

                  Oracle 数据库如何查询列


                  扫码邀你加入

                  软件测试群

                  免费软件测试课

                  川石课堂

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

                  评论