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, 事先分配多少序列號放在內存中,提高速度。
訪問序列:
Oracle為序列提供了兩個偽列,可以看作其屬性。
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;
[試驗]:如何使用視圖作為安全機制
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隱藏數據的復雜性