DBlink及同义词(synonym )
--1、如果需要创建全局 DBLink,则需要先确定用户有创建 dblink 的权限:
select * from user_sys_privs where privilege like upper('%DATABASE LINK%');--如果用户无创建dblink权限
grant create public database link to dbusername;
--2.创建dblink
create /* public */ database link dblink1
connect to tpssprod identified by tpssprod
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 135.149.16.11)(PORT = 1650)))(CONNECT_DATA =(SERVICE_NAME = jstest)))';
--3.删除dblink
drop /* public */ database link dblink1;
--4.查询远端数据库表
select * from tpssprod.gj_tpss_attr@dblink1;
--5.创建同义词(相当是给表创建一个别名)
/*命令*/ create [public] synonym table_name for table_name@DB_Link;
/*实例*/
create synonym prod_attr for tpssprod.gj_tpss_attr@dblink1;--为tpssprod.gj_tpss_attr@dblink1创建同义词prod_attr
--利用创建的同义词对以上表进行访问
select * from prod_attr;
--删除同义词
drop public synonym table_name;
--查看已有的同义词
select * from dba_synonyms
视图(VIEW)
创建视图(用法同同义词的使用)--1>.创建一个测试表表
create table test_view_tab(id number(9),name varchar2(20));
insert into test_view_tab values(1,'logy');
--2>.创建视图
--给当前用户授权
grant dba to testuser;
create or replace view test_view as select * from test_view_tab;
--查询视图
select * from test_view;
以下有一段描述视图使用方法,来自网上,感谢网络上哪些默默无闻的同僚们.
视图实际上是一个或多个表上的预定义查询,这些表称为基表。
视图并不存储数据,只是在查询视图时才访问基表。
视图的优点:
·限制用户只能通过视图检索数据,对用户屏蔽基表
·可以将复杂的查询编写为视图,减少用户查询的复杂度
·限制某个视图只能访问基表中的部分数据,提高了安全性
//
创建视图
create [or replace] [{force|noforce}] view view_name
[(alias_name[,alias_name...])]
as subquery
[with {check option|read only} constraint constraint_name]
or replace:如果视图存在就替换它。
force:即使基表不存在也要建立该视图。
noforce:若基表不存在就不建立此视图,默认值。
view_name:视图名称。
alias_name:为自查询中的表达式指定一个别名,别名个数与子查询中列数相同。
subquery:指定一个子查询,它对基表进行查询,如果已经提供别名,可以在select子句之后的列表中使用别名
with check option:表名只有子查询检索的行才能被插入、删除、更新,
默认情况下,在插入、删除、更新行之前并不会检查这些行是否被子查询检索。
constraint_name:指定with check option或read only约束的名称。
with read only:说明只能对基表中的行进行只读访问。
视图有两种基表类型 :
·简单视图,包含一个子查询,它只能从一个基表中检索数据
·复杂视图,包含一个子查询,有以下特点:
·从多个基表中检索数据
·使用group by或distinct子句对行进行分组
·包含函数调用