當前位置:首頁 » 編程語言 » sql虛擬表

sql虛擬表

發布時間: 2022-09-22 14:49:44

1. sql虛擬表和實體表怎麼區別

是指視圖和表
go
create table t(ID int)--實表

go

create view v1 --l虛擬表
as
select * from t

go
select * from v1
select * from t

2. sqlserver2005中虛擬表有那幾種類型

你說的是臨時表吧?
臨時表與永久表相似,但臨時表存儲在 tempdb 中,當不再使用時會自動刪除。
臨時表有兩種類型:本地和全局。它們在名稱、可見性以 及可用性上有區別。本地臨時表的名稱以單個數字元號 (#) 打頭;它們僅對當前的用戶連接是可見的;當用戶從 SQL Server 實例斷開連接時被刪除。全局臨時表的名稱以兩個數字元號 (##) 打頭,創建後對任何用戶都是可見的,當所有引用該表的用戶從 SQL Server 斷開連接時被刪除。
例如,如果創建了 employees 表,則任何在資料庫中有使用該表的安全許可權的用戶都可以使用該表,除非已將其刪除。如果資料庫會話創建了本地臨時表 #employees,則僅會話可以使用該表,會話斷開連接後就將該表刪除。如果創建了 ##employees 全局臨時表,則資料庫中的任何用戶均可使用該表。如果該表在您創建後沒有其他用戶使用,則當您斷開連接時該表刪除。如果您創建該表後另一個用戶在使用該表,則SQL Server 將在您斷開連接並且所有其他會話不再使用該表時將其刪除。
1、局部臨時表(#開頭)只對當前連接有效,當前連接斷開時自動刪除。
2、全局臨時表(##開頭)對其它連接也有效,在當前連接和其他訪問過它的連接都斷開時自動刪除。
3、不管局部臨時表還是全局臨時表,只要連接有訪問許可權,都可以用drop table #Tmp(或者drop table ##Tmp)來顯式刪除臨時表。
使用全局臨時表需要加上
if object_id('tempdb..##臨時表') is not null
drop table ##臨時表
else
creeate table ##臨時表..

3. 在sql中什麼只是一個虛擬表

視圖是一個虛擬表。
稱其為虛擬表的原因是:視圖內的數據並不屬於視圖本身,而屬於創建視圖時用到的基本表。可以認為,視圖是一個表中的數據經過某種篩選後的顯示方式,或者多個表中的數據經過連接篩選後的顯示方式。

4. SQL如何更新關聯查詢出來的虛擬表數據

1建立一個觸發
2物化試圖建立一個(快)

創建物化視圖日誌上的名字 - 。建立物化存儲在特定的表空間

表空間的用戶視圖日誌; - 指定表空間

下降物化視圖的名稱;

創建物化視圖的名稱 - 創建物化試圖

刷新提交快速

- 作為<br刷新後立即提交

br選擇/> A. *
從一個表名

5. 在SQL Server資料庫中,什麼可以看成為虛擬的表。

b) 視圖用戶角度來看,一個視圖是從一個特定的角度來查看資料庫中的數據。從資料庫系統內部來看,一個視圖是由SELECT語句組成的查詢定義的虛擬表。從資料庫系統內部來看,視圖是由一張或多張表中的數據組成的,從資料庫系統外部來看,視圖就如同一張表一樣,對表能夠進行的一般操作都可以應用於視圖,例如查詢,插入,修改,刪除操作等。

6. sql 可不可以在查詢的時候自定義一張虛擬表

這個就是你先建立一個事務級別的臨時表D么
create global temporary table D(a number,b number ,c number) on commit delete rows;
然後就是分別在這幾列裡面插入需要的數據
insert into D (a) select A.a from A;
insert into D(b) select B.b from B;
insert into D( c) select C.c from C;
這樣就你這個D的臨時表就OK了
你 select * from D;就可以看到了
最後你不要這個了,就直接提交事務commit;
現在你再查 這個表也查不到數據了

7. SQL查詢插入虛擬表

--少打一個字母
insert into #table(name,price,prices,[datetime])
select name,price,price,datetimes
from cost
where datediff(m,cast(datetimes+'-01' as datetime),getdate())=0

8. 怎麼利用sql語句把幾個表合為一個虛擬表~!

使用視圖呀

參見別人說法
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毫秒!
當然我這里只是舉例子,一般情況下對單個表沒必要去用視圖

熱點內容
路由器怎麼設置登錄密碼怎麼設置密碼 發布:2025-01-10 21:11:12 瀏覽:893
營運車解壓 發布:2025-01-10 21:11:01 瀏覽:932
安卓是哪裡出產 發布:2025-01-10 21:10:23 瀏覽:953
本科來了安卓版叫什麼 發布:2025-01-10 21:08:43 瀏覽:649
南京c語言 發布:2025-01-10 20:55:08 瀏覽:466
如何excel設置密碼保護 發布:2025-01-10 20:50:07 瀏覽:994
桌面文件限制存儲大小 發布:2025-01-10 20:28:45 瀏覽:79
安卓車機怎麼把應用放界面 發布:2025-01-10 20:28:36 瀏覽:679
減演算法小學 發布:2025-01-10 20:22:41 瀏覽:799
ig源碼網 發布:2025-01-10 20:20:04 瀏覽:420