oracle-視圖(view)

来源:http://www.cnblogs.com/hj-oop/archive/2017/07/27/7246750.html
-Advertisement-
Play Games

一、視圖的定義 視圖也稱為虛表,視圖本身不占用物理存儲空間,視圖存放於數據字典中,簡單的來說視圖可以看做是sql語句的集合。視圖從資料庫中的表產生,這些表稱為視圖的基表,一個視圖可以從另一個視圖中產生。 視圖看上去非常象資料庫的物理表,對它的操作同任何其它的表一樣。當通過視圖修改數據時,實際上是在改 ...


一、視圖的定義

視圖也稱為虛表,視圖本身不占用物理存儲空間,視圖存放於數據字典中,簡單的來說視圖可以看做是sql語句的集合。視圖從資料庫中的表產生,這些表稱為視圖的基表,一個視圖可以從另一個視圖中產生。

視圖看上去非常象資料庫的物理表,對它的操作同任何其它的表一樣。當通過視圖修改數據時,實際上是在改變基表中的數據;相反地,基表數據的改變也會自動反映在由基表產生的視圖中。由於邏輯上的原因,有些Oracle視圖可以修改對應的基表,有些則不能(僅僅能查詢)。

tips:對視圖的查詢沒有限制,對視圖的插入、刪除、更新一般會有限制,所以為防止通過視圖來修改基表的數據可以將視圖創建為只讀(帶with read only)

二、視圖的作用

  1)提供各種數據表現形式, 可以使用各種不同的方式將基表的數據展現在用戶面前, 以便符合用戶的使用習慣(主要手段: 使用別

名);

  2)隱藏數據的邏輯複雜性並簡化查詢語句, 多表查詢語句一般是比較複雜的, 而且用戶需要瞭解表之間的關係, 否則容易寫錯; 如果

  基於這樣的查詢語句創建一個視圖, 用戶就可以直接對這個視圖進行"簡單查詢"而獲得結果. 這樣就隱藏了數據的複雜性並簡化了查詢語句.

  這也是oracle提供各種"數據字典視圖"的原因之一,all_constraints就是一個含有2個子查詢並連接了9個表的視圖(在catalog.sql中定義);

  3)執行某些必須使用視圖的查詢. 某些查詢必須藉助視圖的幫助才能完成. 比如, 有些查詢需要連接一個分組統計後的表和另一

  表, 這時就可以先基於分組統計的結果創建一個視圖, 然後在查詢中連接這個視圖和另一個表就可以了;

  4)提供某些安全性保證. 視圖提供了一種可以控制的方式, 即可以讓不同的用戶看見不同的列, 而不允許訪問那些敏感的列, 這樣就可

以保證敏感數據不被用戶看見;

  5)簡化用戶許可權的管理. 可以將視圖的許可權授予用戶, 而不必將基表中某些列的許可權授予用戶, 這樣就簡化了用戶許可權的定義。

  三、視圖創建

  SQL> create view vw_emp as select empno,ename,job,hiredate,deptno from emp;

 

 

  SQL> select * from vw_emp where deptno=10;

    MPNO ENAME JOB HIREDATE DEPTNO

----------     ---------- --------- ---------

    7782  CLARK  MANAGER   09-JUN-81  10

    7839  KING   PRESIDENT   17-NOV-81  10

    7934  MILLER  CLERK     23-JAN-82  10

  對簡單視圖進行DML操作:

  SQL> insert into vw_emp values(1,'a','aa','05-JUN-88',10);
  SQL> update vw_emp set ename='cc' where ename='KING';
  SQL> delete vw_emp where ename='cc';
  SQL> select * from vw_emp where deptno=10

        EMPNO ENAME      JOB       HIREDATE      DEPTNO
        ---------- ---------- --------- --------- ---------
          7782 CLARK      MANAGER   09-JUN-81         10
          7934 MILLER     CLERK     23-JAN-82         10
             1 a          aa        05-JUN-88         10

  基表也發生了相應的更改:

  SQL> select empno,ename,job,hiredate,deptno from emp where deptno=10;

   創建只讀視圖:

  SQL> create view vw_emp_readonly as select empno,ename,job,hiredate,deptno from emp with read only;

  刪除視圖:

  可以刪除當前模式中的任何視圖;
    如果要刪除其他模式中的視圖,必須擁有DROP ANY VIEW系統許可權;
    視圖被刪除後,該視圖的定義會從詞典中被刪除,並且在該視圖上授予的“許可權”也將被刪除。視圖被刪除後,其他引用該視圖的視圖及存儲過程等都會失效。

  drop view vw_test;

  四、查看視圖:

  使用數據字典視圖
  1 dba_views——DBA視圖描述資料庫中的所有視圖
  2 all_views——ALL視圖描述用戶“可訪問的”視圖
  3 user_views——USER視圖描述“用戶擁有的”視圖
  4 dba_tab_columns——DBA視圖描述資料庫中的所有視圖的列(或表的列)
  5 all_tab_columns——ALL視圖描述用戶“可訪問的”視圖的列(或表的列)
  6 user_tab_columns——USER視圖描述“用戶擁有的”視圖的列(或表的列)

 

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.查找是否存在指定包名的App 2.創建Intent,刪除指定包名的App ...
  • 一、NSTimer使用時有哪些需要註意點? 1、必須保證有一個活躍的RunLoop。 NSTimer是基於RunLoop的一種定時機制,這涉及到預設主線程和子線程RunLoop的知識延伸;同時還有頁面滑動時防止定時器失效的知識點: 解決方案:[[NSRunLoop currentRunLoop] a ...
  • 目錄 · 概況 · 原理 · MapReduce編程模型 · MapReduce過程 · 容錯機制 · API · 概況 · WordCount示例 · Writable介面 · Mapper類 · Reducer類 · Partitioner抽象類 · WritableComparator介面 · ...
  • SQL Server 中數據存儲的基本單位是頁。為資料庫中的數據文件(.mdf 或 .ndf)分配的磁碟空間可以從邏輯上劃分成頁(從 0 到 n 連續編號)。磁碟 I/O 操作在頁級執行。也就是說,SQL Server 讀取或寫入所有數據頁。 區是八個物理上連續的頁的集合,用來有效地管理頁。所有頁都 ...
  • 目錄 · 概況 · 原理 · 資源調度器分類 · YARN架構 · ResourceManager · NodeManager · ApplicationMaster · Container · YARN工作流程 · YARN資源調度 · 操作 · Overview · User Commands ...
  • 目錄 · 概況 · 原理 · HDFS 架構 · 塊 · NameNode · SecondaryNameNode · fsimage與edits合併 · DataNode · 數據讀寫 · 容錯機制 · 數據完整性 · NameNode HA · NameNode Federation · HDF ...
  • 1. mysql是一種常用的資料庫管理軟體,優點有:免費,開源,跨平臺,本文只是介紹一下MySQL的簡單操作 2.資料庫的基本結構 可以把資料庫理解成一個文件夾,資料庫中的數據存放的單位是表,可以理解為excel表格,表格的表頭稱為欄位,表中的每一條數據稱為記錄 3.MySQL安裝 1.從官網下載  ...
  • SQLite doesn't support high concurrency. In case of a lot of concurrent access from multi-process or multi-thread, calling a SQLite r/w function is pr ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...