GaussDB数据库中的同义词SYNONYM
目录
一、前言
在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
——结束

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ThreadPool 模式设计与流程演示
一、背景技术 系统线程是一种稀缺资源且创建一个线程开销较大,频繁地创建和销毁线程反而可能使得系统在高并发时性能急剧下降。如果无限制地创建线程,不仅会消耗系统资源,还会降低系统的稳定性,甚至造成系统崩溃。 线程池的使用能够有效提升线程的可管理性,依据系统承受能力,调整线程池中工作线程的数量,对线程进行统一的分配、调优和监控。该方式能够提高任务响应速度,当任务到达时,无需等待线程创建即可立即执行。 由于时序数据采集涉及众多设备检测点且采集数据频繁,这将导致数据库中执行任务量多、并发程度高,如何在有限系统资源下维持系统稳定则尤为重要。 就上述问题及诉求,本期我们将和大家分享 ThreadPool 模块设计。该模式能够提高系统资源的使用效率,通过重复利用已创建线程避免频繁创建和销毁线程对系统资源的消耗,可保持系统执行大量高并发任务时的性能稳定,通过 ThreadPool 模式可实现统一资源管理,简化编程接口。 二、ThreadPool 整体设计 ThreadPool 在初始化阶段创建指定数量的线程并依次放在 all_thread 中(动态数组 vector,大小为传递至它的参数,不传递参数则默...
- 下一篇
🍃 layui-vue v2.14.3 发布,一个 Vue 3 UI 框架
更新内容: [调整] datePicker 组件 移除 popper 底部清空按钮,该操作交由 allowClear 属性。 [修复] splitPanel 组件 修复未进行拖动元素失焦问题。 [修复] inputNumber 组件 model-value 属性缺失响应式。 [新增] color-picker 组件 添加allowClear、simple属性控制清空与确认按钮。 [新增] input-number 组件 添加precision属性,用于控制数值精度。 [新增] tree 组件 replace-fields 属性,支持自定义字段。 [新增] tree 与 treeSelect 组件 defaultExpandAll 属性,默认是否展开所有节点。 更多详情:http://www.layui-vue.com
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6