zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    AIDL interface XXX should be declared in a file
    ubuntu下安装android sdk运行模拟器出现错误:
    C# Winform使用Windows Media Player播放多媒体整理
    Asp.Net Core IIS发布后PUT、DELETE请求错误405.0
    Js 判断浏览器类型整理
    Asp.Net Core 框架源码地址
    ASP.NET Core中使用Razor视图引擎渲染视图为字符串(转)
    Asp.Net Core 自定义设置Http缓存处理
    ASP.NET Core -中间件(Middleware)使用
    Asp.Net Core 通过自定义中间件防止图片盗链的实例(转)
  • 原文地址:https://www.cnblogs.com/HUCHEN/p/9949282.html
Copyright © 2011-2022 走看看