同义词相当于一个表对象的别名。如同创建视图一样并与视图的作用相当。
同义词的作用之一就是保护数据源表的数据安全,通过别名避免了源表的暴露,
通过同义词,就可以进行select,DML操作。还有就是,删除了同义词,不会连同删除
源表,这也是确保源表数据的安全。以下是创建同义词并测试的过程。
---创建同义词:
--使用suxing用户尝试给测试表创建一个同义词:
suxing@PROD>create synonym seqt for seqtest;
create synonym seqt for seqtest
*
ERROR at line 1:
ORA-01031: insufficient privileges
#报错显示:suxing用户还没有创建同义词的权限。
--通过SYS用户将创建同义词的权限授予给suxing用户:
sys@PROD>grant create synonym to suxing;
Grant succeeded.
#授权成功。
--使用suxing用户再次尝试创建表seqtest的同义词seqt:
suxing@PROD>create synonym seqt for seqtest;
Synonym created.
#同义词创建成功。
--通过同义词查看测试表的数据记录:
suxing@PROD>select * from seqt;
ID NAME SCORE CREATED
---------- ---------- ---------- -------------------
11 susu 93.5 2016-11-29 11:22:46
12 kkkk 98 2016-11-29 11:27:04
13 ookk 95.8 2016-11-29 11:29:22
#通过视图,也可以查看与其相关联表的数据。
--尝试通过同义词给测试表插入一条记录:
suxing@PROD>insert into seqt values(mysequence.nextval,'synonym',91.5,sysdate);
1 row created.
suxing@PROD>commit;
Commit complete.
suxing@PROD>select * from seqt;
ID NAME SCORE CREATED
---------- ---------- ---------- -------------------
11 susu 93.5 2016-11-29 11:22:46
12 kkkk 98 2016-11-29 11:27:04
13 ookk 95.8 2016-11-29 11:29:22
14 synonym 91.5 2016-11-29 12:07:39
--尝试查看同义词的结构:
suxing@PROD>desc seqt
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(3)
NAME VARCHAR2(10)
SCORE NUMBER(3,1)
CREATED DATE
#同义词的结构与其相关联表的结构相同。
--尝试删除同义词后是否连同源表也删除:
suxing@PROD>drop synonym seqt;
Synonym dropped.
#同义词已经删除成功。
--尝试查看同义词:
suxing@PROD>desc seqt
ERROR:
ORA-04043: object seqt does not exist
#同义词已经删除。
--尝试查看表seqtest:
suxing@PROD>select * from seqtest;
ID NAME SCORE CREATED
---------- ---------- ---------- -------------------
11 susu 93.5 2016-11-29 11:22:46
12 kkkk 98 2016-11-29 11:27:04
13 ookk 95.8 2016-11-29 11:29:22
14 synonym 91.5 2016-11-29 12:07:39
#表中的数据记录依然在。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2129287/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31392094/viewspace-2129287/