INNER JOIN / left Join 聯結多個表
關於SQL的執行計畫/查看SQL語句的具體執行過程,工作原理SQL使用視圖的優缺點
2010-06-04 10:56:43| 分類: SQL | 標籤: |字型大小大中小 訂閱
在做資料庫開發中使用視圖的優點有:
1.可以訪問表中列的子集。在表中有些列是比較敏感的資料不想使用者看到的,如使用者密碼,員工工資等,用視圖可以隱藏這些列。
2.可以訪問表中行的子集。有時不想讓使用者看到與TA無關的資料時,可以在where條件中過濾,如企業中子公司的員工只能看到TA所在子公司的同事資料,而不想其它子公司員工資料也顯示出來,用過濾後查詢出來的資料集組成視圖。
3.可以重新命名列名。在表中有些列名定義沒有代表意義,如列“abc”,為了讓使用者看到列名就可以知該列是什麼資料,可以在組建視圖時重新命名列名。
4.可以快速存取兩表或多表串連所組成的資料。有時要訪問表間串連所組成的資料集,可以把查詢出來的資料集定義成視圖,可以協助快速存取所需的資料。
5.可以快速讀取用彙總函式運算所返回的資料集。有時使用者要讀取經過用彙總函式複雜運算後的結果集,每次讀取都是很耗時,這時可以把這運算後的資料集組成視圖,就可以避免每次讀取都要運算的消耗。
總的來講,使用視圖在提高安全性的同時也加快查詢的速度。
視圖的優點與缺點
在程式設計的時候必須先瞭解視圖的優缺點,這樣可以揚長避短,視圖具有如下的一些優點:
● 簡單性。視圖不僅可以簡化使用者對資料的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為視圖,從而使使用者不必為以後的操作每次都指定全部的條件。
● 安全性。通過視圖使用者只能查詢和修改他們所能見到的資料。資料庫中的其他資料則既看不見也取不到。資料庫授權命令可以使每個使用者對資料庫的檢索限制到特定的資料庫物件上,但不能授權到資料庫特定行和特定的列上。通過視圖,使用者可以被限制在資料的不同子集上。
● 邏輯資料獨立性。視圖可以使應用程式和資料庫表在一定程度上獨立。如果沒有視圖,應用一定是建立在表上的。有了視圖之後,程式可以建立在視圖之上,從而程式與資料庫表被視圖分割開來。
視圖也存在一些缺點,主要如下。
● 效能:SQL Server必須把視圖的查詢轉化成對基本表的查詢,如果這個視圖是由一個複雜的多表查詢所定義,那麼,即使是視圖的一個簡單查詢,SQL Server也把它變成一個複雜的結合體,需要花費一定的時間。
● 修改限制:當使用者試圖修改視圖的某些行時,SQL Server必須把它轉化為對基本表的某些行的修改。對於簡單視圖來說,這是很方便的,但是,對於比較複雜的視圖,可能是不可修改的。
所以,在定義資料庫物件時,不能不加選擇地來定義視圖,應該權衡視圖的優點和缺點,合理地定義視圖