zoukankan      html  css  js  c++  java
  • 视图、同义词、序列


    一、视图
        视图是一条存储起来的 SELECT 语句,是数据的显示方式,通过视图可以限制用户访问行、列、或更新表内容。


    1.1、基表
    组成视图的表称为基表。在 Oracle 中,不能对有多个基表的视图进行更新,此类操作可以利用"替换触发器"完成。


    1.2、视图的更新约束
    [WITH CHECK OPTION] 选项可以约束 对视图更新值 符合 视图的WHERE条件。


    1.3、只读约束
    [WITH READ ONLY] 选项和 视图查询语句包含 GROPU BY/SUM 等聚合函数、DISTINCT 关键字时视图不允许更新。


    1.4、查看视图内容
    DESC user_views;
    SELECT text FROM user_views WHERE view_name='V_READ';

    一个视图的例子:

    CREATE OR REPLACE VIEW myview
    AS
    SELECT * FROM books WHERE price>30
    WITH CHECK OPTION;
    /* 当利用视图插入一个 price<=30 的数据时会报错 */




    二、同义词
    同义词是一个对象的一个别名,利用同义词,可以方便的操纵不同用户模式下的对象,简化编码。

    使用同义词之前要确保用户拥有访问该对象的权限。
    当公有对象(公有同义词)和本地对象具有相同的名称时,本地对象优先。

    ● 公有同义词:DBA建立,所有用户共同拥有。CREATE PUBLIC SYNONYM ...
    ● 私有同义词:用户建立,使用与该用户(对象,可被授权)。

    CREATE OR REPLACE SYNONYM dept  FOR scott.dept;
    SELECT * FROM dept;

    DESC user_synonyms;
    SELECT synonym_name, table_name, table_owner FROM user_synonyms;



    三、序列
        序列是用来生成唯一、连续的整数的数据库对象。它通常用来自动生成主键或唯一键。序列可以按升序、降序排列。
    序列是一个独立型事务,不受提交或回滚事务影响。


    3.1、创建

    CREATE SEQUENCE sequence_name
      [START WITH integer]            /* 序列起始值,升序默认为最小值,降序默认为最大值 */
      [INCREMENT BY integer]        /* 递增量,默认为 1, */
      [MAXVALUE integer | NOMAXVALUE]    /* 最大值,默认为 NOMAXVALUE */
      [MINVALUE integer | NOMINVALUE]    /* 最小值,必须小于等于起始值和 小于最大值 */
      [CYCLE | NOCYCLE]            /* 序列到达最大值后是否循环,默认为 NOCYCLE 不循环 */
      [CACHE integer | NOCACHE];        /* 是否预分配序列号,默认缓存20个序列号 */


    3.2、访问
      NEXTVAL 伪列:返回一个新的序列值。
      CURRVAL 伪列:内存中最后一次引用 NEXTVAL 的返回值,也就是序列的当前值。

    INSERT INTO t1 VALUES(t1_seq.NEXTVAL, 'aaa');
    SELECT t1_seq.CURRVAL FROM dual;


    3.3、修改
        序列建立后只能修改 最大/最小值、增量值、序列号缓存大小,不能修改起始值,并且保证序列最大/最小值符合规则。


    3.4、查看
    DESC user_sequences;
    SELECT * FROM user_sequences WHERE SEQUENCE_NAME = 'T1_SEQ';

  • 相关阅读:
    阿里HBase高可用8年“抗战”回忆录
    Service Mesh 初体验
    阿里云HBase推出普惠性高可用服务,独家支持用户的自建、混合云环境集群
    Ververica Platform-阿里巴巴全新Flink企业版揭秘
    深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么?
    AI加持的阿里云飞天大数据平台技术揭秘
    Nacos 常见问题及解决方法
    数据上云,应该选择全量抽取还是增量抽取?
    一文带你了解 Flink Forward 柏林站全部重点内容
    Oracle数据库中序列(SEQUENCE)的用法详解
  • 原文地址:https://www.cnblogs.com/zhaoxiong/p/8274296.html
Copyright © 2011-2022 走看看