• Oracle单表查询(一)


    1.1获取表中所有的行与列

    若领导要看所有员工的信息,大家应该都会用,直接select * 就可以了。

    1.2从表中检索出部分行

      例如我们只想看job是‘salesman’的员工,则增加判断条件 where job='SALESMAN'(此处必须是大写,oracle的关键字、表名、用户名、密码是不区分大小写的,但是此处是具体的字段值,区分大小写~!),为了方便大小写的两种情况都附上

     1.3查找空值

     oracle中查找某一列为空的方法是用 ‘is null’,而非'= null',例如我们要查询没有提成的员工信息

     null不支持加减乘除以及大小比较、相等比较,否则只能返回空

    1.4将空置转换为实际的值

    比如我们要查询所有的员工姓名以及他们的提成,并把提成为空的置为0,在这里有两种写法,第一种是使用nvl

    select ename,nvl(comm) from EMP;

    第二种是使用coalesce

    相对于nvl来说coalesce支持多个参数,可以直接返回第一个不为空的值,例如我们先创建一个视图(以后会介绍)

    CREATE or REPLACE VIEW v as
    (SELECT null as c1,null as c2, 1 as c3, null as c4,2 as c5, null as c6 FROM dual)
    UNION ALL
    (SELECT null as c1,null as c2,null as c3,3 as c4,null as c5,2 as c6 from dual);


    select * from v;

    这时我们去查询,每一行不为空的第一个元素,直接
    SELECT coalesce(C1,C2,C3,C4,C5,C6)FROM v;

    
    

     如果要用nvl完成这个功能(嵌套好多层)

    SELECT nvl(nvl( nvl( nvl(nvl(c1,c2),c3),c4),c5),c6) as 第一个不为空的 from v;

    1.5查询满足多个条件的行

      查询部门10中所有没有提成的员工

    SELECT * FROM EMP WHERE DEPTNO=10 AND comm  is null

    查询部门20中工资不超过2000的员工

    SELECT * from EMP WHERE DEPTNO=20 AND SAL<=2000

    只需要用‘and’ 拼接where的条件就可以了

    1.6从表中检索部分列

        之前查询的列都是直接  * 全出查出,这样会导致效率低下,一般我们需要什么字段就去查什么字段,例如我们想查看部门20的员工编号、姓名、上级编号

    select EMPNO,ENAME,MGR FROM EMP WHERE DEPTNO=20;

    1.7给列取别名

    在1.6的查询中,我们想把EMPNO显示为‘编号’,ENAME显示为‘姓名’,‘MGR’显示为上级,则需要使用AS

    select EMPNO as 编号,ENAME as 姓名,MGR as 上级 FROM EMP WHERE DEPTNO=20;

    其实as是可以省略的

    select EMPNO  编号,ENAME  姓名,MGR  上级 FROM EMP WHERE DEPTNO=20;

  • 相关阅读:
    Java实现 洛谷 P1085 不高兴的津津
    Java实现 洛谷 P1085 不高兴的津津
    Java实现 洛谷 P1085 不高兴的津津
    Java实现 洛谷 P1085 不高兴的津津
    Java实现 洛谷 P1422 小玉家的电费
    Java实现 洛谷 P1422 小玉家的电费
    form表单嵌套,用标签的form属性来解决表单嵌套的问题
    SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片
    SpringMVC上传图片总结(1)---常规方法进行图片上传,使用了MultipartFile、MultipartHttpServletRequest
    Win10安装后必做的优化,解决磁盘100%占用
  • 原文地址:https://www.cnblogs.com/HUCHEN/p/9949282.html
Copyright © 2020-2023  润新知