Oracle【序列、索引、视图、分页】

1、Oracle序列
语法:create sequence 序列名
 特点1:默认是无值,指针指向没有值的位置
 特点2:序列名.nextval 每次执行值会自增一次,步长为 1
 特点3:序列名.currval查看当前序列的值。[默认是没有,需要创建再执行先]
作用:作为主键使用,动态的获取主键的值,这样新增数据的时候的避免了主键冲突
  --使用的是 序列名.nextval作为主键
注意:主键是非空唯一,不需要主键的值是连续的值,不重复即可

1 --创建默认序列
2 create sequence cc;--创建序列
3 select cc.nextval from dual;--递增的方式去创建序列
4 select cc.currval from dual;--查询当前序列 
 1 --创建测试表
 2 create table student(
 3      tid number(10) primary key,
 4       tname varchar(100) not null
 5       )
 6 --添加测试数据
 7 --之前写法:【多复制多改动很多数据,费时间】
 8 insert into student values(1,‘迪丽热巴‘);
 9 insert into student values(2,‘柚子解说‘);
10 --使用序列添加
11 insert into student values(cc.nextval,‘迪丽热巴‘);
12 insert into student values(cc.nextval,‘柚子解说‘);
1 --创建自定义序列
2 create sequence c1--创建序列
3 start with 5 --设置开始位置
4 increment by 2 --设置步长
5 select c1.nextval from dual
6 select c1.currval from dual
7 --删除序列:drop sequence 序列名
8 drop sequence cc;

2、Oracle索引
作用:提升查询效率,处理大量的数据才会发现索引的强大之处
--特点:显示的创建,隐式的执行
--注意:oracle会自动给表的主键创建索引。[一般是编号,学号等]
使用索引:【创建、删除】

1 --创建语法
2 create index 索引名 on 表名(字段名)
3 --测试数据
4 create index index_student_tname on student(tname)--创建索引
5 select * from student where tname=‘柚子解说‘
6 --删除索引
7 drop index index_student_tname

3、Oracle视图
使用视图:【创建、删除】
创建视图: create view 视图名 as select 对外提供的内容 from 真实表名 
删除视图: drop view 视图名 
视图特点:
 特点1:保护真实表,隐藏重要字段的数据。保护数据。
 特点2:在视图中的操作会映射执行到真实表中
 特点3:可以手动开启只读模式 使用关键字 with read only
注意:视图的创建用户必须具有DBA权限

1 --测试视图
2 --创建视图并对外提供了sid,sname,ssex三个字段
3 create view stu as select sid,sname,ssex from student
4 select * from student--可查询所有的详细数据
5 select * from stu--只能查询到视图对外开放的字段

--视图的只读模式
create view stu2 as select sid,sname,ssex from student with read only

4、分页
当一个表中的数据量庞大时,如果数据一次性全部显示给用户,则造成页面过于庞大,体验感low。
使用:rownum 关键字 :--oracle对外提供的自动给查询结果编号的关键字,与数据没有关系。
注意:rownum 关键字只能做< <=的判断,不能进行> >=的判断

1 --查询员工信息前5条数据[第一页]
2 select rownum,e.* from emp e where rownum<=5
3 select * from (select rownum r,e.* from emp e where rownum <=5) t where r>0;

1 --查询员工信息的6-10条后所有数据[第二页]
2 select * from (select rownum r,e.* from emp e where rownum<=10) t where r>5

1 --查询员工信息的11-15条数据[第三页]
2 select * from (select rownum r,e. * from emp e where rownum<=15) t where r>10;


分页的总结:每页显示n条数据,查询第m页数据 
select * from (select rownum r,e. * from 分页的表 e where rownum<=n*m) t where r>n*m-n;

例子:每页显示3条数据,查询第2页的数据
select * from (select rownum r,e. * from emp e where rownum<=3*2) t where r>3*2-3;
select * from (select rownum r,e. * from emp e where rownum<=6) t where r>3;


灵活应变:

1 --只查询员工姓名,工资。【每页显示3条数据,查询第4页的数据】
2 select * from (select rownum r,e. * from emp e where rownum<=3*4) t where r>3*4-3;
3 select t.ename,t.sal from (select rownum r,e. * from emp e where rownum<=12) t where r>9;


1 --分页查询员工信息按照工资排序
2 select * from (select rownum r,t.* from (select * from emp  order by sal desc) t where rownum<=10 ) where r>5

原文地址:https://www.cnblogs.com/cao-yin/p/9783101.html

时间: 2024-10-07 10:23:16

Oracle【序列、索引、视图、分页】的相关文章

oracle创建序列&amp;索引&amp;视图

---oracle学习 --oracle的管理系统学习 --oracle的数据管理学习 --oracle的用户管理 --oracle二维表管理 --oracle的其他知识 --oracle的序列,视图,索引 --oracle的分页查询 --oracle的数据库备份 --oracle的图形化界面操作 序列 1 --oracle的序列的学习 2 --创建序列 3 --使用 create sequence 序列名 4 --特点1:默认开始是没有值的,也就是指针指在了没有值的位置. 5 --特点2:序列

oracle 序列、视图、索引

序列 创建 在sequences里 作用 生成自动增长(或减少)的整数值 经常添加数据时使用,可控性好 写法:序列名.nextval  获取下一个序列值 序列名.currval  获取当前序列值,不常用. 视图 在物理表的基础上定义的虚拟表 创建 在views里 作用: 把复杂的查询逻辑以视图的形式保存起来,便于查询结果的重用 一般用来查询数据,不用来做数据更新 常用于系统的兼容或迁移 视图不能添加索引,适合数据量小的查询语句 创建视图 写法:select * from 视图名字 物化视图 对普

【Oracle】第三章索引视图序列

第三章索引视图序列 序列是用来生成唯一,连续的整数的数据库对象.序列是用来自动生成主键或唯一键的值. CREATE SEQUENCE  sequence_name START WITH  integer INCREMENT BY  integer MAXVALUE   integer|nomaxvalue MINVALUE    integer|nominvalue CYCLE|NOCYCLE CACHE  integer|nocache; START WITH     指要生成的第一个序列号,

Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age),max(age),min(age),avg(nvl(age,0)) from b_user 1       260     70      10      37.1428571428571 group by:如果前面定义了该字段名  则groupby必须也写上该字段 select name,pw

oracle 序列 视图 索引 同义词

序列 Oracle 12C 之后,Oracle 之中提供的是一种手工的自动增长列控制,而这样的控制在 Oracle 之中使用序列(对象)完成. 序列的创建: CREATE SEQUENCE 序列名称 [INCREMENT BY 步长] [START WITH 开始值] [MAXVALUE 最大值 | NOMAXVALUE] [MINVALUE 最小值 | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE 缓存大小 | NOCACHE] 在此数据字典之中主要包含如下列的数据

Oracle与Mysql主键、索引及分页的区别小结

Oracle与Mysql主键.索引及分页的区别,学习oracle的朋友可以参考下 区别: 1.主键,Oracle不可以实现自增,mysql可以实现自增. oracle新建序列,SEQ_USER_Id.nextval 2.索引: mysql索引从0开始,Oracle从1开始. 3.分页, mysql: select * from user order by desc limit n ,m. 表示,从第n条数据开始查找,一共查找m条数据. Oracle:select * from user sele

[转]Oracle DB 性能视图和数据字典

动态性能视图 用于访问实例内存结构不断变化的状态信息. 在Oracle DB 中还维护着一个关于数据库实例操作和性能的动态数据集.这些动态性能视图以基于数据库服务器内部的内存结构构建的虚拟表为基础.也就是说,这些视图不是驻留在数据库中的传统意义上的表.这就是为什么部分视图在数据库装载或打开之前就能够使用的原因. 动态性能视图包含下列信息: ? 会话 ? 文件状态 ? 作业和任务的进度 ? 锁 ? 备份状态 ? 内存使用率和内存分配 ? 系统参数和会话参数 ?SQL 执行 ? 统计数据和度量 注:

[转]Oracle DB 索引

索引是数据库对象,可以通过创建索引来提高一些查询的性能.在你创建主键或唯一约束条件时,服务器会同时自动创建索引. 索引 索引具有以下特点: ? 是一个方案对象 ? Oracle Server 可用来通过指针加快行检索速度 ? 可通过使用快速路径访问方法迅速找到数据来减少磁盘的输入/ 输出(I/O) ? 与建立索引的表无关 ? 由Oracle Server 自动使用和维护 Oracle Server  索引是一个方案对象,可以通过指针加快行检索速度.可以显式创建索引,也可以自动创建索引.如果没有在

SQL Server和Oracle数据库索引介绍

SQL Server和Oracle数据库索引介绍 1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行. 表或视图可以包含以下类型的索引: 聚集索引 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行.索引定义中包含聚集索引列.每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序. 只有当表包含聚集索引

《oracle每天一练》Oracle之物化视图

相关帖子思考和跟踪 本文转自Ronger 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询.这样对整体查询性能的提高,并没有实质上的好处.1.物化视图的类型:ON DEMAND.ON COMMIT 二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性: