Oracle中的概念:同义词、序列与视图

2014-11-24 17:39:13 · 作者: · 浏览: 0

  同义词 synonym


  CREATE [PUBLIC]SYNONYM synonym For schema.object


  隐藏对象的名称和所有者:


  select count(*) from hr.employees;


  create synonym emp for hr.employees; --默认属于donny用户,是donny的私有对象private


  select count(*) from emp;


  为分布式数据库的远程对象提供了位置透明性:


  访问其他数据库时,要首先建立数据库连结:


  CREATE DATABASE LINK test_link CONNECT TO username IDENTIFIED BY pass USING 'orabase';


  Select count(*) from hr.employees@test_link;


  create synonym link_emp for hr.employees@test_link;


  select count(*) from link_emp;


  提供对象的公共访问:


  create public synonym pub_emp for hr.employees;


  pub_emp属于public用户,数据库所有用户都可以访问。


  同义词类型


  –私有 emp 实际上donny.emp


  –公用 pub_emp 所有用户都可以直接访问


  当公有对象和私有对象同名时(因为数据不同的用户,所以可以),以私有对象优先。(类似于局部变量)


  desc dba_synonyms/ user_synonyms/ all_synonyms 数据字典,复数


  tab公有同义词


  建立私有的tab表,查看效果。


  删除同义词:


  drop synonym donny.emp;


  drop public synonym pub_emp;


  序列sequence:


  CREATE SEQUENCE donny.seq  --也是属于某个用户的,以下参数均可省略,使用默认值。


  INCREMENT BY 1 --指定序列之间的间隔,正负整数;默认1,正为升序,负为降序。


  START WITH 1 --第一个序列号,默认=MINVALUE


  NOMAXVALUE --设置最大值,此处表示默认10的27次幂。MAXVALUE 10


  NOMINVALUE --设置最小值,此处表示默认-10的26次幂。MINVALUE 1


  NOCYCLE --或者CYCLE;表示序列达到最大或者最小(降序)后,要不要从头开始


  CACHE 10; --默认CACHE 20, 事先分配多少序列号放在内存中,提高速度。


  访问序列:


  Nextval: 根据increment by得到的一个新的序列值。每次执行都会得到一个新值。


  Currval: current value, 当前值,已经被取得的值。


  Select seq.nextval from dual;


  Select seq.currval from dual;


  使用序列:


  insert into t values(seq.nextval);


  修改序列:


  alter sequence seq …..重新指定各个参数


  不能修改start with;除非删除重建


  删除序列:


  drop sequence seq;


数据字典:


  desc dba_sequences / user_…/ all….


  视图view:


  CREATE [OR REPLACE][FORCE/ NOFORCE] VIEW AS


  Create view mytable


  As


  Select first_name||’,’||last_name


  from hr.employees;


  [试验]:如何使用视图作为安全 href="http://safe.it168.com/" target=_blank>安全机制


  1. desc考察hr.employees,看作一个公司的员工信息数据库表,简单说明


  2. 目标:实现每个员工都可以访问公司中所有雇员的name, email, phone_number,方便通讯


  3. 方案:


  a) 赋予所有员工访问hr.employees表的权限 salary


  b) 建立一个只包含合适字段的视图,然后赋予所有员工访问这个视图的权限,而不是表的权限。


  4. Alter user hr account unlock;


  Conn hr/hr


  Create view company_phone_book as


  Select first_name||’, ’||last_name name, email, phone_number


  From employees;


  Grant select on company_phone_book to public;


  Desc company_phone_book 对比列的长度


  Select * from company_phone_book;


  name隐藏数据的复杂性