功能
创建同义词,同义词synonym是一个数据库对象,类似给对象起一个别名。支持为以下对象创建同义词:table、table stream、dynamic table、materialzied view、volume、function。
创建语法
CREATE [TABLE|VOLUME|FUNCITON] SYNONYM [schema_name.] synonym_name FOR object COMMENT''
object ::=
workspace_name.schema_name.object_name|schema_name.object_name|object_name
-
TABLE|VOLUME|FUNCITON:表示给哪种对象命名同义词,
- TABLE:这是默认选项。用于为table、table stream、materialzied view、dynamic table命名同义词。在这些情况下,“table”关键字是可选的。
- VOLUME:volume命名同义词时,必须明确指定此关键字。如果省略,系统将默认寻找同名的表格对象。
- FUNCTION:function命名同义词时,此关键字是必填项。如果未指定,系统同样会默认寻找同名的table对象
-
synonym_name:同义词名称,遵循元数据规范
-
object:指定基对象的名称,支持workspace_name.schema_name_2.object_name、schema_name_2.name格式如果省略schema则使用当前schema中的对象
权限
- 创建create synonym需要create synonym权限
grant create synonym on schema scname to user uat_test_01;
使用方式
- 具体使用方式参考同义词使用
- 当删除同义词引用(例如 TABLE、TABLE STREAM、MATERIALIZED VIEW、DYNAMIC TABLE、VOLUME、FUNCTION 等)后,如果随后创建了与之前同名的新引用,则系统将自动指向并使用新的引用。这意味着任何对原对象的引用,在新对象创建后,都将自动适用于新对象,而无需更改现有的查询或代码。
使用案例
案例一:给表创建同义词
CREATE TABLE employees(id int,name string,skills array<string>);
INSERT INTO employees (id, name, skills) VALUES
(1, 'John Doe', ['Java', 'Python', 'SQL']),
(2, 'Jane Smith', ['C++', 'Hadoop', 'SQL']),
(3, 'Bob Johnson', ['Python', 'Docker']);
CREATE TABLE SYNONYM employees_syno FOR employees;
--查询同义词
SELECT * FROM employees_syno;
+----+-------------+-------------------------+
| id | name | skills |
+----+-------------+-------------------------+
| 1 | John Doe | ["Java","Python","SQL"] |
| 2 | Jane Smith | ["C++","Hadoop","SQL"] |
| 3 | Bob Johnson | ["Python","Docker"] |
+----+-------------+-------------------------+
案例二:给table stream创建同义词,table stream和table创建同义词语法相同
CREATE SYNONYM employees_stream_synonym FOR public.employees_stream;
--删除同义词
DROP SYNONYM employees_stream_synonym;
案例三:给DYNAMIC TABLE创建同义词,DYNAMIC TABLE和TABLE创建同义词语法相同
CREATE SYNONYM dt_synonym for public.my_dt;
--删除同义词
DROP SYNONYM dt_synonym;