1 排序:对查询返回的结果,根据某一个列或者某几个列的列值大小进行升序或者降序排列。
  1)根据某一个列的列值大小进行升序或者降序排列
    格式:
      select 列名/* from 表名
      order by 列名 asc/desc
      asc: 升序 ,默认值
      desc:降序
    案例:查询emp表中员工的编号,姓名,职位,工资,奖金,最后根据员工的编号进行降序排列
      select empno,ename,job,sal,comm
      from emp
      order by empno desc
    案例:查询emp表中员工的姓名,职位,工资,所在部门的编号,最后根据工资进行升序排列
      select ename,job,sal,deptno
      from emp
      order by sal
    案例:查询emp表中员工的姓名,上级领导编号,入职时间,以及职位,最后根据入职时间进行升序排列。
      select ename,mgr,hiredate,job
      from emp
      order by hiredate asc
    案例:查询emp表中员工的编号,姓名,职位以及所在部门的编号,最后根据部门编号进行降序排列
      select empno,ename,job,deptno
      from emp
      order by deptno desc

  2) 根据两个列的列值大小进行排序
    格式:
      select */列名 from 表名
      order by 列名1 asc/desc,列名2 asc/desc
    分析:首先根据列名1中的列值大小进行升序或者降序排列,如果列名1中列值大小一致,根据列名2中的列值大小进行升序或者降序排列。
    案例:查询emp表中员工的编号,姓名,职位,以及员工所在部门的编号,最后根据部门编号进行升序排列,如果部门编号一致,根据员工的编号进行降序排列
      select empno,ename,job,deptno
      from emp
      order by deptno asc , empno desc
    案例:查询emp表中员工的姓名,职位,工资,奖金以及入职时间,最后根据工资进行升序排列,如果工资一致根据入职时间也进行升序排列
      select ename,job,sal,comm,hiredate
      from emp
      order by sal ,hiredate asc

2 nvl()函数:
  1)数字类型的数据可以进行算术运算
    案例:查询emp表中员工的编号,姓名,工资,以及年薪
      年薪 = 工资 * 12
      select empno,ename,sal,sal*12 年薪
      from emp
    案例:查询emp表中员工的编号,姓名,工资,奖金以及年薪
      年薪 = 工资*12+奖金
      select empno,ename,sal,comm,sal*12+comm 年薪
      from emp
  2)使用+连接null和数字返回的结果也为null
  3)nvl()函数:
    nvl(列名,数值):如果列中列值不为null,返回该列的列值;反之如果该列中列值为null,返回数值。
    nvl(comm,0): 如果奖金不为null,返回奖金的值;反之如果奖金为null,返回0.
    案例:查询emp表中员工的姓名,职位,工资,奖金以及年薪
      年薪 = 工资 * 12 + 奖金

3 带条件的查询语句
  格式:
    select */列名 from 表名
    where 条件
    order by 列名 asc/desc
  1) 关系运算符:>,>=,<,<=,=(等于),!=(不等于),<>(不等于)
    select * from emp
    where empno = 7499
    案例:查询emp表中名字是'KING'的编号,姓名,职位,工资,以及入职时间
      select empno,ename,job,sal,hiredate
      from emp
      where ename = 'KING'
    案例:查询emp表中工资高于2000的所有员工的编号,姓名,职位,工资
      select empno,ename,job,sal
      from emp
      where sal > 2000
    案例:查询emp表中职位是MANAGER的员工的所有信息
      select * from emp
      where job = 'MANAGER'
    案例:查询emp表中工资不是3000的员工的姓名,职位,工资(两种写法)
      select ename,job,sal from emp
      where sal <> 3000
      select ename,job,sal from emp
      where sal != 3000
  2) 列名 is null : 判断该列的列值是否为null
    案例:查询emp表中奖金为null的员工的编号,姓名,奖金
      select empno,ename,comm from emp
      where comm is null
    案例:查询emp表中没有上级领导的员工的编号,姓名,工资,职位以及上级领导编号
      select empno,ename,sal,job,mgr from emp
      where mgr is null
      列名 is not null :判断该列的列值不为null
    案例:查询emp表中奖金不为null 的员工的编号,姓名,职位,工资,奖金,根据奖金进行升序排列
      select empno,ename,job,sal,comm
      from emp
      where comm is not null
      order by comm asc
    案例: 查询emp表中含有上级领导的所有员工的编号,姓名,职位,领导编号,以及入职时间,最后根据入职时间进行降序排列
      select empno,ename,job,mgr,hiredate
      from emp
      where mgr is not null
      order by hiredate desc
  3) like:模糊查询
    %:指代任意0或者多个字符
    _: 指代任意的一个字符
    案例:查询emp表中姓名以S开头的所有员工的姓名,职位
    分析:以'S'开头,'S'的后面可能有字母也可能没有字母 S%
      select ename,job from emp
      where ename like 'S%'
    案例:查询emp表中姓名以S结尾的员工的姓名
      select ename from emp
      where ename like '%S'
    案例:查询emp表中名字以K开头员工的所有信息
      select * from emp
      where ename like 'K%'
    案例:查询emp表中名字包含K的员工的姓名
    分析:包含K
      第1种可能:以K开头 K%
      第2种可能:以K结尾 %K
      第3种可能:K在姓名中间 %K%
      %K%所有的可能
        select ename from emp
        where ename like '%K%'
    案例:查询emp表中名字的倒数第2个字母N的员工的姓名
    分析:倒数第2个字母N,N的后面一定有一个字母(_),在N的前面可能有也可能没有字母(%) %N_
      select ename from emp
      where ename like '%N_'
    案例:查询emp表中名字的倒数第3个字母A的员工的姓名
      select ename from emp
      where ename like '%A__'

      not like
    案例:查询emp表中名字不是以K开头的员工姓名
      select ename from emp
      where ename not like 'K%'
    案例:查询emp表中不包含K的所有员工的编号,姓名,最后根据员工的编号进行降序排列
      select empno,ename from emp
      where ename not like '%K%'
      order by empno desc
    案例:查询emp表中名字的倒数第2个字母不是L所有员工的信息,最后根据入职时间进行升序排列
      select * from emp
      where ename not like '%L_'
      order by hiredate
  4) 逻辑运算符:and , or ,not
    a) and : 并且,连接并且关系的表达式
      案例:查询工资在1000~3000之间所有员工的编号,姓名,职位,工资,入职时间
        select empno,ename,job,sal,hiredate
        from emp
        where sal >= 1000 and sal <= 3000
      案例:查询emp表中没有奖金并且职位是MANAGER的员工的编号,姓名,职位,工资,奖金,最后根据编号进行升序排序。
        select empno,ename,job,sal,comm
        from emp
        where comm is null and job = 'MANAGER'
        order by empno asc
      案例:查询emp表中名字中不包含S并且工资高于1000的所有员工的编号,姓名,职位,工资,以及入职时间,最后根据入职时间进行降序排列
        select empno,ename,job,sal,hiredate
        from emp
        where ename not like '%S%' and sal > 1000
        order by hiredate desc
  2) or: 或者,用来连接多个或者关系的表达式
    案例:查询emp表中工资高于1000,或者奖金不为null的员工的姓名,职位,工资,奖金,最后根据工资降序排列
      select ename,job,sal,comm from emp
      where sal > 1000 or comm is not null
      order by sal desc
    案例:查询emp表中职位不是PRESIDENT或者姓名中的倒数最后一个字母不是S的员工的编号,姓名,职位
      select empno,ename,job from emp
      where job != 'PRESIDENT' or ename not like '%S'
    案例:查询emp表中没有上级领导或者职位是SALESMAN的员工的编号,姓名,职位,上级领导编号,入职时间,最后根据员工编号进行升序排列。
      select empno,ename,job,mgr,hiredate from emp
      where mgr is null or job = 'SALESMAN'
      order by empno asc
  3) not : 取反
    案例:查询emp表中员工的编号不是7369的员工的所有信息
      select * from emp where empno!=7369
      select * from emp where empno<>7369
      select * from emp
      where not empno = 7369
    案例:查询emp表中工资不是5000的员工的编号,姓名,职位,工资
      select empno,ename,job,sal from emp
      where not sal = 5000

4 聚合函数(分组函数):count(),sum(),avg(),max(),min()
  1) count(*/列名):*,统计表中数据的总条数;列名,统计该列的列值不为null的数据的条数
    案例:查询emp表中员工的总个数
      select count(*) from emp
    案例:查询emp表中含有上级领导的员工的个数
      select count(mgr) from emp
    案例:查询emp表中员工职位种类个数
      select count(distinct job) from emp
    案例:查询emp表中员工所在部门个数
      select count(distinct deptno) from emp
    案例:查询emp表中含有奖金的员工的个数
      select count(comm) from emp
  2) sum(列名):统计该列的列值总和
    案例:查询emp表中员工工资的总和
      select sum(sal) from emp
    案例:查询emp表中员工奖金的总和
      select sum(comm) from emp
  3) avg(列名):统计该列的平均值
    案例:查询emp表中员工的平均工资
      select avg(sal) from emp
    案例:查询emp表中员工的平均奖金
      select avg(comm) from emp
  4) max(列名):统计该列的最大值
    select max(empno) from emp
    案例:查询emp表中员工最高工资和奖金
      select max(sal),max(comm) from emp
  5) min(列名):统计该列的最小值
    案例:查询emp表中员工编号的最小值
      select min(empno) from emp
    案例:查询emp表中员工最低工资和最低奖金
      select min(sal) 最低工资,min(comm) 最低奖金
      from emp
    案例:查询emp表中员工的总人数,工资的总和,平均工资,最高工资以及最低工资,对查询返回列都起别名。
      select count(*) 总人数,sum(sal) 工资总和,avg(sal) 平均工资,max(sal) 最高工资,min(sal) 最低工资
      from emp

5 group by :分组,根据某一个列把数据分成几组,对每一组数据使用聚合函数。
  1)格式:
    select 列名/聚合函数
    from 表名
    where 条件
    group by 列名
    order by 列名/别名/聚合函数 asc/desc
  2)分析:首先根据where条件进行过滤,然后对过滤后的数据使用group by进行分组,之后对每一组的数据使用聚合函数,最后使用order by进行排序
    案例:查询emp表中每个部门的编号,人数,工资总和,平均工资,最后根据工资总和进行降序排列
      select deptno,count(*),sum(sal) 工资总和,avg(sal) 平均工资
      from emp
      group by deptno
      order by 工资总和 desc

      select deptno,count(*),sum(sal),avg(sal)
      from emp
      group by deptno
      order by sum(sal) desc

    案例:查询员工在20号部门或者工资高于2000的信息,根据部门进行分组,求出每个部门编号,人数,平均工资和最低工资,最后根据人数进行升序排列
      select deptno,count(*),avg(sal),min(sal)
      from emp
      where deptno = 20 or sal>2000
      group by deptno
      order by count(*) asc

    案例:查询emp表中含有上级领导并且职位不是MANAGER的员工,以职位分组,查询每一个职位名称,人数,平均工资,最低和最高工资,最后根据人数进行升序排列,如果人数一致根据最高工资进行降序排列
      select job,count(*),avg(sal),min(sal),max(sal)
      from emp
      where mgr is not null and job != 'MANAGER'
      group by job
      order by count(*) asc,max(sal) desc

数据库——Oracle(3)的更多相关文章

  1. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

  2. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:Leshami      原文地址:http://blog.csdn.net/ ...

  3. Oracle 数据库(oracle Database)Select 多表关联查询方式

    Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...

  4. spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置

    spring BasicDataSource 数据源配置 sqlserver数据库 oracle数据库 mysql数据jdbc配置 jdbc.properties 文件信息如下: ---------- ...

  5. 各种数据库(oracle、mysql、sqlserver等)在Spring中数据源的配置和JDBC驱动包----转

    在开发基于数据库的应用系统时,需要在项目中进行数据源的配置来为数据 库的操作取得数据库连接.配置不同数据库的数据源的方法大体上都是相同的,不同的只是不同数据库的JDBC驱动类和连接URL以及相应的数据 ...

  6. JDBC(用Eclipse操作数据库Oracle)的基础操作集合

    JDBC: JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编 ...

  7. [数据库]Oracle和mysql中的分页总结

    Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...

  8. Ubuntu16.04下安装数据库oracle客户端

    在Ubuntu16.04下安装oracle数据库客户端,使Django项目连接到远程Oracle数据库. 1.下载oracle客户端安装包: 进入官网http://www.oracle.com/tec ...

  9. 不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句

    在不同数据库中的使用的分页查询语句: 当前页:currentpage 页大小:pagesize 1. Oracle数据库 select * from (select A.*,rownum rn fro ...

  10. SpringAccess数据库(oracle)构造

    陈科朝:http://blog.csdn.net/u013474104/article/details/44279309 ================ 1.spring 对数据库訪问的支持 当我们 ...

随机推荐

  1. 打开svn时出现 R6034

    An application has made an attempt to load the C runtime library...... 最后发现是因为环境变量path里面有:E:\anacond ...

  2. 一些常见的MySQL配置

    目录 配置 参考 配置 [mysqld] port = 3306 socket = /mysql/log/mysql_3306.sock # mysql的目录(即mysql的文件所在目录) # bas ...

  3. 快速幂 -- cogs1437 转圈游戏

    题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=vJimmkqjW [题目描述] 思路:简单模拟,重点在于如何求这个轮数,由于k的范围过大 ...

  4. 【VS开发】CreateThread给线程函数传递的参数

    CreateThread给线程函数传递的参数   HANDLE WINAPI CreateThread ( __in_opt LPSECURITY_ATTRIBUTES lpThreadAttribu ...

  5. [loj#2005][SDOI2017]相关分析 _线段树

    「SDOI2017」相关分析 题目链接:https://loj.ac/problem/2005 题解: 把上面的式子拆掉,把下面的式子拆掉. 发现所有的东西都能用线段树暴力维护. 代码: #inclu ...

  6. shell 字符

    Shell 中的符号: 在shell中有很多符号代表了一些意思,重点说说 键盘上的符号在shell中的意义. 通配符: ~ 匹配家目录 ?  匹配单个字符.( ?之匹配单一的一个字符.x11 这种的就 ...

  7. Scala(一)安装

    一.环境信息 操作系统:cat /etc/redhat-release JDK:  java -version 二.下载Scala安装包 网址:https://www.scala-lang.org/d ...

  8. SpringBoot 进阶

    SpringBoot 进阶 这里讲两个小方面: 表单验证 AOP 1. 表单验证 SpringBoot 中的表单验证功能步骤如下: 在 controller 类中将用 @PathVariable 和 ...

  9. python读写增删修改ini配置文件

    一,百度百科 .ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的 ...

  10. Eclipse怎么改变@author 姓名

    1 点击windows  然后选择 点击进去选择搜索code Templates  点击选择出现下面的页面 点开comments,里面有给方法,变量 ,类等加注释设置的模板 如:点击Methods  ...