粤嵌打卡第56天(Oracle数据库中序列、索引、视图)

本文深入探讨了Oracle数据库中的序列、索引和视图三大核心特性。详细介绍了序列的使用方法,包括创建、查询和删除;阐述了索引的原理及其对查询效率的提升作用,演示了索引的创建与维护;解析了视图的概念、分类及应用场景,展示了如何通过视图优化查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle中序列、索引、视图

1、序列

我们在mysql中要生成自增的id,必须使用auto_increment关键字,但是Oracle中不支持此自增关键字、只能使用序列来生成一系列自增(减)的整数值。

  • 首先我们在PLSQL可视化工具对某个表来创建序列Sequences

  • 使用Sequences

    • 序列号名.nextval 查询序列下一个自增id

    • 序列号名.nextval 查询序列下一个自增id

    • – 序列号名.currval 查询序列当前自增id

    • drop sequence 序列号名 (删除序列号)

      select * from emp2;
      create table emp2 as select * from emp
      insert into emp2 values(sq_emp.nextval,sysdate)
      select sq_emp.currval from emp2
      

2、索引

索引:为了提高查询效率添加的列

  • 添加索引的意义:

当我们oracle中没有使用索引查询数据时,会在大表中根据每个数据区(行)遍历所有的列信息,查询到数据后会记录rowid(物理地址),查询效率低下,那么这时候就要添加索引,索引相当于给主表添加了个子表,记录索引列和rowid(物理地址列),根据索引列查询到rowid,直接映射到大表的数据区,查询区内的所有列信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BBN1A32u-1596544053514)(upload\image-20200804181645359.png)]

  • 添加索引

    -- 添加唯一索引
    create unique index ind_emp_ename on emp(ename);
    -- 添加普通索引
    create index ind_emp_ename on emp(ename);
    
  • 删除索引

    drop index ind_emp_ename;
    
  • 修改索引

    -- 修改索引
    alter table emp add constraint uq_ename unique(ename);
    

    3、视图

    • 本质:不含物理数据;仅仅包含一条查询的sql; 对视图的查询就是对视图上捆绑的sql进行嵌套查询;

    • 优点: 可以使用视图进行某些物理数据隐藏

      ​ 对数据提前做输出整理(整理到一个sql查询中)

      --创建视图
        create or replace view v_emp_dept as 
               select e.empno,e.ename,e.job,e.deptno,d.dname,d.loc
               from emp e, dept d
               where e.deptno = d.deptno;
      
      • 视图的分类:
        简单视图: 数据来自一张表,并且没有数据变形(数据变形:通过 group by分组后的数据就是数据变形)

        ​ 可以根据视图的数据对应到物理的数据区

      ​ **复杂视图:**数据来自多张表;或者有数据变形;

      ​ 不能通过视图数据对应到物理数据区

      复杂视图示例代码: 对复杂sql执行查询操作,后续查询时只需嵌套查询视图名即可

       create view v_deptsal as select deptno, sum(sal) sum_sal from emp group by deptno;
      
       select * from v_deptsal;
      

    – 视图的意义: 优化查询; 所以视图没有特殊要求的时候只用来查询;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值