區別:1、視圖是已經編譯好的sql語句,而表不是;2、視圖沒有實際的物理記錄,而表有;3、表是內容,視圖是窗口;4、表是內模式,視圖是外模式;5、表屬于全局模式中的表,是實表,而視圖屬于局部模式的表,是虛表。
本教程操作環境:Windows7系統、oracle 11g版、Dell G3電腦。
一:什么是表:
表是作為oracle數據庫存儲數據的一種數據結構,就相當于我們在java中用集合list,或者數組存儲我們的數據一樣,表是一種二維結構,有行 有列,我們把相同類型的數據歸為一列,比如每個人都有姓名,我們就把姓名歸為一列,年齡歸為一列,而行對應著每個人的數據,比如第一行是小紅的姓名和年齡,第二行是小強的姓名和年齡。通過創建表然后向表中插入數據,最終實現對信息的存儲。
二:什么是視圖:
1、為什么要用視圖?
舉個例子,對于公司人員信息表上都有他們的薪資情況,財務再根據數據庫里薪資來給每個人發放工資,所以工資這一欄是非常重要的,所以為了保證運轉條理性,我們一般不能讓數據庫管理員看到這一欄的,畢竟管理員也是員工,對于這些敏感的信息,可能他看不到對大家都好。那么就衍生了該如何解決這個問題呢,有的人會說創建一個新的員工表,里面沒有員工工資一欄,但是這個方法可是非常不明智的,因為當我們把原來的數據修改之后豈不是還要再新表上還要做一次修改,而且在新表上做了修改還要更新到主表,中間就會出現很多問題的,此時利用視圖則是最合理的一個方法。
視圖是從已存在表上抽出邏輯相關的數據集合,其本身和表的區別不大,都是對數據一種存儲,只不過我們可以在已有表的基礎上抽取一部分我們想要的數據。
2、我們修改視圖之后會更新到基表中嗎?
這個是肯定的,視圖的意義就是對基表中的數據進行一部分提取后然后提供給其他人操作的,如果不能更新基表,那和新建一個表就毫無區別了,同時對于基表中數據的改變也能立馬更新視圖。
三:區別:
1、視圖是已經編譯好的sql語句。而表不是。
2、視圖沒有實際的物理記錄。而表有。
3、表是內容,視圖是窗口。
4、表只用物理空間而視圖不占用物理空間,視圖只是邏輯概念的存在,表可以及時對它進行修改,但視圖只能有創建的語句來修改。
5、表是內模式,視圖是外模式。
6、視圖是查看數據表的一種方法,可以查詢數據表中某些字段構成的數據,只是一些SQL語句的集合。從安全的角度說,視圖可以不給用戶接觸數據表,從而不知道表結構。
7、表屬于全局模式中的表,是實表;視圖屬于局部模式的表,是虛表。
8、視圖的建立和刪除只影響視圖本身,不影響對應的基本表。
推薦教程:《Oracle教程》