⑴ 什麼叫基本表什麼是視圖二者的區別和聯系是什麼
基本表是資料庫中用來存儲數據的對象,是有結構的數據的集合,是整個資料庫系統的基礎。數據在表中式按行和列的格式組織排列的。
視圖是計算機資料庫中的一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在資料庫中以存儲的數據值集形式存在。
基本表、視圖區別為:存在不同、存儲內容不同、操作不同。視圖是由一個或幾個基本表導出形成的虛表。
一、存在不同
1、基本表:基本表是本身獨立存在的表。
2、視圖:視圖本身不存在獨立存儲在資料庫中,是一個虛表。
二、存儲內容不同
1、基本表:基本表存儲的內容是實際的數據。
2、視圖:視圖存儲的內容只有存儲定義,不存放實際數據。
三、操作不同
1、基本表:操作者可以對基本表進行增刪改查四種操作。
2、視圖:操作者只可以對視圖進行查操作,不能進行增刪改操作。
參考資料來源:
網路——表
網路——視圖
⑵ 資料庫的視圖(VIEW)增加一個列是用UPDATE 還是INSERT 具體如何實現,請舉個例子
您好,CREATE VIEW
創建一個虛擬表,該表以另一種方式表示一個或多個表中的數據。CREATE VIEW 必須是查詢批處理中的第一條語句。
語法
CREATE VIEW [ < database_name > .] [ < owner > .] view_name [ ( column [ ,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }
參數
view_name
是視圖的名稱。視圖名稱必須符合標識符規則。可以選擇是否指定視圖所有者名稱。
column
是視圖中的列名。只有在下列情況下,才必須命名 CREATE VIEW 中的列:當列是從算術表達式、函數或常量派生的,兩個或更多的列可能會具有相同的名稱(通常是因為聯接),視圖中的某列被賦予了不同於派生來源列的名稱。還可以在 SELECT 語句中指派列名。
如果未指定 column,則視圖列將獲得與 SELECT 語句中的列相同的名稱。
說明 在視圖的各列中,列名的許可權在 CREATE VIEW 或 ALTER VIEW 語句間均適用,與基礎數據源無關。例如,如果在 CREATE VIEW 語句中授予了 title_id 列上的許可權,則 ALTER VIEW 語句可以將 title_id 列改名(例如改為 qty),但許可權仍與使用 title_id 的視圖上的許可權相同。
n
是表示可以指定多列的佔位符。
AS
是視圖要執行的操作。
select_statement
是定義視圖的 SELECT 語句。該語句可以使用多個表或其它視圖。若要從創建視圖的 SELECT 子句所引用的對象中選擇,必須具有適當的許可權。
視圖不必是具體某個表的行和列的簡單子集。可以用具有任意復雜性的 SELECT 子句,使用多個表或其它視圖來創建視圖。
在索引視圖定義中,SELECT 語句必須是單個表的語句或帶有可選聚合的多表 JOIN。
對於視圖定義中的 SELECT 子句有幾個限制。CREATE VIEW 語句不能:
包含 COMPUTE 或 COMPUTE BY 子句。
包含 ORDER BY 子句,除非在 SELECT 語句的選擇列表中也有一個 TOP 子句。
包含 INTO 關鍵字。
引用臨時表或表變數。
因為 select_statement 使用 SELECT 語句,所以在 FROM 子句中指定 <join_hint> 和 <table_hint> 提示是有效的。有關更多信息,請參見 FROM 和 SELECT。
在 select_statement 中可以使用函數。
select_statement 可使用多個由 UNION 或 UNION ALL 分隔的 SELECT 語句。
WITH CHECK OPTION
強制視圖上執行的所有數據修改語句都必須符合由 select_statement 設置的准則。通過視圖修改行時,WITH CHECK OPTION 可確保提交修改後,仍可通過視圖看到修改的數據。
WITH ENCRYPTION
表示 SQL Server 加密包含 CREATE VIEW 語句文本的系統表列。使用 WITH ENCRYPTION 可防止將視圖作為 SQL Server 復制的一部分發布。
SCHEMABINDING
將視圖綁定到架構上。指定 SCHEMABINDING 時,select_statement 必須包含所引用的表、視圖或用戶定義函數的兩部分名稱 (owner.object)。
不能除去參與用架構綁定子句創建的視圖中的表或視圖,除非該視圖已被除去或更改,不再具有架構綁定。否則,SQL Server 會產生錯誤。另外,如果對參與具有架構綁定的視圖的表執行 ALTER TABLE 語句,而這些語句又會影響該架構綁定視圖的定義,則這些語句將會失敗。
VIEW_METADATA
指定為引用視圖的查詢請求瀏覽模式的元數據時,SQL Server 將向 DBLIB、ODBC 和 OLE DB API 返回有關視圖的元數據信息,而不是返回基表或表。瀏覽模式的元數據是由 SQL Server 向客戶端 DB-LIB、ODBC 和 OLE DB API 返回的附加元數據,它允許客戶端 API 實現可更新的客戶端游標。瀏覽模式的元數據包含有關結果集內的列所屬的基表信息。
對於用 VIEW_METADATA 選項創建的視圖,當描述結果集中視圖內的列時,瀏覽模式的元數據返回與基表名相對的視圖名。
當用 VIEW_METADATA 創建視圖時,如果該視圖具有 INSERT 或 UPDATE INSTEAD OF 觸發器,則視圖的所有列(timestamp 除外)都是可更新的。請參見本主題後面的"可更新視圖"。
注釋
只能在當前資料庫中創建視圖。視圖最多可以引用 1,024 列。
通過視圖進行查詢時,Microsoft® SQL Server™ 將檢查以確定語句中任意位置引用的所有資料庫對象是否都存在,這些對象在語句的上下文中是否有效,以及數據修改語句是否沒有違反任何數據完整性規則。如果檢查失敗,將返回錯誤信息。如果檢查成功,則將操作轉換成對基礎表的操作。
如果某個視圖依賴於已除去的表(或視圖),則當有人試圖使用該視圖時,SQL Server 將產生錯誤信息。如果創建了新表或視圖(該表的結構與以前的基表沒有不同之處)以替換除去的表或視圖,則視圖將再次可用。如果新表或視圖的結構發生更改,則必須除去並重新創建該視圖。
⑶ SQL語言中的「視圖(View) 」對應於資料庫三級模式結構中的( )。
外模式 外模式是資料庫用戶能夠看見和使用的局部數據的邏輯結構和特徵的描述,是資料庫用戶的數據視圖,是某一應用有關的數據的邏輯表示,外模式是保證資料庫安全性的一個有力支持,通過視圖每個用戶只能看見和訪問所對應的外模式中的數據,而資料庫中的其餘數據是不可見的
⑷ 資料庫中的view有何作用
視圖是把現在有數據組合成新的形式展示出來,相當於一張虛擬的表,運行時用來呈現數據。 視圖和存儲過程的區別只能查。。。增刪改是不行的 好處是 不用存儲在資料庫里。。
⑸ 資料庫中的procere和view有什麼區別請問
Procere就像是執行子查詢表格,接受參數,你可以用where或者order by這樣的參數經行進一步的定義
Procere被定義出來之後,非常的方便,下次如果需要調用相同的命令,就直接把procere名字打上去就能顯示結果,通常為內部人員使用。
View本身就是顯示一個表格,View可以顯示出表格,但是VIEW本身並沒有包括任何數據,view也不接受參數,所以其實view就是一個虛擬的表格,而不是實際的,所以在需要參數的時候,需要提前在建立view的時候定義好。VIEW一般是給外部非專業IT人員使用,因為你可以隨意修改名稱並限定輸出的內容。
⑹ 關於向資料庫中的view插入數據
有的VIEW可以插入數據,數據會保存在相應的表中,看建立的語句。
補充:
各類資料庫可能對VIEW的INSERT和UPDATE規定有區別,下面是MYSQL的規定:
關於可插入性(可用INSERT語句更新),如果它也滿足關於視圖列的下述額外要求,可更新的視圖也是可插入的:
·不得有重復的視圖列名稱。
·視圖必須包含沒有默認值的基表中的所有列。
·視圖列必須是簡單的列引用而不是導出列。導出列不是簡單的列引用,而是從表達式導出的。下面給出了一些導出列示例:
·3.14159
·col1+3
·UPPER(col2)
·col3/col4
·(subquery)
混合了簡單列引用和導出列的視圖是不可插入的,但是,如果僅更新非導出列,視圖是可更新的。考慮下述視圖:
CREATEVIEWvASSELECTcol1,1AScol2FROMt;
該視圖是不可插入的,這是因為col2是從表達式導出的。但是,如果更新時不更新col2,它是可更新的。這類更新是允許的:
UPDATEvSETcol1=0;
下述更新是不允許的,原因在於,它試圖更新導出列:
UPDATEvSETcol2=0;
⑺ oracle資料庫的view中能添加數據嗎
不能添加數據。
不管是oracle還是sql server,view只是個視圖,是虛擬存在的,並沒有實際的對應物件,所以無法對view的資料進行修改。
只能通過view尋找到對應的table,再針對table進行數據的操作,
對table進行數據操作後,結果會反應到調用該table的view中。
⑻ sql server中table和view區別
zzhd7
回答的很正確了,table
是存儲數據的表,
我們經常用sql語句如;
select
姓名,性別
from
學生表
對
學生這個table進行查詢,這是個簡單查詢,但是當我們要將
table1,table2,table3
,table4
..........好多個表進行多表查詢的時候,我們不想每次都寫一連竄的連接語句我們想讓資料庫記住這個復雜的語句要讓資料庫將這復雜的語句編譯到資料庫緩存中(速度更快)!!或者我們還不想讓程序員知道這個復雜的查詢涉及到了table1,table2,table3
,table4
.........這么多表,這時我們就可以建立一個view
像程序員提供view而不是sql。其實這個view就是一個起了名字的查詢語句,view是會被資料庫實例放入緩存預先編譯的!他就是一個虛擬的表!!!
ok
了!!!不知道我說的清楚不清楚?