首页 > 其他分享 >MogDB-openGauss视图与物化视图

MogDB-openGauss视图与物化视图

时间:2024-03-15 15:26:17浏览次数:27  
标签:name 数据库 MogDB 视图 物化 模式 warehouse openGauss

MogDB/openGauss 视图与物化视图

一个数据库通常分成外模式、模式和内模式三种模式:

  • 外模式:也叫用户模式,是用户所能访问的一组数据视图,和某一应用的逻辑结构有关,是从模式中导出的一个子集,针对某一具体应用控制访问的可见性。
  • 模式:数据库内所包含的逻辑结构,包括基本表的定义等。
  • 内模式:数据库内部数据的存储方式,包括数据是否加密、压缩等。

数据库中的视图属于数据库的外模式,可以在不暴露整个数据库逻辑模型的基础上,让用户访问所需的数据。

创建一个与 warehouse 表相关的视图,只能显示仓库的名称,具体语句如下:

CREATE VIEW warehouse_name AS SELECT w_name FROM warehouse;

创建一个与 warehouse 表相关的视图,只显示编号小于 10 的仓库的名称和地址,具体语句如下:

CREATE VIEW warehouse_idlt10 AS SELECT w_name, w_street_1 FROM warehouse WHERE w_id < 10;

访问视图的方法和访问基本表完全一样,因此可以直接使用 SELECT 语句来访问视图。由于视图本身是一个“虚表”,是由模式映射出来的一种外模式,本身不保存数据,因此当基本表的数据发生变化时,视图中的数据也会同时发生变化。

视图本身不保存数据,这种特质也决定了无法对所有视图进行 INSERT、UPDATE、DELETE 操作,通常数据库只支持针对比较简单的视图做增删改的操作,但不同的数据库,其实现方法不同。

通过视图修改 warehouse 表中仓库的名称。具体语句如下:

CREATE VIEW warehouse_view AS SELECT * FROM warehouse;
UPDATE warehouse_view SET w_name = 'bj' WHERE w_name = 'if';

除了普通视图之外,还有一种物化视图。物化视图本身是保存数据的,它和普通视图的区别是在 DML 操作中,对普通视图的操作会映射到基本表,而对物化视图的操作则直接作用到物化视图本身。

当基本表中的数据发生变化时,物化视图中的数据也会同步发生相同的变化。由于物化视图通常是基本表的子集,因此如果要查询的数据在物化视图中时,直接访问物化视图会提高访问效率,但是同时也会带来维护开销。如果一个基本表频繁地被增删改语句操作数据,那么物化视图同步更新带来的开销可能就会大于访问性能提升带来的好处,因此需要根据应用的具体情况决定是否使用物化视图。

创建一个 warehouse name 相关的物化视图,具体语句如下:

CREATE MATERIALIZED VIEW warehouse_name AS SELECT w_name FROM warehouse;

标签:name,数据库,MogDB,视图,物化,模式,warehouse,openGauss
From: https://www.cnblogs.com/renxyz/p/18075452

相关文章

  • MogDB-openGauss中的集合操作
    MogDB/opengauss中的集合操作UNION:并操作,将UNION关键字两段的结果集做并集操作。EXCEPT:差操作,从左侧的结果集中排除掉右侧的结果集。INTERSECT:交集,对两个结果集做取交集操作。对表t1、t2做UNION操作,具体语句如下:MogDB=#SELECT*FROMt1UNIONSELECT*FROMt2;c1......
  • MogDB-opengauss存储过程的修改
    MogDB/openGauss存储过程的修改SQL中没有提供显式的存储过程修改命令,通常需要通过REPLACE关键字来指定使用当前的存储过程替代之前的同名存储过程。将前文定义的存储过程替换为按照地区分组的数量统计,具体语句如下:MogDB=#CREATEORREPLACEPROCEDUREwarehouse_count()L......
  • MogDB-openGauss访问控制简介
    MogDB/openGauss访问控制简介SQL可以针对不同的数据库对象赋予不同的权限,这样就可以限制用户对数据的不必要访问,提高数据访问的安全性。常见的SQL权限如下:SELECT/UPDATE/DELETE/INSERT:访问、修改基本表或视图的权限REFERENCES:在基本表上创建外键约束的权限TRIGGER:在基本......
  • MogDB-openGauss触发器简介(1)
    MogDB/opengauss触发器简介(1)触发器是对应用动作的响应机制,当应用对一个对象发起DML操作时,就会产生一个触发事件(Event)。如果该对象上拥有该事件对应的触发器,那么就会检查触发器的触发条件(Condition)是否满足,如果满足触发条件,那么就会执行触发动作(Action)。事件:触发器的触发事......
  • MogDB-openGauss存储过程的声明
    MogDB/openGauss存储过程的声明存储过程是一组SQL语句和逻辑控制的集合。数据库系统需要支持创建、删除和修改存储过程的语法。存储过程相比普通的SQL命令,具有如下优点:创建的存储过程保存在数据库系统中,在使用时被调出并且在数据库系统本地进行编译执行,一次编译,多次执行,......
  • MogDB openGauss如何实现事务的rollback
    MogDB/openGauss如何实现事务的rollback本文出处:https://www.modb.pro/db/113262数据库最主要的功能就是存储数据,然而我们在进行数据库操作时,却很容易发生误操作数据的情况,那么在MogDB中该如何实现误操作数据恢复呢?本文通过具体示例简要介绍如何通过回滚还原到误操作前的状......
  • MogDB openGauss数据完整性约束简介
    MogDB/openGauss数据完整性约束简介本文出处:https://www.modb.pro/db/124910创建基本表的同时,还可以指定表中数据完整性约束,例如在创建warehouse基本表时,通过分析可以得到如下结论:不同仓库必须有不同的w_id,且w_id不能为NULL。仓库必须有具体的名称,不能为NULL。仓库......
  • MogDB-openGauss触发器简介(2)
    MogDB/opengauss触发器简介(2)针对触发对象的触发事件一旦发生,就会激活触发器,触发器首先会检查触发条件,只有在满足触发条件的情况下,才会被真正地执行。其中元组级的触发器可以将更新前后的值嵌入到触发器的触发条件中。NEW.column_name:UPDATE或INSERT事件对应“新”元组,colu......
  • zabbix监控MogDB-openGauss之采集prometheus数据
    zabbix监控MogDB/openGauss之采集prometheus数据本文出处:https://www.modb.pro/db/187462前言市场上比较的监控方式有两种:zabbix和prometheus架构,对于MogDB/openGauss数据库来说,已经通过grafana+prometheus+opengauss_exporter的方式完成了监控部署,如何通过zabb......
  • 配置MogDB openGauss的grafana 的dashboard
    配置MogDB/openGauss的grafana的dashboard本文出处:https://www.modb.pro/db/188684概述我们已经介绍了prometheus+grafana+opengauss_exporter完成对MogDB/openGauss数据库的监控,但这只是第一步,我们还需要通过grafana的dashboard查看各个关注的指标项,本文主要......