程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 解析Oracle中的概念:同義詞、序列與視圖

解析Oracle中的概念:同義詞、序列與視圖

編輯:Oracle數據庫基礎
同義詞 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, 事先分配多少序列號放在內存中,提高速度。

  訪問序列:

  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隱藏數據的復雜性

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved