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标识的是查询结果中的行的次序。

  • 相关阅读:
    sabaki and leelazero
    apply current folder view to all folders
    string operation in powershell
    wirte function in powershell
    add environment path to powershell
    Module in powershell
    sql prompt
    vmware中鼠标在部分区域不能使用
    调整多个控件的dock的顺序
    行为型模型 策略模式
  • 原文地址:https://www.cnblogs.com/linhuide/p/5804828.html
Copyright © 2011-2022 走看看