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分布式形态整体架构如下:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
云小课|HSS对近期Cactus勒索病毒的分析
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。 摘要:HSS针对Cactus勒索病毒的解析与防护建议。 本文分享自华为云开发者社区 《【云小课】| 安全第15课 HSS对近期Cactus勒索病毒的分析》,原文作者:阅识风云 近期热点勒索事件 2023年首次发现的勒索病毒Cactus已迅速在数字领域蔓延,利用漏洞(尤其是VPN的漏洞)获得未经授权的访问并在受损的基础设施中建立据点,采用动态加密方法并利用许多工具和技术来确保其恶意负载有效且隐蔽地传递,攻击领域多种多样,主要针对从事制造和专业服务业务的组织,并已经攻击达到9个国家。 Cactus勒索病毒自2023年3月份开始活动以来一直很活跃,主要针对大型商业实体进行大量勒索。它采用双重勒索策略,在加密前窃取敏感数据,并在其网站威胁公开数据。Cactus勒索病毒利用Fortinet VPN漏洞、Qlik Sense公开暴露的安装漏洞和恶意广告传播的Danabot恶意软件,以获取初始访问权限,然后使用批处理脚本解压7...
- 下一篇
Jmix 2.1 发布 - 企业级 Web 快速开发框架
我们最近发布了 Jmix 的 2.1 版本。下面我们将介绍这个新版本中增加的新功能和改进。 有关完整的详细信息和升级说明,请参阅官方文档中的最近更新页面。 新的扩展组件 我们将一些之前在 Jmix v.1 中基于经典 UI 的扩展组件迁移了过来。Jmix 2.1 中也能很容易集成这些组件,并且基于 Vaadin 24 提供的现代 Flow UI。 地图 地图扩展组件已经能支持 Jmix 2+,且具有新的 API,Studio 也能提供出色的支持。 下面的示例演示了如何在指定位置显示一个地图标记的 OpenStreetMap: <maps:geoMapid="map"width="100%"height="100%"> <maps:layers> <maps:tile> <maps:osmSource/> </maps:tile> <maps:vectorid="pointsLayer"> <maps:vectorSource/> </maps:vector> </m...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Hadoop3单机部署,实现最简伪集群
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能