Oracle-其他-ROWNUM_分页、SEQUENCE_主键自增、ROWID_删除指定行

Oracle-其他-ROWNUM_分页、SEQUENCE_主键自增、ROWID_删除指定行

目录




内容

  伪列:数据库中不存在的列。一般指ROWNUM和ROWID。

1、ROWNUM 行号

  不属于任何表,但是可以配合表实现分页功能。

  • 特点:

    • 从1开始
    • 每次递增1
    • 最大值=依据查询结果记录数
  • 注意事项

    • 不能跳过1从大于1的数开始
  • 分页实现

    • 前提:给出每页显示条数 rows,当前页数 curr

    • 结果:显示分页,切给出总记录数

        -- 总记录数
        COUNT() FROM 表 WHERE 条件;
        -- 分页实现
        SELECT RN, 展示字段 FROM (
        	SELECT ROWNUM RN, 展示的字段 FROM 表 WHERE ROWNUM < = CURR * ROWS
        ) WHERE RN > (CURR - 1) * ROWS;
      
  • 示例

    • 1、每页5条,显示EMP表第二页的数据(员工编号,员工姓名)

        SELECT RN, EMPNO, ENAME FROM (
        	SELECT RUWNUM RN, EMPNO, ENAME FROM EMP WHERE ROWNUM <= 10
        ) WHERE RN > 5;
      
    • 2、按员工表员工工资降序显示,每页显示5条,查询第二页员工的编号、姓名、工资

        SELECT RD, EMPNO, ENAME, SAL FROM (
          SELECT  ROWNUM RD, EMPNO, ENAME, SAL FROM (
        		SELECT  EMPNO, ENAME, SAL FROM EMP ORDER BY SAL DESC
          ) WHERE ROWNUM <= 10
        )WHERE RD > 5;
      
    • 效果1-1_示例2:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9EwD52io-1594389486904)(./images/2020-07-10_page-2-desc-sal.png)]

2、SEQUENCE 序列

  序列为ORACLE中的对象之一,一般用于主键自增。

  • 定义

      create sequence seq_test  -- 序列名
      increment by 1                  -- 一次增长
      start with 1                        -- 从1开始
      minvalue 1                         -- 最小值
      maxvalue 100                     -- 最大值
      cycle                                   -- 循环    默认不循环  nocycle
      cache;                             -- 缓存 默认缓存     nocache 不缓存
    
  • 使用:一般用于主键

    • 主键:唯一非空
    • 所以创建序列的时候一般使用默认选项。
  • 主键自增实现:

      INSERT INTO 表 VALUES (序列, VALUE1, VALUE2, ..., VALUEN);
    

3、ROWID 行ID

  ROWID行或者记录的唯一标志,ORACLE数据自动添加的,一般用于删除指定行。

  • 示例:删除STUDENT表中第5~10条数据(STUDENT表创建在博文‘Oracle-DDL-建表及约束实例’中,或者自己新建一个表)

      DELETE FROM STUDENT WHERE ROWID IN(
      	SELECT RD FROM (
      		SELECT ROWNUM RN, ROWID RD FROM STUDENT WHERE ROWNUM <= 10
      	 )WHERE RN >= 5
       );
    

后记

  所有的数据库测试,如果没有明确指定,都是使用scott用户下的4张表.
  本项目为参考某马视频开发,相关视频及配套资料可自行度娘或者联系本人。上面为自己编写的开发文档,持续更新。欢迎交流,本人QQ:806797785

前端项目源代码地址:https://gitee.com/gaogzhen/vue-leyou
后端JAVA源代码地址:https://gitee.com/gaogzhen/JAVA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaog2zh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值