镇海建设交通局网站首页,大学网络推广培训,网站建设毕业设计中期进度报告,2022最新时事新闻及点评目录
一、前言
二、GasussDB数据库中的Synonym
1、Synonym的概念
2、语法介绍
3、Synonym的用途
三、Synonym在GaussDB数据库中是如何使用的
1、表的同义词使用#xff08;示例#xff09;
2、视图的同义词使用#xff08;示例#xff09;
3、函数的同义词使用示例
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 ——结束