程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 淺析SQL server 臨時表,淺析sqlserver

淺析SQL server 臨時表,淺析sqlserver

編輯:更多數據庫知識

淺析SQL server 臨時表,淺析sqlserver


創建臨時表,#代表局部臨時表,##代表全局臨時表。局部臨時表和全局臨時表的具體含義是什麼呢?

舉例說明一下比較清晰些,先來看下局部臨時表,【新建查詢】,在裡面輸入如下文本:


運行後,我們在此文件執行輸入: select * from #tempTable, 執行後可以查詢出如下的數據:

我們另外打開一個【新建查詢】,就給其命名為新建查詢2,在新建查詢2中執行輸入: select * from #tempTable,提示如下:

修改Sql 語句中的#tempTable 為 ##tempTable, 依照上述方法再次執行,會發現新建查詢2中不再提示錯誤,能查出和新建查詢1中同樣的結果。Why?=>局部臨時表僅在當前會話中可見;全局臨時表在所有會話中都可見。

請注意,使用全局臨時表後,不要忘記drop table 掉它。但是使用局部臨時表,可以不進行此操作,在當前會話結束時,系統會自動回收創建的局部臨時表。

臨時表具體用法請參考 http://www.bkjia.com/article/23952.htm


SQL Server裡的臨時表放在那裡?

臨時表與永久表相似,但臨時表存儲在 tempdb 中,當不再使用時會自動刪除。

臨時表有兩種類型:本地和全局。它們在名稱、可見性以及可用性上有區別。本地臨時表的名稱以單個數字符號 (#) 打頭;它們僅對當前的用戶連接是可見的;當用戶從 SQL Server 實例斷開連接時被刪除。全局臨時表的名稱以兩個數字符號 (##) 打頭,創建後對任何用戶都是可見的,當所有引用該表的用戶從 SQL Server 斷開連接時被刪除。

例如,如果創建了 employees 表,則任何在數據庫中有使用該表的安全權限的用戶都可以使用該表,除非已將其刪除。如果數據庫會話創建了本地臨時表 #employees,則僅會話可以使用該表,會話斷開連接後就將該表刪除。如果創建了 ##employees 全局臨時表,則數據庫中的任何用戶均可使用該表。如果該表在您創建後沒有其他用戶使用,則當您斷開連接時該表刪除。如果您創建該表後另一個用戶在使用該表,則 SQL Server 將在您斷開連接並且所有其他會話不再使用該表時將其刪除。
 

sqlserver怎建臨時表?

表名前使用一個#號,臨時表是局部的,使用兩個#號,臨時表是全局的,在斷開連接後sql會自動刪除臨時表
create table #a
(
id int,
name varchar(50)
)
insert into #a(id,name) values(1,'123')
select * from #a
drop table #a
臨時表除了名稱前多了#號外,其他操作與普通表完全一樣。
tb_Student是已建立好的表,我們通過臨時表temp把tb_Student表中的內容復制到tb_lizi表中,可以使用如下的代碼實現:
use mcf
SELECT * INTO #temp FROM tb_Student
SELECT * INTO tb_lizi FROM #temp
執行後斷開sql連接並重新連接(也可以退出sq再l重新啟動sql),發現tb_lizi表中的內容tb_Student表中的內容完全一致,實現了復制,同時我們沒有用代碼刪除temp表,但mcf數據庫中卻沒有temp表了,這是因為斷開連接時sql自動刪除了temp表
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved