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


    一、序列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';
  • 相关阅读:
    Sum of a Function(区间筛)
    (01背包)输出方案数
    删边求概率
    完全背包输出方案数(dp)
    二分
    Just Arrange the Icons(模拟)
    Balls of Buma(回文串)
    dp思想
    刷题-力扣-190. 颠倒二进制位
    刷题-力扣-173. 二叉搜索树迭代器
  • 原文地址:https://www.cnblogs.com/shizt/p/13634674.html
Copyright © 2020-2023  润新知