GaussDB数据库中的同义词SYNONYM

2023-12-30 05:28

本文主要是介绍GaussDB数据库中的同义词SYNONYM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、前言

二、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
BEGININSERT 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

——结束

这篇关于GaussDB数据库中的同义词SYNONYM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/551831

相关文章

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

MySQL Workbench工具导出导入数据库方式

《MySQLWorkbench工具导出导入数据库方式》:本文主要介绍MySQLWorkbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录mysql Workbench工具导出导入数据库第一步 www.chinasem.cn数据库导出第二步

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例