1.視圖的創建方式
create view myView as + SQL語句
2.視圖的是用場景?
- 1)計算列的需要,數據庫設計范式要求我們減少冗余字段,因此現在很多數據表都沒有計算列字段,如采購單:有價格、數量、稅率、含稅金額,多半沒有不含稅金額、稅額,而這些字段在很多報表中有都會用到,所以我們可以創建一個含有計算列字段的視圖來解決這個問題。
- 2)不同表字段聚合,信息重組,如:經銷商通常有業務員,業務員通常有上下級關系(客戶經理、區域經理、大區經理等),因此查看經銷商業務員時我們需要看到直管業務員是誰?該業務員對應的區域經理、大區經理是誰(可能NULL)?因此我們可以聯合經銷商表、業務員信息表、業務員上下級關系表定義一個經銷商視圖。
- 3)安全性需要,主要是早期遺留系統集成需要,如:需要xx系統數據,又沒接口,怎么辦?直接操作數據庫,這時就涉及數據安全性,合理利用視圖則可以減少很多授權工作和保證數據安全性。當下新構建的系統幾乎都是暴露api接口,因此數據安全性更多關注在接口的身份認證和數據粒度方面。
- 4)兼容老的數據表,曾經碰到過這么個問題。
公司自主研發的進銷存管理系統,一開始自用的,后來合作伙伴企業也要用,所以打算Saas化,當初做了一個最大的變動就是幾乎所有表增加了一個使用單位(co_id)字段。悲催的是另外一個外購系統用到了采購單表,該系統已經停止維護、又繼續在用。於是就創建了一個co_id=自有公司的視圖,命名為原采購單表,而原采購單表改成新表名。這樣一來外購系統可以繼續使用,而且數據也沒問題。