• Oracle的视图、索引、同义词和序列


    一、视图
    create view viewname as select语句 [with read only] | [with check option]
    drop view viewname
    alter view viewname as select语句


    二、索引
    1. 简介

    • 查询性的表,要多建索引; 修改型的表,要少建索引
    • 索引有唯一索引的和非唯一索引两种
    • oracle提供了B树,散列,位图等索引类型,主要使用B树索引和位图索引。
    • B树索引是默认条件下创建的,可以是唯一的也可以是非唯一的,可以是基于一列的,也可以是多列的。B树索引在检索高基数数据列时有很好的性能,对于取出较小的数据,B树索引也更有效。但是当检查范围超过表的10%时,就不行了。
    • 位图索引主要用于决策支持系统或者静态数据,不支持行级锁定。位图索引可以是单列的,也可以是多列的。最好用于小型或者中型群集列。位图以一种压缩格式存放,占用的空间小。

    2. 创建索引
    create [unique] index 索引名 on 表名(fieldname[asc|desc], fieldname,...) [with {primary| disallownull|ignorenull}] tablespace 表空间名

    此外,constraint条件子句的功能类似于索引,并且它也可以建立表之间的关联性。注意这个子句是create表的子句。
    单一字段索引语句格式:constraint constraintname {primary key|unique|references foreigntable[(foreignfield1, foreignfield2)]}
    多字段索引语句格式:
    constraint constraintname {primary key(primary1, primary2,...) | unique(unique1, unique2,...)|foreign key(ref1, ref2,...)| references foreigntable[(foreignfield1, foreignfield2,...)] }

    三、同义词

    • 同义词是表,视图,序列,存储函数,包,快照,或者其他同义词的另一个名字。同义词有公共的和私有的之分。在本地数据库同义词还可以通过链接表示另一个数据库的对象。使用同义词可以有以下优点:引用对象无需指出对象的所有者和数据库
    • 为一个表创建同义词的方法是:create public|private name for [username.]tablename
    • 不能为抽象数据类型创建同义词,当创建同义词时,oracle不检查同义词的有效性。所以用户应该自己测试。删除同义词的语句是drop SYNONYM name(private的),或者drop public SYNONYM name(public的).
    • 用户可以删除自己的任何私有同义词,但是要想删除其他用户的私有同义词,必须拥有drop any synonym的权限,要想删除public同义词,必须拥有drop public synonym权限。

    四、序列

    • 序列是多个用户能够以此产生唯一整数的数据库对象,可以用它来自动产生主键值,当然不必是只包含序列的值。使用序列时,不保证将生成一系列连续的值
    • 创建序列的语句是create sequence 序列名 keyword。其中的keyword包括start with, increment by(降序为负), minvalue(默认为nominvalue,即1和-10E26), maxvalue(默认为nomaxvalue,即-1和10E26), cycle, nocycle, cache, nocache
    • 修改序列的语句是alter sequence 序列名 keyword
    • 删除序列的语句是drop sequence 序列名
  • 相关阅读:
    tf.function :图执行模式(转载)
    TFRecord:TensorFlow 数据集存储格式(转载)
    tf.keras.Model和tf.keras.Sequential
    tf.keras.Input
    IOS逆向-砸壳笔记
    ios调试-查看日志
    用xcode9编译出ios越狱机程序使用的dylib
    docker运行中的container怎么修改之前run时的env
    (转)解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
    (转) mysql中left join,right join,inner join的区别
  • 原文地址:https://www.cnblogs.com/yuepeng/p/1983983.html
Copyright © 2020-2023  润新知