zoukankan      html  css  js  c++  java
  • 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';
  • 相关阅读:
    进度条
    html5 表单新增事件
    html5 表单的新增type属性
    html5 表单的新增元素
    html5 语义化标签
    jq 手风琴案例
    codeforces 702D D. Road to Post Office(数学)
    codeforces 702C C. Cellular Network(水题)
    codeforces 702B B. Powers of Two(水题)
    codeforces 702A A. Maximum Increase(水题)
  • 原文地址:https://www.cnblogs.com/shizt/p/13634674.html
Copyright © 2011-2022 走看看