SYNONYM 同义词 シノニム
同义词(了解只适合Oracle数据库)
之前一直存在这样的一种查询语句:
SELECT SYSDATE FROM DUAL;(查询系统信息)
之前一直强调DUAL是一张虚拟表,那么虽然是虚拟表,可是此表到底是
在哪里定义的呢?
如果现在使用system连接数据库,查询一下此表是否属于system
切换用户
CONN system/magager(安装完数据库时候设置的密码)
SELECT * FROM TAB WHERE TNAME='DUAL';
查询所有表查无dual;
我们在进入超级管理员sys用户中查询:
CONN sys/change_on_install AS SYSDBA;
SELECT * FROM TAB WHERE TNAME='DUAL';
在sys下存在此表
但是我在scott用户下能直接通过表名访问,正常情况下如果要访问不同用户
的表要使用“用户名.表名称”;
在sys用户下使用下列SQL语句
SELECT * FROM emp;
发生错误:表或则视图不存在
SELECT * FROM scott.emp;即可
可见DUAL实际上是通过同义词发挥了作用,同义词可以让其他用户通过一个
名称方便的访问“用户名.表名称”来访问其他用户下的表
CREATE SYNONYM 同义词名称 FOR 用户名.表名称;
范例:将scott用户下的emp表建立一个emp的同义词,然后在sys用户喜爱
通过同义词查询
CREATE SYNONYM emp FOR scott.emp;
SELECT * FROM emp;
可以完成查询
范例:删除emp的同义词
DROP SYNONYM emp;
来源:http://student.csdn.net/space.php?uid=362532&do=blog&id=32174