始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Oracle中rowid和rownum简介

发布时间:  2012/9/17 16:47:28

问题:Oracle将ROWID和ROWNUM区别开了吗?如果他们有区别,那么他们的区别是什么呢?

回答:正如你的地址唯一的标识了你的住处,一个Oracle的rowid唯一的标识了一条数据的物理地址。
rowid提供了你找到这一行数据所需要的所有信息,硬盘号,柱面,块和所在块上的偏移地址。
rownum是一个伪码,一个你可以在SQL*Plus中引用的占位符。rownum可以用于书写专业的sql语句和调整sql。-
 


在sql语句中使用rownum要注意:
正确:where rownum<n;
      where rownum=1;
错误:where rownum>n;
      where rownum=some_num>1
如果你非得这么写的话,这样才正确:
      select * from(
        select rownum rn,t.*  from t
      )
      where rn=3;

例如,为了显示前5条数据,你可以用rownum作为过滤器:
SQL> select rownum,emp.empno,emp.ename,emp.job from emp
  2  where rownum<=5;

    ROWNUM EMPNO ENAME      JOB
---------- ----- ---------- ---------
         1  7369 SMITH      CLERK
         2  7499 ALLEN      SALESMAN
         3  7521 WARD       SALESMAN
         4  7566 JONES      MANAGER
         5  7654 MARTIN     SALESMAN

总之,rowid和rownum的区别是rownum是暂时的而rowid是永久的。
另外,rowid可以用来获取一个数据行,rowid仅仅在单个sql语句内容里面有意义,一种参照取出的数据集的方式。

SQL> select rownum,rowid,empno,initcap(ename),initcap(job),sal from emp;

    ROWNUM ROWID              EMPNO INITCAP(ENAME) INITCAP(JOB)       SAL
---------- ------------------ ----- -------------- ------------ ---------
         1 AAAL+ZAAEAAAAAdAAA  7369 Smith          Clerk           800.00
         2 AAAL+ZAAEAAAAAdAAB  7499 Allen          Salesman       1600.00
         3 AAAL+ZAAEAAAAAdAAC  7521 Ward           Salesman       1250.00
         4 AAAL+ZAAEAAAAAdAAD  7566 Jones          Manager        2975.00
         5 AAAL+ZAAEAAAAAdAAE  7654 Martin         Salesman       1250.00
         6 AAAL+ZAAEAAAAAdAAF  7698 Blake          Manager        2850.00
         7 AAAL+ZAAEAAAAAdAAG  7782 Clark          Manager        2450.00
         8 AAAL+ZAAEAAAAAdAAH  7788 Scott          Analyst        3000.00
         9 AAAL+ZAAEAAAAAdAAI  7839 King           President      5000.00
        10 AAAL+ZAAEAAAAAdAAJ  7844 Turner         Salesman       1500.00
        11 AAAL+ZAAEAAAAAdAAK  7876 Adams          Clerk          1100.00
        12 AAAL+ZAAEAAAAAdAAL  7900 James          Clerk           950.00
        13 AAAL+ZAAEAAAAAdAAM  7902 Ford           Analyst        3000.00
        14 AAAL+ZAAEAAAAAdAAN  7934 Miller         Clerk          1300.00

 


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线