視圖概述
視圖的基本知識
概念:
視圖是由基於一個或多個表(或視圖)上的一個查詢所生成的虛擬表,其中不包含任何數據,只是保存着該查詢定義。對視圖的操作與對錶的操作一樣,可以對其進行查詢,修改(有一定的限制)和刪除。
作用
簡化用戶操作,使用戶關注自己感興趣的數據
優點:
1.方便用戶使用
2.提供一定程序的數據安全性
創建視圖
視圖名後面的屬性列可全部省略;隱含該視圖子查詢中select子句目標列中的字段組成。
下列情況屬性列不能夠省略
1.子查詢目標列有聚集函數或列表式
2.子查詢爲多表連接,並且選出幾個同名列作爲視圖的字段。
3.需要在視圖中爲某個列使用別名
創建性別爲“女生”的學生視圖,並要求對視圖進行更新時保證該視圖只有性別爲“女生”的學生
源碼:
create view is_student
as
select*from Student
where sex=‘女’
with check option
視圖的刪除
視圖的更新
系統對視圖的更新通常有如下限制:
由多表導出的視圖不允許更新
若視圖的屬性列來自表達式或常數,則不允許執行INSERT和UPDATE操作,但允許執行DELETE操作
定義中用到GROUP BY子句或聚集函數的視圖不允許更新
建立在一個不允許更新上的視圖不允許更新
一般都只允許對行列子集視圖進行更新
基本表中沒在視圖中出現的屬性無NOT NULL約束時,才允許進行插入操作
視圖的作用
視圖提供了一個簡化用戶操作的快捷方法
索引的概念
索引是建立在關係的某一屬性(組)上的一種數據結構,針對某個屬性建立索引,就是根據此屬性值將記錄進行邏輯排列
索引的作用
索引提供了在該屬性(組)上快速查找具有某個特定值的元組的方法
索引文件所佔磁盤空間通常比數據文件的少
索引記錄是有序的,可以使用二分查找法來查找索引鍵值所在記錄
索引的分類
聚集索引(聚簇索引,Clusered Index):數據文件中數據記錄的物理順序與索引記錄的排列順序在索引鍵上保持一致
非聚集索引(非聚集所以,Unclustered Index):數據文件中數據記錄不按索引鍵值物理排序
在數據庫中,視圖可以提供數據的安全性
可以根據需要在基本表上建立一個或多個索引,從而提高系統的查詢效率
授權控制
自主訪問控制
自主訪問控制就是用戶自主控制對數據庫對象的操作權限