系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 数据库 > oracle > 详细页面

Oracle基础(六)之序列,视图,索引

时间:2020-09-10来源:www.pcxitongcheng.com作者:电脑系统城

一、序列sequence

sequence是Oracle数据库中一种特殊的对象,能够产生连续的整数值,可以为数据库中多个对象共同使用,主要用于作为主键值。
1.创建序列
 起始值 start with:1
 步长:increment by:1
 最大值:maxvalue:100
 最小值:minvalue:1
 循环:cycle|nocycle
 缓冲区:cache 20|nocache(默认20)
  create sequence s1;
  注: a) 各可选项位置不先后次序
     b) 当increment by n为正数时,
          默认maxvalue为: 1E+27 , 默认minvalue为: 1
          当increment by n为负数时,
          默认maxvalue为: -1 , 默认minvalue为: -1E+26
          increment by必须为非零整数,
          加不加NOMAXVALUE效果一样,这本身是默认值
     c) CACHE n可以每次预产生十五个,二十个,放到内存里,提高性能。
          不写默认CACHE 20个
     d) cycle用于循环,到了最大数后循环(不建议使用)
2.使用序列
 nextval:取序列下一个值
 currval:去序列当前值 
    select s1.nextval from dual;
    select s1.currval from dual;
  
    create sequence s2
    start with 100
    increment by 2;
  
    select s2.nextval from dual;
    select s2.currval from dual;
  注:先执行nextval才会启用,启用后才能查询到当前值
    //序列和表的关系
    insert into s_stu(id,name)
    values(s2.nextval,'rui');
3.修改序列
ALTER SEQUENCE sequence
 [INCREMENT BY n]
 [{MAXVALUE n | NOMAXVALUE}]
 [{MINVALUE n | NOMINVALUE}]
 [{CYCLE | NOCYCLE}]
 [{CACHE n | NOCACHE}]
        注: sequence不能修改起始值
    alter sequence s_stu_id
    increment by -2;
4.删除序列
   drop sequence sequenceName

二、视图view

1.视图
 视图是一个或多个表的部分数据,它可以像表一样进行CRUD(Create、Retrieve、Update、Delete)操作,但没有具体的存储数据结构,它以一个select语句的形式存在数据库中。
   本质: 一条有名字的select语句
   表现: 一到多张表的部分内容
   作用:提高检索的效率
      表 10000条数据 
      经常用的10条数据查询出来放在视图中。
从数据字典表中查询创建的视图:
   select view_name
   from user_views;
2.创建视图 
 create view 视图名字
 as 子查询
   eg:
    //授给briup创建视图的权限
      conn system/system;
      grant create view to briup;
  
    create view v1
    as
    select id,last_name,salary,dept_id
    from s_emp
    where dept_id=41;
  
 CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[, alias]...)]
 AS subquery     
 [WITH CHECK OPTION  [constraint 约束名]]
 [WITH READ ONLY]
  注: a) or replace: 如有相同名字的视图对象,替换。
      b) force: 如subquery中源表不存在,先创建视图对像,这时视图对象虽创建,但不能正常使用。
      默认值为noforce, 即源表不存在,不能正常创建视图。
     c) with check option: 表示可以进行插入、更新和删除操作,
        但应该满足WHERE子句的条件。
     d) 视图的查询可以使用复杂的SELECT语法,包括连接/分组查询和子查询
     e) 在没有WITH CHECK OPTION和WITH READ ONLY的情况下,查询中不能使用ORDER BY子句
     f) 如果没有为WITH CHECK OPTION约束命名,系统会自动为之命名,形式为SYS_Cn
      eg: 创建一视图:
                     create or replace view a 
           as
           select id from s_emp
                     where id<9;
     g) with read only: 只允许进行select操作。
 注: 当对建立视图的那张真正的表进行修改(插入、更新和删除)后,
   通过视图查看到的数据是修改以后的数据。
3.视图分类
 1) 简单视图
   数据来源于一个表,
   不包含函数以及进行分组,
   可以进行DML操作;
 2) 复杂视图
    数据来源于多个表,
    包含函数以及进行分组,
    不可以进行DML操作;  
4.修改视图
   使用or replace直接覆盖 替换
5.删除视图
    drop view view_name;

三、索引index

1.索引
  索引是Oracle中一种的对象,数据库用其以加快检索速度,几乎所有的关系型数据库中都采用b*tree类  型索引,也是被最多使用的。其树结构与二叉树比较类似,根据rowid快速定位所访问的记录。
      相当于书的目录是一样的。
2、创建索引
 1) 自动创建索引
   在创建主键约束、唯一键约束
   以及使主键约束、唯一键约束
   生效时会自动创建唯一索引。 
   select user_indexes;
 2)手动创建索引
    create index in1
    on s_stu(gender);
3.使用索引
   1)列频繁用于where子句或连接条件中
   2)列的取值范围较广
   3)表很大,记录数量较多
   4)查询返回的结果占总记录数的百分比在2~4%内
   5)索引并不是越多越好
4、删除索引
  DROP INDEX index_name
5.查询自动索引
    select index_name
    from user_indexes
    where table_name='S_STU';
分享到:

相关信息

  • sql in查询元素超过1000条的解决方案

    1、方案一:核心思路是,将集合拆分,使用or 连接。 2、方案二:用子查询(临时表)+关联查询...

    2023-03-06

  • Navicat设置Oracle数据库主键自增的方法步骤

    天工作的时候,用到了oracle数据库建表,发现navicat中对于oracle的支持没有那个主键自增的按钮,下面这篇文章主要给大家介绍了关于Navicat设置Oracle数据库主键自增的方法步骤,需要的朋友可以参考下...

    2023-03-06

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载