管理同义词 
==========================

本节主要介绍如何创建和删除同义词。

在 OceanBase 数据库中，同义词是一个租户数据库对象的别名。使用同义词通常是为了管理权限方便，因为同义词可以隐藏另外一个数据对象的所有者权限。

创建同义词 
--------------------------

您可以使用 `CREATE SYNONYM` 语句来创建同义词。

创建同义词时：

* 如果在当前数据库创建私有同义词，则当前用户需要具备 `CREATE SYNONYM` 权限。

  

* 如果在非当前数据库创建私有同义词，则当前用户需要具备以下权限：

  * MySQL 模式：`CREATE SYNONYM` 权限

    
  

  

* 如果创建公共同义词，则当前用户需要具备以下权限：

  * MySQL 模式：`CREATE SYNONYM` 权限

    
  

  

* 创建同义词的对象可以不存在，当前用户也不需要具有该对象的访问权限。

  




创建同义词的语法格式如下：

* MySQL 模式

  ```sql
  CREATE [ OR REPLACE ] [ PUBLIC ] SYNONYM [ DATABASE. ]synonym FOR [ DATABASE. ]object;
  ```

  

  MySQL 模式下 `CREATE SYNONYM` 语句的更多信息，请参见《SQL 参考》文档中的 [CREATE SYNONYM](../../../10.sql-reference/5.sql-statement/17.create-synonym.md) 章节。
  




示例：

* 创建一个私有同义词。

  ```sql
  obclient> CREATE TABLE test(c1 int);
  Query OK, 0 rows affected (0.18 sec)
  
  obclient> CREATE SYNONYM s1 for test;
  Query OK, 0 rows affected (0.05 sec)
  
  obclient> INSERT INTO s1 VALUES(1);
  Query OK, 1 row affected (0.02 sec)
  
  obclient> SELECT * FROM s1;
  +------+
  | c1   |
  +------+
  |    1 |
  +------+
  1 row in set (0.01 sec)
  ```

  

* 创建一个公共同义词。

  ```sql
  obclient> CREATE PUBLIC SYNONYM syn_pub FOR test;
  Query OK, 0 rows affected (0.03 sec)
  
  obclient> SELECT * FROM syn_pub;
  +------+
  | c1   |
  +------+
  |    1 |
  +------+
  1 row in set (0.01 sec)
  ```

  




删除同义词 
--------------------------

您可以使用 `DROP SYNONYM` 语句来删除不需要使用的同义词。

删除同义词时：

* 如果删除的是私有同义词，则需要保证待删除的同义词在对应的数据库下，且当前用户需要具备以下权限：

  * MySQL 模式的租户：`CREATE SYNONYM` 权限

    
  

  

* 如果删除的是公共同义词，则当前用户需要具备以下权限： 

  * MySQL 模式的租户：`CREATE SYNONYM` 权限

    
  

  

  同时，在删除时，必须指定 `PUBLIC` 关键字，并且不能指定数据库。
  




删除同义词的语法格式如下：

* MySQL 模式

  ```sql
  DROP [PUBLIC] SYNONYM [ DATABASE. ]synonym;
  ```

  

  MySQL 模式下 `DROP SYNONYM` 语句的更多信息，请参见《SQL 参考》文档中的 [DROP SYNONYM](../../../10.sql-reference/5.sql-statement/33.drop-synonym.md) 章节。
  




示例：

* 删除一个私有同义词。

  ```sql
  obclient> DROP SYNONYM test.s1;
  Query OK, 0 rows affected (0.03 sec)
  ```

  

* 删除一个公共同义词。

  ```sql
  obclient> DROP PUBLIC SYNONYM syn_pub;
  Query OK, 0 rows affected (0.02 sec)
  ```

  



