資料庫系統中,檢視和表是什麼關係

時間 2021-10-14 22:18:03

1樓:匿名使用者

前者是sql的資料物件

再次並且寫法也很簡單。

最重要的是在伺服器的儲存和執行過程都幾乎是一樣的,二者都是以sql語句集儲存的,而且在執行之前都是經過編譯的,也就是不用每次都重新編譯,這樣可以大大提高執行效率。

顧名思義,其區別一個重在「過程」、一個重在「圖」。

也就是儲存過程涉及很多的資料處理,整個是一個複雜的過程。它可以接收引數,相當於一個函式。主要目的是用來處理資料。

而檢視是把現在有資料組合成新的形式展示出來,相當於一張虛擬的表,在執行時可以當作表table來進行查詢(增刪改是不行的)。其目的是用來呈現資料。

事實上,兩者其內部實現是基本一樣的,提供者在開發這些物件時,是針對不同目的不同應用的。

我們在使用時,同一件事情,實現的方法可以是多樣的,不是說只有那者行,其他的就不行。到底使用什麼來實現呢?這要對實際情況進行具體分析,看怎樣實現方便,怎樣實現高效。

以下是一些資料:

儲存過程

儲存過程(stored procedure)是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的一個重要物件,任何一個設計良好的資料庫應用程式都應該用到儲存過程。

總的來說,儲存過程具有以下一些優點:

◆儲存過程允許標準元件式程式設計

◆儲存過程能夠實現較快的執行速度

◆儲存過程能夠減少網路流量

◆儲存過程可被作為一種安全機制來充分利用

基本語法如下:

完整的語法規則如下:

create proc [ edure ] procedure_name [ ; number ]

[ [ varying ] [ = default ] [ output ]

] [ ,...n ]

[ with

] [ for replication ]

as sql_statement [ ...n ]

sql檢視

檢視可以被看成是虛擬表或儲存查詢。可通過檢視訪問的資料不作為獨特的物件儲存在資料庫內。資料庫記憶體儲的是 select 語句。

select 語句的結果集構成檢視所返回的虛擬表。使用者可以用引用表時所使用的方法,在 transact-sql 語句中通過引用檢視名稱來使用虛擬表。使用檢視可以實現下列任一或所有功能:

將使用者限定在表中的特定行上。

例如,只允許僱員看見工作跟蹤表內記錄其工作的行。

將使用者限定在特定列上。

例如,對於那些不負責處理工資單的僱員,只允許他們看見僱員表中的姓名列、辦公室列、工作**列和部門列,而不能看見任何包含工資資訊或個人資訊的列。

將多個表中的列聯接起來,使它們看起來象一個表。

聚合資訊而非提供詳細資訊。

例如,顯示一個列的和,或列的最大值和最小值。

通過定義 select 語句以檢索將在檢視中顯示的資料來建立檢視。select 語句引用的資料表稱為檢視的基表。在下例中,pubs 資料庫中的 titleview 是一個檢視,該檢視選擇三個基表中的資料來顯示包含常用資料的虛擬表:

create view titleview

as select title, au_ord, au_lname, price, ytd_sales, pub_id

from authors as a

join titleauthor as ta on (a.au_id = ta.au_id)

join titles as t on (t.title_id = ta.title_id)

之後,可以用引用表時所使用的方法在語句中引用 titleview。

select *

from titleview

一個檢視可以引用另一個檢視。例如,titleview 顯示的資訊對管理人員很有用,但公司通常只在季度或年度財務報表中才公佈本年度截止到現在的財政數字。可以建立一個檢視,在其中包含除 au_ord 和 ytd_sales 外的所有 titleview 列。

使用這個新檢視,客戶可以獲得已上市的書籍列表而不會看到財務資訊:

create view cust_titleview

as select title, au_lname, price, pub_id

from titleview

檢視可用於在多個資料庫或 microsoft? sql server? 2000 例項間對資料進行分割槽。

分割槽檢視可用於在整個伺服器組內分佈資料庫處理。伺服器組具有與伺服器聚集相同的效能優點,並可用於支援最大的 web 站點或公司資料中心的處理需求。原始表被細分為多個成員表,每個成員表包含原始表的行子集。

每個成員表可放置在不同伺服器的資料庫中。每個伺服器也可得到分割槽檢視。分割槽檢視使用 transact-sql union 運算子,將在所有成員表上選擇的結果合併為單個結果集,該結果集的行為與整個原始表的複本完全一樣。

例如在三個伺服器間進行表分割槽。在第一個伺服器上定義如下的分割槽檢視:

create view partitionedview as

select *

from mydatabase.dbo.partitiontable1

union all

select *

from server2.mydatabase.dbo.partitiontable2

union all

select *

from server3.mydatabase.dbo.partitiontable3

在其它兩個伺服器上定義類似的分割槽檢視。利用這三個檢視,三個伺服器上任何引用 partitionedview 的 transact-sql 語句都將看到與原始表中相同的行為。似乎每個伺服器上都存在原始表的複本一樣,而實際上每個表只有一個成員表和分割槽檢視。

有關更多資訊,請參見檢視使用方案。

只要所做的修改隻影響檢視所引用的其中一個基表,就可以更新所有 sql server 版本內的檢視(可以對其執行 update、delete 或 insert 語句)。

-- increase the prices for publisher 』0736』 by 10%.

update titleview

set price = price * 1.10

where pub_id = 』0736』

go sql server 2000 支援可引用檢視的更復雜的 insert、update 和 delete 語句。可在檢視上定義 instead of 觸發器,指定必須對基表執行的個別更新以支援 insert、update 或 delete 語句。另外,分割槽檢視還支援 insert、udpate 和 delete 語句修改檢視所引用的多個成員表。

索引檢視是 sql server 2000 具有的功能,可顯著提高複雜檢視型別的效能,這些檢視型別通常在資料倉儲或其它決策支援系統**現。

檢視的結果集通常不儲存在資料庫中,因此檢視也稱為虛擬表。檢視的結果集動態包含在語句邏輯中並在執行時動態生成。有關更多資訊,請參見視**析。

複雜的查詢(如決策支援系統中的查詢)可引用基表中的大量行,並將大量資訊聚積在相對較簡潔的聚合中,如總和或平均值。sql server 2000 支援在執行此類複雜查詢的檢視上建立聚集索引。當執行 create index 語句時,檢視 select 的結果集將永久儲存在資料庫中。

sql 語句此後若引用該檢視,響應時間將會顯著縮短。對基本資料的修改將自動反映在檢視中。

sql server 2000 create view 語句支援 schemabinding 選項,以防止檢視所引用的表在檢視未被調整的情況下發生改變。必須為任何建立索引的檢視指定 schemabinding。

例:建立檢視

create view titleview

as select id,title,posttime,hits from [list]

然後引用select top 100 * from titleview

用迴圈輸出資料與直接select top 100 * from [list]相比速度提高將近30毫秒!

當然我這裡只是舉例子,一般情況下對單個表沒必要去用檢視

2樓:匿名使用者

資料庫系統中,檢視是資料物件,檢視可以被看成是虛擬表或儲存查詢,只有在資料庫開啟時才能使用。

表是處理資料、建立關聯式資料庫和應用的基本單元,可以是自由表,或是資料庫的一部分的資料庫表。

3樓:匿名使用者

檢視是建立在表的基礎上的

4樓:匿名使用者

在資料庫中,檢視是實際上是「不存在」的。

資料庫只儲存檢視的「定義」,但是對檢視的訪問查詢最終還要轉換到對資料表的查詢。

就相當於提供了一層抽象。懂了嗎(方便管理)。

關係型資料庫是什麼?關係型資料庫有哪些

關係型資料庫以行和列的形式儲存資料,以便於使用者理解。這一系列的行和列被稱為表,一組表組成了資料庫。表與表之間的資料記錄有關係。使用者用查詢 query 來檢索資料庫中的資料。一個query是一個用於指定資料庫中行和列的select語句。關係型資料庫通常包含下列元件 客戶端應用程式 client 資...

資料庫的都有什麼特點,資料庫系統的主要特點是什麼?

小賴被我抓走了 資料庫是存放資料的倉庫。它的儲存空間很大,可以存放百萬條 千萬條 上億條資料。但是資料庫並不是隨意地將資料進行存放,是有一定的規則的,否則查詢的效率會很低。當今世界是一個充滿著資料的網際網路世界,充斥著大量的資料。即這個網際網路世界就是資料世界。資料的 有很多,比如出行記錄 消費記錄...

在開發資料庫系統時,為什麼要做軟體需求分析

只有做了軟體需求分析,你才知道要建那些表,表結構是怎樣的,表之間的關係是 怎樣 的,知道了這些你才能做資料庫系統設計 後泰和度知 資料庫設計 1 資料庫需求分析 1 針對超市進銷存管理系統,分別對採購部門 銷售部門和庫存保管部門進行詳細的調研和分析,總結出如下的需求資訊 商品按類管理,所以需要有一商...