GaussDB数据库中的同义词SYNONYM

news2024/11/27 4:37:17

目录

一、前言

二、GasussDB数据库中的Synonym

1、Synonym的概念

2、语法介绍

3、Synonym的用途

三、Synonym在GaussDB数据库中是如何使用的

1、表的同义词使用(示例)

2、视图的同义词使用(示例)

3、函数的同义词使用(示例)

4、存储过程的同义词使用(示例)

5、在GaussDB数据库中使用同义词时的注意事项

四、小结

一、前言

在GasussDB数据库中,Synonym是一种灵活且强大的工具,用于简化数据库对象的访问和管理。通过Synonym,用户可以创建具有特定名称的别名,以替代复杂的数据库对象名称,从而提高查询效率、方便维护、增强安全性,并扩展数据库的使用范围。

二、GasussDB数据库中的Synonym

1、Synonym的概念

同义词(Synonym)是数据库中的一个对象,它是一个别名,经常用于简化对象访问和提高对象访问的安全性。在GaussDB数据库中,管理员可以为大部分对象,如表、视图、序列、存储过程、包等等,定义同义词。

2、语法介绍

1)创建一个同义词对象。同义词是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。

ALTER SYNONYM synonym_name OWNER TO new_owner;

参数说明:

  • synonym_name:待修改的同义词名字,可以带模式名。
  • new_owner: 同义词对象的新所有者。

3、Synonym的用途

  • 简化数据库对象的访问:Synonym可以创建并使用别名来简化对数据库对象的访问,无需每次都输入完整的对象名称,从而减少输入量,提高访问效率。
  • 提高数据库对象访问的安全性:Synonym可以授权不同的用户访问特定的数据库对象,从而限制他们对数据库的访问权限,提高系统的安全性。
  • 扩展数据库的使用范围:Synonym可以在不同的数据库用户之间创建映射关系,使得用户可以在不知道其他数据库中的对象名称和结构的情况下,通过Synonym访问其他数据库中的对象,实现跨数据库的交互。
  • 提高查询效率:Synonym可以减少查询的时间和SQL语句的复杂度。用户可以通过Synonym来访问数据库中的对象,从而避免了在查询时需要使用完整的对象名。
  • 方便维护:Synonym可以提高代码的可读性,并且降低了更改数据库对象名称给程序带来的影响。如果需要更改对象的名称,只需修改Synonym即可,而不需要在代码中进行修改。

总之,Synonym在GasussDB数据库中可以提高数据库对象的访问效率和安全性,扩展数据库的使用范围,方便用户对数据库的访问和管理。

三、Synonym在GaussDB数据库中是如何使用的

GaussDB支持通过同义词访问的数据库对象包括表、视图、函数和存储过程。支持的DML语句包括SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL。

1、表的同义词使用(示例)

--创建表omm2.test1
CREATE TABLE omm2.test1
(
id int
,name varchar2(10)
);

--创建表的同义词t1
CREATE OR REPLACE SYNONYM t1 FOR omm2.test1;

--使用同义词t1。
INSERT INTO t1 VALUES (1, 'zhangsan'), (2, 'lisi');
UPDATE t1 SET t1.name = 'ZhangSan' WHERE t1.id = 1;
UPDATE t1 SET t1.name = 'LiSi' WHERE t1.id = 2;
SELECT * FROM t1;

执行过程如下:

2、视图的同义词使用(示例)

--创建视图
CREATE VIEW omm2.v_test1 AS SELECT * FROM omm2.test1;

--创建同义词v1
CREATE SYNONYM v1 FOR omm2.v_test1;

--使用同义词v1。
SELECT * FROM v1;

执行过程如下:

3、函数的同义词使用(示例)

--创建函数根据姓名(参数)获取信息
CREATE OR REPLACE FUNCTION f_test1 (c_name VARCHAR)
RETURNS VOID PACKAGE
LANGUAGE plpgsql
AS $$
DECLARE 
 s_sql TEXT;
BEGIN    
	s_sql := 'CREATE OR REPLACE VIEW omm2.v_test2 AS SELECT * FROM omm2.test1 where name=''' || c_name || '''' ;
	EXECUTE s_sql;
END $$;

--创建同义词
CREATE OR REPLACE SYNONYM omm2.f1 FOR f_test1;

--调用
CALL omm2.f1('ZhangSan'); 

--查看执行结果
select * from omm2.v_test2;

执行过程如下:

4、存储过程的同义词使用(示例)

--创建存储过程
CREATE OR REPLACE PROCEDURE p_test1(a integer,b varchar2(10))      
SECURITY INVOKER
AS
BEGIN
    INSERT INTO omm2.test1 VALUES(a,b);
END;
/

--创建同义词
CREATE OR REPLACE SYNONYM omm2.p1 FOR omm2.p_test1;

--使用同义词p1,调用存储过程。
CALL omm2.p1(3,'WangWu');

SELECT * FROM omm2.test1;

执行过程如下:

5、在GaussDB数据库中使用同义词时的注意事项

FAQ解决思路:

  • 定义同义词的用户成为其所有者。
  • 若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建。
  • 使用同义词时,用户需要具有对关联对象的相应权限。
  • 不建议对临时表创建同义词。如果需要创建的话,需要指定同义词的目标临时表的模式名,否则无法正常使用改同义词,并且在当前会话结束前执行DROP SYNONYM命令。
  • 删除原对象后,与之关联同义词不会被级联删除,继续访问该同义词会报错,并提示已失效。
  • 不支持针对包含加密列的密态表及基于密态表的视图、函数、存储过程创建同义词。
  • 只有系统管理员有权限修改SYNONYM对象的属主信息。目前仅支持修改属主,且新属主必须具有SYNONYM对象所在模式的CREATE权限。

四、小结

GaussDB的同义词是一种数据库对象,用于为其他数据库对象提供别名。同义词可以简化SQL查询语句,提高可读性和可维护性。同时,同义词还可以实现数据的逻辑隔离和访问控制,提高数据库的安全性。

在GaussDB中,可以使用CREATE SYNONYM语句创建同义词。同义词的定义与被它所引用的对象具有相同的模式(schema)。如果同义词的模式与被引用对象的模式不同,则需要在同义词名称后面加上模式名称进行限定。

需要注意的是,同义词并不实际存储数据,它只是对其他数据库对象的引用。因此,删除同义词并不会删除被引用的对象。同时,同义词也不能跨数据库或实例使用。

更多信息可参考官方文档:

https://support.huaweicloud.com/centralized-devg-v2-gaussdb/devg_03_0574.html

——结束

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK3568 解决MIPI屏幕开机只显示uboot logo的问题

1、前言 之前写过一篇文章介绍了RK3568驱动MIPI屏幕的方法,这次产品迭代,硬件改版,选型的新的屏幕了。所以再次开启调试屏幕的过程。本以为会和上次一样会轻车熟路,事情总是事与愿违,同样的路,遇到新的坑。…

鸿蒙原生应用/元服务开发-Stage模型能力接口(十)下

ohos.app.form.FormExtensionAbility (FormExtensionAbility) 系统能力:SystemCapability.Ability.Form 示例 import FormExtensionAbility from ohos.app.form.FormExtensionAbility; import formBindingData from ohos.app.form.formBindingData; import formP…

python读取eps矢量图片

再利用Image读取时,提示报错: OSError: Unable to locate Ghostscript on paths 解决办法: 首先要安裝ghostscript软件:Ghostscript : Downloads 安装后记住安装路径,并找到bin的文件夹 之后在使用时,在代…

element表格排序功能

官方展示 个人项目 可以分别对每一项数据进行筛选 注&#xff1a;筛选的数据不能是字符串类型必须是数字类型&#xff0c;否则筛选会乱排序 html <el-table :data"tableData" border height"600" style"width: 100%"><el-table-co…

K8s实战-init容器

概念&#xff1a; 初始化容器的概念 比如一个容器A依赖其他容器&#xff0c;可以为A设置多个 依赖容易A1&#xff0c;A2&#xff0c;A3 A1,A2,A3要按照顺序启动&#xff0c;A1没有启动启动起来的 话&#xff0c;A2,A3是不会启动的&#xff0c;直到所有的静态容器全 部启动完毕…

基于Java车间工时管理系统(源码+部署文档)

博主介绍&#xff1a; ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅 &#x1f447;&#x1f3fb; 不然下次找不到 Java项目精品实…

[stm32f103]DMA

简介 • DMA &#xff08; Direct Memory Access &#xff09;直接存储器存取 • DMA 可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须 CPU 干预&#xff0c;节省了 CPU 的资源 • 12 个独立可配置的通道&#xff1a; DMA1 &#xff08; 7 个通道…

Python爬取今日头条热门文章

前言 今日头条文章收益是没有任何门槛&#xff0c;只要是你发布文章&#xff0c;每篇文章的阅读量超过1000就能有收益&#xff0c;阅读量越多收益越高。于是乎我就有了个大胆的想法。何不利用Python爬虫&#xff0c;爬取热门文章&#xff0c;然后完成自动化发布文章呢&#xf…

独立容器 Rancher Server 证书过期解决

问题 Rancher无法登录 容器报错X509&#xff1a;certificate has expired or is not ye valid 在某天需要发布新版本的时候&#xff0c;发现rancher无法登录&#xff0c;于是到服务器上查看rancher日志&#xff0c;发现以下内容&#xff1a; docker logs -f rancher --since10…

Large-Precision Sign using PBS

参考文献&#xff1a; [CLOT21] Chillotti I, Ligier D, Orfila J B, et al. Improved programmable bootstrapping with larger precision and efficient arithmetic circuits for TFHE[C]//Advances in Cryptology–ASIACRYPT 2021: 27th International Conference on the T…

【强化学习】基于蒙特卡洛MC与时序差分TD的简易21点游戏应用

1. 本文将强化学习方法&#xff08;MC、Sarsa、Q learning&#xff09;应用于“S21点的简单纸牌游戏”。 类似于Sutton和Barto的21点游戏示例&#xff0c;但请注意&#xff0c;纸牌游戏的规则是不同且非标准的。 2. 为方便描述&#xff0c;过程使用代码截图&#xff0c;文末附链…

JavaSE基础50题:25. 查找数组中指定元素(顺序查找)

概述 给定一个数组&#xff0c;再给定一个元素&#xff0c;找出该元素在数组中的位置。 for循环遍历 【概述】 一个一个找&#xff0c;比较慢。 想要快一点的方法&#xff0c;可以使用二分查找&#xff0c;在后续《JavaSE基础50题》专栏中27题中详细讲解。 【代码】 public …

MySql篇——MySql使用常见问题及解决办法

这里汇总MySql使用常见问题及解决办法&#xff0c;会持续更新。 问题1.ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。 含义&#xff1a;你设置的密码不符合当前的密码等级。 可使用 SHOW VARIABLES LIKE validate_password%; 查看…

C#中的Attribute详解(上)

C#中的Attribute详解&#xff08;上&#xff09; 一、Attribute是什么二、Attribute的作用三、Attribute与注释的区别四、系统Attribute范例1、如果不使用Attribute&#xff0c;为了区分这四类静态方法&#xff0c;我们只能通过注释来说明&#xff0c;但这样做会给系统带来很多…

计算机图形学光线追踪大作业C++基于Optix为框架实现的光线追踪算法合集,含直射光阴影效果、漫反射阴影效果、镜面反射效果等示例

MineRay 使用Optix为框架实现的光线追踪算法。 包含4个示例&#xff0c;直射光阴影效果、漫反射阴影效果、镜面反射效果、折射效果 环境需求 本项目在Windows 10中测试&#xff0c;以下环境为Windows中的环境 CUDA 10.1 OptiX 7 SDK cmake 编译方式 使用cmake编译 打开Mi…

分布式、CAP 和 BASE 理论

在计算机科学领域&#xff0c;分布式系统是一门极具挑战性的研究方向&#xff0c;也是互联网应用中必不可少的优化实践&#xff0c;而 CAP 理论和 BASE 理论则是分布式系统中的两个关键的概念。 什么是分布式系统 首先&#xff0c;让我们来谈谈分布式系统。你可以将分布式系统…

C++进阶--继承和多态常见题目

继承和多态常见题目 概念考查问答题 概念考查 下面哪种面向对象的方法可以让你变得富有( A) A: 继承   B: 封装   C: 多态   D: 抽象 这道题说哪种面向对象的方法可以让我们更富有&#xff0c;也就是东西更多&#xff0c;那么一定是继承无疑了&#xff0c;因为继承可以让…

ArcGIS高程点生成等高线

基本步骤&#xff1a;数据清洗→创建TIN→TIN转栅格→等值线→平滑线。 1.&#xff08;重要&#xff09;数据清理&#xff1a;删除高程点中的高程异常值数据。 2.创建TIN:系统工具→3D Analyst Tools→数据管理→TIN→创建TIN&#xff08;可直接搜索工具TIN&#xff09;。 单击…

移动机器人规划、控制算法初识

规划与控制PNC(PlanningandControl) 1 路径规划算法&#xff1a; 移动机器人路径规划算法总结_机器人运动轨迹算法-CSDN博客 2 控制算法&#xff1a; 机器人控制算法综述_机器人控制技术综述-CSDN博客 机器人控制算法简要概述_智能控制算法-CSDN博客 学习资源&#xff1a; …

VSCode 未装插件

EditorConfig for VS Code&#xff1a;自定义代码规范&#xff0c;按照自己指定的规则而不是编辑器默认的格式化。 ES7 React/Redux/React-Native snippets&#xff1a;款苏插入React代码片段。 Material Icon Theme&#xff1a;文件图标主题。 Prettier - Code formatte…