2 回答

TA貢獻1827條經(jīng)驗 獲得超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就解決問題。
還有一個用處,就是安全方面上的設(shè)置需要。
比如 人力資源那里,有一個員工表,里面有
員工的姓名、性別、生日、籍貫、工作年限、工資、所屬部門 等信息。
人力資源的人,希望你幫忙寫一個2011年,工作排版表的程序,但是又不希望你“知道得太多”。
那么就創(chuàng)建一個視圖
CREATE VIEW v_員工 AS
SELECT
姓名, 性別, 所屬部門
FROM
員工表
然后就給你一個 v_員工 的 檢索權(quán)限,讓你去寫 排班程序去了。
mysql 與 oracle 都有視圖
procedure 也就是存儲過程,也就是某些與數(shù)據(jù)庫操作比較緊密的操作,寫在存儲過程里面,比寫在 java 或者 C# 之類的外部,效果要好一些。
例如一個百貨商店的數(shù)據(jù)庫,每天晚上營業(yè)結(jié)束了,要統(tǒng)計銷售額,然后計算每個商品分類下面,當(dāng)天的營業(yè)額是多少,然后將統(tǒng)計數(shù)據(jù),插入到 統(tǒng)計表中。
這些操作,基本上就是 SELECT SUM / GROUP BY , 然后 INSERT INTO 的操作。
直接在數(shù)據(jù)庫內(nèi)部處理就可以了。
沒必要把一大堆查詢結(jié)果,先傳遞到外邊的一個 java 或者 c#寫的客戶端。
然后再通過 客戶端傳遞一大堆的 INSERT INTO 語句回來。

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