同义词的作用

oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

同义词

同义词本质上属于近义词的概念,它是表、索引、视图等模式对象的一个别名

通过为模式对象创建同义词,可以隐藏对象的实际名称和所有者信息,这样可以为对象提供一定的安全性保证

SELECT SYSDATE FROM dual ;

此时的程序就是查询日期时间,但是在之前说过 dual 属于一张临时表,那么这张临时表到底是属于谁的呢?

通过一系列的查询可以发现,dual 数据表是属于 sys 用户的。

既然 dual 属于 sys,那么按照之前的概念来说,不同的用户要进行表的互相访问,前面需要使用模式名,也就是说如果 scott 用户要使用 dual,则应该使用 sys.dual 才对。

而这个操作就属于同义词的定义范畴,也就是说 dual 是 sys.dual 的同义词。如果想创建同义词,可使用一下语法:

create [PUBLIC] SYNONYM 同义词名称 FOR 模式.表名称

其中 PUBLIC 表示创建的同义词是公用的,数据库中所有用户都可以使用

将 scott.emp 数据表映射为 semp,连接 sys 用户

CREATE SYNONYM semp FOR scott.emp ;

 同义词创建完成之后就可以直接利用同义词进行数据查询

SELECT * FROM semp ;

但是现在的问题是,此同义词无法被其他用户使用,它只能够被 sys 使用

如果想让一个同义词被所有用户使用,那么应该将其创建为公共同义词

切换回 sys 用户,重新创建同义词

CONN sys/change_on_install AS SYSDBA ;
DROP SYNONYM semp ;
CREATE PUBLIC SYNONYM semp FOR scott.emp ;

 上面代码中“DROP SYNONYM semp ”为删除同义词的语句。虽然同义词可以被其他用户访问了,但是对我们开发的意义不大

如果在当前模式中创建私有同义词,要求数据库用户必须具有 create synonym 的系统权限

如果要在其他模式中创建私有同义词,要求数据库用户必须具有 create any synonym注意的系统权限

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值