有的可以,有的不可以,視圖與表是兩個概念,UPDATE視圖,實際就是修改了視圖對應的表中的數據,自己可以測試一下!但如果視圖中沒有表(因為有的視圖並不一定有表),則不能更新!比如:
create view ass (a, b, c) AS select 0, 's', 0 就不依賴表,當然不能更新,如果在生成視圖的SQL語句中有UNION關鍵字時,也不能更新,其它很多視圖是可以更新和修改的,修改的列是對應的表中的列。
『貳』 sql 中在什麼情況下使用視圖,有什麼好處
什麼情況下會用到視圖?
比如說一個比較復雜的查詢不想每次都寫很多語句,就可以寫個視圖。下次查詢的時候是需要使用select * from視圖名就可以了。
或者給特定用戶開放某些表的讀取許可權,但要加一些行和列的限制,也可以寫個視圖。
視圖的好處,可以主要分為四點:
第一點: 使用視圖,可以定製用戶數據,聚焦特定的數據。
解釋:
在實際過程中,公司有不同角色的工作人員。
以銷售公司為例:,采購人員,可以需要一些與其有關的數據,而與他無關的數據,對沒有任何意義,我們可以根據這一實際情況,專門為采購人員創建一個視圖,以後他在查詢數據時,只select*fromview_caigou就可以了。
第二點:使用視圖,可以簡化數據操作。
解釋:
在使用查詢時,在很多時候要使用聚合函數,同時還要顯示其它欄位的信息,可能還會需要關聯到其它表,這時寫的語句可能會很長,如果這個動作頻繁發生的話,則可以創建視圖。以後要用的話,只需要select*fromview1就可以了。
第三點:使用視圖,基表中的數據就有了一定的安全性
因為視圖是虛擬的,物理上是不存在的,只是存儲了數據的集合,故可以將基表中重要的欄位信息,可以不通過視圖給用戶,視圖是動態的數據的集合,數據是隨著基表的更新而更新。同時,用戶對視圖,不可以隨意的更改
和刪除,可以保證數據的安全性。
第四點:可以合並分離的數據,創建分區視圖
隨著社會的發展,公司業務量不斷的擴大,一個大公司,下屬都設有很多的分公司,為了管理方便,需要統一表的結構,定期查看各公司業務情況,而分別看各個公司的數據很不方便,沒有很好的可比性,如果將這些數據合並為一個表格里,就方便多了,這時就可以使用union關鍵字,將各分公司的數據合並為一個視圖。
『叄』 請問SQL中視圖與查詢的區別
SQL中視圖與查詢的區別為:功能不同、歸屬不同、數據來源不同。
一、功能不同
1、視圖:視圖可以更新欄位內容並返回原表。
2、查詢:查詢文件中的記錄數據不能修改。
二、歸屬不同
1、視圖:視圖不是一個獨立的文件,它保存在資料庫中。
2、查詢:查詢是一個獨立的文件,不屬於資料庫。
三、數據來源不同
1、視圖:視圖的數據來源可以是本地數據源,也可以是遠程數據源。
2、查詢:查詢的數據來源只有本地數據源,不能訪問遠程數據源。
『肆』 SQL中視圖的定義與作用是什麼做好結合實例講解一下,視圖能存儲數據嗎與表有什麼區別
從用戶角度來看,一個視圖是從一個特定的角度來查看資料庫中的數據。從資料庫系統內部來看,一個視圖是由SELECT語句組成的查詢定義的虛擬表。從資料庫系統內部來看,視圖是由一張或多張表中的數據組成的,從資料庫系統外部來看,視圖就如同一張表一樣,對表能夠進行的一般操作都可以應用於視圖,例如查詢,插入,修改,刪除操作等。
更多視圖的知識,請在這里查看
http://ke..com/view/71981.htm
語法
CREATE VIEW view [(field1[, field2[, ...]])] AS selectstatement
CREATE VIEW 語句可分為以下幾個部分:
部分 說明
view 欲創建的索引的名稱。
field1, field2 選擇語句中標明的相應欄位名.
示例:
CREATE VIEW Customers
AS
SELECT *
FROM CompanyData.dbo.Customers_33
『伍』 SQL視圖查詢
視圖可以被看成是虛擬表或存儲查詢。可通過視圖訪問的數據不作為獨特的對象存儲在資料庫內。資料庫內存儲的是 SELECT 語句。SELECT 語句的結果集構成視圖所返回的虛擬表。用戶可以用引用表時所使用的方法,在 Transact-SQL 語句中通過引用視圖名稱來使用虛擬表 視圖使用方案 視圖通常用來集中、簡化和自定義每個用戶對資料庫的不同認識。視圖可用作安全機制,方法是允許用戶通過視圖訪問數據,而不授予用戶直接訪問視圖基礎表的許可權。從(或向)Microsoft® SQL Server™ 2000 復制數據時也可使用視圖來提高性能並分區數據。 著重於特定數據 視圖讓用戶能夠著重於他們所感興趣的特定數據和所負責的特定任務。不必要的數據可以不出現在視圖中。這同時增強了數據的安全性,因為用戶只能看到視圖中所定義的數據,而不是基礎表中的數據。有關出於安全考慮使用視圖的更多信息,請參見使用視圖作為安全機制。 簡化數據操作 視圖可以簡化用戶操作數據的方式。可將經常使用的聯接、投影、聯合查詢和選擇查詢定義為視圖,這樣,用戶每次對特定的數據執行進一步操作時,不必指定所有條件和限定。例如,一個用於報表目的,並執行子查詢、外聯接及聚合以從一組表中檢索數據的復合查詢,就可以創建為一個視圖。視圖簡化了對數據的訪問,因為每次生成報表時無須寫或提交基礎查詢,而是查詢視圖。有關數據操作的更多信息,請參見查詢基礎知識。 還可以創建內嵌的用戶定義函數,在邏輯上作為參數化視圖運行,或作為在 WHERE 子句搜索條件中含有參數的視圖運行。有關更多信息,請參見內嵌用戶定義函數。 導出和導入數據 可使用視圖將數據導出至其它應用程序。例如,可能希望使用 pubs 資料庫中的 stores 和 sales 表在 Microsoft® Excel 中分析銷售數據。為此,可創建一個基於 stores 和 sales 表的視圖。然後使用 bcp 實用工具導出由視圖定義的數據。也可使用 bcp 實用工具或 BULK INSERT 語句將數據從數據文件中導入某些視圖,條件是可以使用 INSERT 語句在視圖中插入行。有關向視圖中復制數據的限制的更多信息,請參見 INSERT。有關使用 bcp 實用工具和 BULK INSERT 語句從(或向)視圖中復制數據的更多信息,請參見向(或從)視圖中復制數據。 組合分區數據 Transact-SQL UNION 集合運算符可在視圖內使用,以將來自不同表的兩個或多個查詢結果組合成單一的結果集。這在用戶看來是一個單獨的表,稱為分區視圖。例如,如果一個表含有華盛頓的銷售數據,另一個表含有加利福尼亞的銷售數據,即可從 UNION 創建這兩個表的視圖。該視圖代表了這兩個區域的銷售數據。 使用分區視圖時,首先創建幾個相同的表,指定一個約束以決定可在各個表中添加的數據范圍。視圖即使用這些基表創建。當查詢該視圖時,SQL Server 自動決定查詢所影響的表,並僅引用這些表。例如,如果一個查詢指定只需要華盛頓州的銷售數據,則 SQL Server 只讀取含有華盛頓銷售數據的表,而並不訪問其餘的表。 分區試圖可基於來自多個異類源——如遠程伺服器——的數據,而不僅僅局限於同一資料庫中的表。例如,要將分別存儲組織中不同區域數據的幾台遠程伺服器上的數據組合起來,可以創建分布式查詢,從每個數據源中檢索數據,然後基於這些分布式查詢創建視圖。所有查詢都只從包含查詢所請求數據的遠程伺服器上讀取表中的數據,其它在視圖中由分布式查詢引用的伺服器均不被訪問。 當在多個表或伺服器上分割數據時,因為需掃描的數據較少,所以只訪問一部分數據的查詢運行得較快。如果表位於不同的伺服器或一台多處理器的計算機上,同樣可以對查詢所涉及的表進行同時掃描,從而改進查詢的性能。此外,象索引重建或表備份這樣的維護任務可更快地執行。 通過使用分區視圖,數據的外觀象是一個單一表,且能以單一表的方式進行查詢,而無須手動引用真正的基礎表。 如果滿足下列任一條件,則分區視圖可被更新: 在帶有邏輯的視圖上定義支持 INSERT、UPDATE 和 DELETE 語句的 INSTEAD OF 觸發器。 視圖和 INSERT、UPDATE 及 DELETE 語句均遵從為可更新分區視圖定義的規則。有關更多信息,請參見創建分區視圖。
『陸』 用sql語句算乘法
select a*b as乘積from tablename
SELECT distinct a.購房人,a.房間號,(a.總房價 -
(SELECT SUM( b.已收款額 )
FROM table1 a, table2 b
WHERE a.房間號 = b.房間號
))
FROM table1 a,table2 b where
(6)sql視圖可以運算么擴展閱讀:
SELECT
a.購房人
a.房間號
a.總房價
FROM
table1 AS a
『柒』 在sql資料庫里的視圖是什麼意思,怎麼理解
視圖是由若干基本表或其他視圖構成的表的定義.
用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區別,都是關系(表格).
在SQL中,視圖是外模式一級數據結構的基本單位。它是從一個或幾個基本表中導出的表,是從現有基本表中抽取若乾子集組成用戶的「專用表」。這種構造方式必須使用SQL中的SELECT語句來實現。在定義一個視圖時,只是把其定義存放在系統的數據中,而並不直接存儲視圖對應的數據,直到用戶使用視圖時才去求得對應的數據.
『捌』 視圖sql的功能
使用SQL視圖可以實現下列任一或所有功能:
1,將用戶限定在表中的特定行上。
例如,只允許雇員看見工作跟蹤表內記錄其工作的行。
2,將用戶限定在特定列上。
例如,對於那些不負責處理工資單的雇員,只允許他們看見雇員表中的姓名列、辦公室列、工作電話列、郵件列和部門列,而不能看見任何包含工資信息或個人信息的列。
3,將多個表中的列聯接起來,使它們看起來象一個表。
4,聚合信息而非提供詳細信息。
例如,顯示一個列的和,或列的最大值和最小值。 一個視圖可以引用另一個視圖。例如,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-SQLUNION 運算符,將在所有成員表上選擇的結果合並為單個結果集,該結果集的行為與整個原始表的復本完全一樣。例如在三個伺服器間進行表分區。在第一個伺服器上定義如下的分區視圖:
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。
『玖』 sql 視圖中能否進行計算
測試的表test1包含name varchar,sl int和sl1 int欄位。
CREATE VIEW dbo.VIEW1 AS SELECT name, sl, sl1, sl - sl1 AS sl0 FROM dbo.test1
然後也可以對view中的值進行計算:
select name, sl, sl1, sl0, sl1-sl0 as sl2 from view1
『拾』 在sqlserver2000中創建視圖時,能否創建計算欄位,怎樣創建
可以創建計算欄位。
舉個例子:比如有表test,包含欄位 id ,content
我們創建一個基於test表的視圖 test_view,在視圖 中添加一個計算欄位id2,它是由id+1得來的,那麼創建語句就是
create view test_view
as
select id,content,id+1 as id2
from test