zoukankan      html  css  js  c++  java
  • Oracle 子查询

      1、子查询在SELECT、UPDATE、DELETE语句内部可以出现SELECT语句。内部的SELECT语句结果可以作为外部语句中条件子句的一部分,也可以作为外部查询的临时表。子查询的类型有:

      ① 单行子查询:不向外部返回结果,或者只返回一行结果。

      ② 多行子查询:向外部返回零行、一行或者多行结果。

      2、ANY 和 ALL

      ①<any:比子查询结果中任意的值都小,也就是说,比子查询结果中最大值还小,那么同理>any表示比子查询结果中最小的还大。

      SELECT ENAME,JOB,SAL FROM EMP WHERE SAL

      ②ALL与关系操作符一起使用,表示与子查询中所有元素比较。>ALL:比子查询结果中所有值还要大,也就是说,比子查询结果中最大值还要大。<all表示比最小值还要小。< p="">

      SELECT ENAME,JOB,SAL FROM EMP WHERE SAL>ALL (SELECT SAL FROM EMP WHERE JOB='SALESMAN')

      3、Oracle中的伪列

      在Oracle的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改操作。接下来学习两个伪列:ROWID和ROWNUM。

      ①ROWID

      表中的每一行在数据文件中都有一个物理地址,ROWID伪列返回的就是该行的物理地址。使用ROWID可以快速的定位表中的某一行。ROWID值可以唯一的标识表中的一行。由于ROWID返回的是该行的物理地址,因此使用ROWID可以显示行是如何存储的。

      ②ROWNUM

      在查询的结果集中,ROWNUM为结果集中每一行标识一个行号,第一行返回1,第二行返回2,以此类推。通过ROWNUM伪列可以限制查询结果集中返回的行数。

      取前5条数据

      SELECT ROWNUM,ENAME,JOB,SAL FROM EMP WHERE ROWNUM<=5;

      排序后取前5条数据

      SELECT ROWNUM,T.* FROM  (SELECT ENAME,JOB,SAL FROM EMP ORDER BY SAL DESC) T WHERE ROWNUM<=5

      分页查询

      SELECT * FROM (SELECT ROWNUM R,ENAME,JOB,SAL FROM EMP WHERE ROWNUM<=10) WHERE R>5

      ③ROWID和ROWNUM的区别

      ROWNUM与ROWID不同,ROWID是插入记录时生成,ROWNUM是查询数据时生成。ROWID标识的是行的物理地址。ROWNUM标识的是查询结果中的行的次序。

  • 相关阅读:
    Windows phone 应用开发系列教程(更新中)
    ios实例开发精品文章推荐(8.14)
    Android开发环境——调试器 DDMS相关内容汇总
    docker 发布应用时添加 git revision
    docker环境下数据库的备份(postgresql, mysql)
    golang web 方案
    golang 1.12 自动补全
    区块链简介
    天空的另一半
    Ecto中的changeset,schema,struct,map
  • 原文地址:https://www.cnblogs.com/linhuide/p/5804828.html
Copyright © 2011-2022 走看看