SQL基础--同义词

同义词的概念:

   同义词是Oracle对象的别名,使用同义词访问相同的对象

    可以为表、视图、存储过程、函数或另一同义词等对象创建同义词

    方便访问其它用户的对象,隐藏了对象的身份

    缩短对象名字的长度

 

同义词创建语法:

  CREATE [PUBLIC] SYNONYM synonym_name  FOR  object;

 

创建和删除同义词的权限:

  •    CREATE ANY SYNONYM
  •        CREATE PUBLIC SYNONYM
  •    DROP PUBLIC SYNONYM
  •         DROP ANY SYNONYM

 

创建同义词举例:

复制代码
SQL> conn / as sysdba
已连接。

SQL> grant create public synonym to scott;

授权成功。

SQL> grant create any synonym to scott;

授权成功。

SQL> conn scott/tiger
已连接。
  
SQL> create public synonym mydept for dept;    ##创建公有同义词,其它用户也可以访问

同义词已创建。

SQL> create  synonym mydept for dept;      ##创建私有同义词,只有Scott才可以访问,与公共同义词同名,并没有报错

同义词已创建。
复制代码

 

 

删除同义词:

 

复制代码
SQL> drop public synonym mydept;

同义词已删除。

SQL> select * from mydept;   ##删除共有同义词,私有的还在

    DEPTNO DNAME      LOC
---------- -------------- -------------
    10 ACCOUNTING      NEW YORK
    20 RESEARCH      DALLAS
    30 SALES      CHICAGO
    40 OPERATIONS      BOSTON

SQL> drop synonym mydept;
同义词已删除。
SQL
> select * from mydept; select * from mydept *1 行出现错误: ORA-00942: 表或视图不存在
复制代码

 

 

 

 

查看同义词视图:

复制代码
SQL> select * from user_synonyms;

SYNONYM_NAME               TABLE_OWNER              TABLE_NAME
------------------------------ ------------------------------ ------------------------------
DB_LINK
------------------------------------------------------------------------------------------------------------------------
MYDEPT                   SCOTT                  DEPT

SQL> conn / as sysdba
已连接。

SQL> SELECT synonym_name,table_owner,table_name FROM dba_synonyms  WHERE table_name = 'DEPT';

SYNONYM_NAME               TABLE_OWNER              TABLE_NAME
------------------------------ ------------------------------ ------------------------------
MYDEPT                   SCOTT                      DEPT
MYDEPT                   SCOTT                       DEPT
复制代码

 注意:创建的公共同义词没有出现在user_synonyms视图中

 

 

posted @   头痛不头痛  阅读(5097)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩