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:
-
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