GaussDB如何创建和管理视图

GaussDB如何创建和管理视图

一、什么是视图

当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。

视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。

二、构造测试数据

步骤 1 执行如下语句,创建测试表。

CREATE TABLE infotest (  id int,  name varchar(30) ,  price float ,  PRIMARY KEY (id)) ;

步骤 2 执行如下语句,在表中插入数据。

insert into infotest values (1001,'牙刷',10.5),(1002,'毛巾',21.5),(1003,'茶几',999.9),(1004,'电视',3199),(1005,'冰箱',2999),(1006,'1 手机',1999),(1007,'2 手机',7699),(1008,'.3 手机',699.9),(1009,'T恤',21.5),(1010,'牛仔裤',99);

三、创建视图

执行如下语句创建新视图MyView,其中infotest为构造测试数据中创建的表。

CREATE OR REPLACE VIEW MyView AS SELECT * FROM infotest WHERE price < 1000;

CREATE VIEW

CREATE VIEW中的OR REPLACE可有可无,当存在OR REPLACE时,表示若以前存在该视图就进行替换。

关于CREATE VIEW的更多用法请参考创建视图。

四、查询视图

执行如下语句查询MyView视图。

SELECT * FROM MyView;

  id  |   name    | price 
------+-----------+------- 
 1001 | 牙刷    |  10.5 
 1002 | 毛巾    |  21.5 
 1003 | 茶几    | 999.9 
 1008 | .3 手机 | 699.9 
 1009 | T恤      |  21.5 
 1010 | 牛仔裤 |    99 
(6 rows)

五、查看某视图的具体信息

执行如下语句查询MyView视图的详细信息。

\d+ MyView

                         View "root.myview" 
 Column |         Type          | Modifiers | Storage  | Description 
--------+-----------------------+-----------+----------+------------- 
 id     | integer               |           | plain    | 
 name   | character varying(30) |           | extended | 
 price  | double precision      |           | plain    | 
View definition: 
 SELECT  * 
   FROM infotest 
  WHERE infotest.price < 1000::double precision;

六、更新数据

步骤 1 执行如下语句更新数据。

UPDATE infotest SET name = '手机' where id = 1008;

步骤 2 更新数据后,通过视图查询更新后的信息。

SELECT * FROM MyView;

  id  |   name    | price 
------+-----------+------- 
 1001 | 牙刷    |  10.5 
 1002 | 毛巾    |  21.5 
 1003 | 茶几    | 999.9 
 1009 | T恤      |  21.5 
 1010 | 牛仔裤 |    99 
 1008 | 手机    | 699.9 
(6 rows) 

七、更改视图名称

步骤 1 执行如下语句将视图改名。

ALTER VIEW  MyView RENAME TO YourView;

ALTER VIEW

更多用法请参考更改视图。

步骤 2 执行如下命令,查看改名效果。

\d+ YourView

                        View "root.yourview"
 Column |         Type          | Modifiers | Storage  | Description
--------+-----------------------+-----------+----------+-------------
 id     | integer               |           | plain    |
 name   | character varying(30) |           | extended |
 price  | double precision      |           | plain    |
View definition:
 SELECT  *
   FROM infotest
  WHERE infotest.price < 1000::double precision;

八、删除视图

执行如下命令删除MyView视图。

drop view YourView;

DROP VIEW

GaussDB如何创建和管理定时任务 

当用户在使用数据库过程中,如果白天执行一些耗时比较长的任务(例如:统计数据汇总之类或从其他数据库同步数据的任务),会对正常的业务有性能影响,所以用户经常选择在晚上执行,这增加了用户的工作量。因此数据库GaussDB提供定时任务的功能,可以由用户创建定时任务,当任务时间点到达后可以自动触发任务的执行,从而可以减少用户户运维的工作量。

GaussDB提供定时任务的创建、任务到期自动执行、任务删除、修改任务属性(包括:任务id、任务的关闭开启、任务的触发时间、触发时间间隔、任务内容等)。

 

一、定时任务管理

步骤 1 创建测试表:

postgres=# CREATE TABLE test(id int, time date);

当结果显示为如下信息,则表示创建成功。

CREATE TABLE

步骤 2 创建自定义存储过程:

postgres=# CREATE OR REPLACE PROCEDURE PRC_JOB_1()
AS
N_NUM integer :=1;
BEGIN
FOR I IN 1..1000 LOOP
INSERT INTO test VALUES(I,SYSDATE);
END LOOP;
END;
/

当结果显示为如下信息,则表示创建成功。

CREATE PROCEDURE

步骤 3 创建任务:

  • 新创建的任务(未指定job_id)表示每隔1分钟执行一次存储过程PRC_JOB_1。
postgres=# call dbe_task.submit('call public.prc_job_1(); ', sysdate, 'interval ''1 minute''', :a);
job
-----
1
(1 row)
  • 指定job_id创建任务,其中job_id可用范围为1~32767。
postgres=# call dbe_task.id_submit(2,'call public.prc_job_1(); ', sysdate, 'interval ''1 minute''');
isubmit
---------
 
(1 row)

步骤 4 通过视图查看当前用户已创建的任务信息。

postgres=# select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from my_jobs;
job | dbname |     start_date      |         last_date          |         this_date          |      next_date      | broken | status |      interval       | failures |           what
-----+--------+---------------------+----------------------------+----------------------------+---------------------+--------+--------+---------------------+----------+---------------------------
1 | postgres   | 2017-07-18 11:38:03 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:54:03 | n      | s      | interval '1 minute' |        0 | call public.prc_job_1();
(1 row)

步骤 5 停止任务。

postgres=# call dbe_task.finish(1,true);
broken
--------
 
(1 row)

步骤 6 启动任务。

postgres=# call dbe_task.finish(1,false);
broken
--------
 
(1 row)

步骤 7 修改任务属性:

  • 修改JOB的Next_date参数信息。

--修改Job1的Next_date为1小时以后开始执行。

postgres=# call dbe_task.next_time(1, sysdate+1.0/24);
next_date
-----------
 
(1 row)
  • 修改JOB的Interval参数信息。

--修改Job1的Interval为每隔1小时执行一次。

postgres=# call dbe_task.interval(1,'sysdate + 1.0/24');
interval
----------
 
(1 row)
  • 修改JOB的What参数信息。

--修改Job1的What为执行SQL语句“insert into public.test values(333, sysdate+5);”。

postgres=# call dbe_task.content(1,'insert into public.test values(333, sysdate+5);');
what
------
 
(1 row)
  • 同时修改JOB的Next_date、Interval、What等多个参数信息。
postgres=# call dbe_task.update(1, 'call public.prc_job_1();', sysdate, 'interval ''1 minute''');
change
--------
 
(1 row)

步骤 8 删除JOB。

postgres=# call dbe_task.cancel(1);
remove
--------
 
(1 row)

 总结

GaussDB是华为自主创新研发的分布式关系型数据库。该产品支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。

GaussDB分布式形态整体架构如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/246987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

静态HTTP应用的性能优化技巧

在Web开发中&#xff0c;静态HTTP应用以其简单、快速和安全的特点受到了广泛欢迎。然而&#xff0c;随着Web应用的规模不断扩大&#xff0c;性能问题也日益突出。本文将为你介绍一些静态HTTP应用的性能优化技巧&#xff0c;让你的应用飞得更快、更稳定。 一、压缩文件 文件压…

iPhone手机中备忘录如何改变字体颜色

作为一名iPhone用户&#xff0c;我经常使用手机备忘录来记录生活中的点点滴滴。这样&#xff0c;我的大脑就能从繁琐的记忆任务中解脱出来&#xff0c;专注于更重要的事情。 而且&#xff0c;我有一个特别的习惯&#xff0c;那就是使用不同颜色的字体来区分不同的备忘录。这样…

基于SpringBoot的就业信息管理系统设计与实现(源码+数据库+文档)

摘 要 在新冠肺炎疫情的影响下&#xff0c;大学生的就业问题已经变成了一个引起人们普遍重视的社会焦点问题。在这次疫情的冲击之下&#xff0c;大学生的就业市场的供求双方都受到了不同程度的影响&#xff0c;大学生的就业情况并不十分乐观。目前&#xff0c;各种招聘平台上…

解决:Component name “index“ should always be multi-word

原因 要求组件名称以驼峰格式命名&#xff0c;自定义组件名称应该由多单纯组成&#xff0c;防止和html标签冲突&#xff0c;所以index.vue 会报错 解决 1、按照规则驼峰格式&#xff0c;如&#xff1a;appIndex.vue 2、若有.eslintrc.js文件&#xff0c;并在规则中(rules)关…

【数字电路】MacBook使用iverilog进行数字电路仿真

安装流程 在终端中用brew包管理工具进行安装仿真工具&#xff1a; 编译verilog代码&#xff1a; brew install icarus-verilog编译verilog代码&#xff1a; brew install verilatorMacOS系统显示UNIX GUI brew install xquartz可视化仿真波形图&#xff1a; brew install gtk…

柯桥西班牙语里最“好用”的脏话:一些关于cojones的表达

Creo que una de las palabras con ms contextos donde se puede utilizar y que adems pronto es conocida por los estudiantes de espaol es esta que est en el ttulo. 相信标题中的这个单词“cojones”&#xff0c;使用时总是包含很多含义&#xff0c;同时也是西语学习者最…

郝斌C语言自学教程笔记

赫斌C语言——笔记目录 c语言编程预备知识流程控制函数变量指针结构体位运算符 前段时间康哥看我C语言基础不牢,推荐我学习郝斌老师的C语言课程&#xff0c;花2周看完之后发现确实是目前所看的C语言课程中最好的&#xff0c;不仅非常适合入门&#xff0c;而且对即使学了几年C语…

ARM开发

ARM课程介绍 课程特点 ARM开发 --> Linux移植 --> 驱动开发 前后联系&#xff1a;ARM和系统移植为驱动开发学习做准备工作 所需知识&#xff1a;C语言基础及STM32需要的硬件知识 课程要求 目标&#xff1a;学习程序运行原理、硬件的控制原理 会看原理图、芯片手册、学习…

MVVM前端设计模式的发展与应用

在MVC模式中&#xff0c;随着代码量越来越大&#xff0c;Controller主要用来处理各种逻辑和数据转化的Controller首当其冲&#xff0c;变得非常庞大&#xff0c;MVC的简写变成了Massive-View-Controller&#xff08;意为沉重的Controller&#xff09; 我曾经接手老项目&#x…

ChatGPT对话为什么不用WebSocket而使用EventSource?

文章目录 1. 引言2. WebSocket和EventSource简介2.1 WebSocket2.2 EventSource 3. ChatGPT对话系统的特点4. EventSource的优势4.1 简单易用4.2 容错性强4.3 兼容性良好 5. 为何选择EventSource而非WebSocket&#xff1f;5.1 单向通信模式5.2 长轮询模式5.3 简化部署和维护 6. …

java导出excel通用工具(POI,类注解形式)

通过给类定义注解(设置名称&#xff0c;设置kv转换值)&#xff0c;然后利用设置的名称和传入的数据进行导出。 只需要在项目添加两个工具类就可以实现excel导出功能。 1、单sheet 步骤&#xff1a;1、根据业务需求定义导出的类&#xff0c;并设置表头名称。 …

gitee创建一个新仓库和提交代码到码云

gitee创建一个新的项目并提交到码云 新建一个仓库 填写创建基本信息 以这个新创建的仓库保存项目所有的代码 在IDEA中克隆这个项目 从版本控制中新建一个git项目 从码云成功克隆项目 创建微服务模块 创建第商品模块 以以上同样的步骤完成下面几个模块的创建 聚合总…

Tita集成无代码API:电商客服与营销系统的升级

API的力量&#xff1a;优化电商与客服系统的无代码集成解决方案 在数字化转型的时代&#xff0c;电商与客服系统的高效运作对于企业的成功至关重要。无代码API平台Tita为此提供了一站式解决方案&#xff0c;使企业在无需深入的代码开发工作的前提下&#xff0c;便能实现各种系…

云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆

拓数派大模型数据计算系统&#xff08;PieDataComputingSystem&#xff0c;缩写&#xff1a;πDataCS&#xff09;在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS 以云原生技术重构数据存储和计算&#xff0c;「一份存储&#xff0c;多引擎…

基于Modis的遥感数据的地表温度的获取解决方案----以京津唐为例

1.背景与技术路线 地表温度(LST)是区域和全球尺度地表物理过程中的一个关键因子,也是研究地表和大气之间物质交换和能量交换的重要参数。许多应用如干旱、高温、林火、地质、水文、植被监测,全球环流和区域气候模型等都需要获得 LST。本方案以北京为例采用星载传感器的红外通道…

亚马逊鲲鹏系统可快速创建大量的买家账户

在数字时代的浪潮中&#xff0c;人们总是在寻找更便捷、高效的方式来完成各种任务&#xff0c;而亚马逊鲲鹏系统的出现&#xff0c;无疑为那些渴望拥有大批量买家号的人提供了一个全新的可能性。在这个系统中&#xff0c;注册买家号变得轻而易举&#xff0c;只需准备好一些必要…

软件库论坛社区后台系统源码工具箱积分商城会员体系和在线商城于一体

HBuilderX前端软件社区thinkphp后端源码 搭建好后台 在前端找到 util 这个文件 把两个js文件上面的填上自己的域名 电脑需要下载&#xff1a;HBuilderX 下载后 登录账号 没有账号就注册账号 然后上传文件 在选择你上传的文件即可 打包选择 “发行” 可以打包app h5等等 演…

互联网加竞赛 python 爬虫与协同过滤的新闻推荐系统

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python 爬虫与协同过滤的新闻推荐系统 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&…

Android Studio Git Invocation failed Unexpected end of file from server

Invocation failed Unexpected end of file from server 解决办法&#xff0c;勾选以下内容

【构建工具】vite2没捂热,vite5又来了,性能大幅提升!

vite2还没焐热&#xff0c;vite5又来了&#xff01;&#xff01;&#xff01; 就在一周前vite5重磅发布了&#xff01;性能大幅提升! 请看下面&#xff1a;下面是翻译过来的&#xff0c;原文&#xff1a;Vite 5.0 发布&#xff01; |维特 (vitejs.dev) Vite 4 大约在一年前发布…