2 回答

TA貢獻1827條經驗 獲得超4個贊
視圖2個用處,一個是方便查詢,比如下面的例子:
SQL> CREATE VIEW
2 v_sale_report_sum
3 AS
4 SELECT
5 sale_item,
6 SUM(sale_money) AS sale_money
7 FROM
8 sale_report
9 GROUP BY
10 sale_item;
View created.
SQL> SELECT * FROM v_sale_report_sum;
不使用視圖的話,你每查詢一次,都要寫一段很長的 SQL 語句。又是SUM 又是GROUP BY的。
有了視圖以后,一行SQL就解決問題。
還有一個用處,就是安全方面上的設置需要。
比如 人力資源那里,有一個員工表,里面有
員工的姓名、性別、生日、籍貫、工作年限、工資、所屬部門 等信息。
人力資源的人,希望你幫忙寫一個2011年,工作排版表的程序,但是又不希望你“知道得太多”。
那么就創建一個視圖
CREATE VIEW v_員工 AS
SELECT
姓名, 性別, 所屬部門
FROM
員工表
然后就給你一個 v_員工 的 檢索權限,讓你去寫 排班程序去了。
mysql 與 oracle 都有視圖
procedure 也就是存儲過程,也就是某些與數據庫操作比較緊密的操作,寫在存儲過程里面,比寫在 java 或者 C# 之類的外部,效果要好一些。
例如一個百貨商店的數據庫,每天晚上營業結束了,要統計銷售額,然后計算每個商品分類下面,當天的營業額是多少,然后將統計數據,插入到 統計表中。
這些操作,基本上就是 SELECT SUM / GROUP BY , 然后 INSERT INTO 的操作。
直接在數據庫內部處理就可以了。
沒必要把一大堆查詢結果,先傳遞到外邊的一個 java 或者 c#寫的客戶端。
然后再通過 客戶端傳遞一大堆的 INSERT INTO 語句回來。

TA貢獻1816條經驗 獲得超4個贊
視圖就是做多表查詢用的,這樣會很方便
oralce里同樣也有視圖.sql server里一樣也有
對于procedure我自己的理解就是
對于數據庫的記錄,,需要一次性進行多條sql語句的操作
至于view和procedure,沒有規定什么時候必須用
這些都是看具體的程序業務邏輯的實現
添加回答
舉報