sql的臨時(shí)表使用小結(jié)
1、創(chuàng)建方法:
方法一:
create table TempTableName
或
select [字段1,字段2,...,] into TempTableName from table
方法二:
create table tempdb.MyTempTable(Tid int)
說(shuō)明:
(1)、臨時(shí)表其實(shí)是放在數(shù)據(jù)庫(kù)tempdb里的一個(gè)用戶(hù)表;
(2)、TempTableName必須帶“#”,“#"可以是一個(gè)或者兩個(gè),以#(局部)或##(全局)開(kāi)頭的表,這種表在會(huì)話(huà)期間存在,會(huì)話(huà)結(jié)束則自動(dòng)刪除;
(3)、如果創(chuàng)建時(shí)不以#或##開(kāi)頭,而用tempdb.TempTable來(lái)命名它,則該表可在數(shù)據(jù)庫(kù)重啟前一直存在。
2、手動(dòng)刪除
drop table TempTableName
說(shuō)明:
DROP TABLE 語(yǔ)句顯式除去臨時(shí)表,否則臨時(shí)表將在退出其作用域時(shí)由系統(tǒng)自動(dòng)除去:
(1)、當(dāng)存儲(chǔ)過(guò)程完成時(shí),將自動(dòng)除去在存儲(chǔ)過(guò)程中創(chuàng)建的本地臨時(shí)表。由創(chuàng)建表的存儲(chǔ)過(guò)程執(zhí)行的所有嵌套存儲(chǔ)過(guò)程都可以引用此表。但調(diào)用創(chuàng)建此表的存儲(chǔ)過(guò)程的進(jìn)程無(wú)法引用此表;
(2)、所有其它本地臨時(shí)表在當(dāng)前會(huì)話(huà)結(jié)束時(shí)自動(dòng)除去;
(3)、全局臨時(shí)表在創(chuàng)建此表的會(huì)話(huà)結(jié)束且其它任務(wù)停止對(duì)其引用時(shí)自動(dòng)除去。任務(wù)與表之間的關(guān)聯(lián)只在單個(gè)Transact-SQL語(yǔ)句的生存周期內(nèi)保持。換言之,當(dāng)創(chuàng)建全局臨時(shí)表的會(huì)話(huà)結(jié)束時(shí),最后一條引用此表的Transact-SQL語(yǔ)句完成后,將自動(dòng)除去此表。
3、示例代碼
(1)創(chuàng)建
use testdb --創(chuàng)建局部臨時(shí)表 create table #tmpStudent(Tid int,Name varchar(50),Age int) insert into #tmpStudent values('xiaowang',25) select * from #tmpStudent --創(chuàng)建局部臨時(shí)表 另一種寫(xiě)法 select * into #tmpStudent from student select * from #tmpStudent
第二種創(chuàng)建方法:
create table tempdb.MyTempTable(Tid int) --有對(duì)應(yīng)權(quán)限才可以這么寫(xiě)
(2)刪除
drop table #tmpStudent
關(guān)于sql中臨時(shí)表的生命周期
1.局部臨時(shí)表(#開(kāi)頭)只對(duì)當(dāng)前連接有效,當(dāng)前連接斷開(kāi)時(shí)自動(dòng)刪除。
2.全局臨時(shí)表(##開(kāi)頭)對(duì)其它連接也有效,在當(dāng)前連接和其他訪問(wèn)過(guò)它的連接都斷開(kāi)時(shí)自動(dòng)刪除。
3.不管局部臨時(shí)表還是全局臨時(shí)表,只要連接有訪問(wèn)權(quán)限,都可以用drop table #Tmp(或者drop table ##Tmp)來(lái)顯式刪除
相關(guān)文章
將Reporting services的RDL文件拷貝到另外一臺(tái)機(jī)器時(shí)報(bào)Data at the root level i
在本機(jī)開(kāi)發(fā)了一個(gè)Reporting后拷貝到服務(wù)器,然后在Sql Server Business Intelligence Development Studio中添加再打開(kāi)后會(huì)報(bào)Data at the root level is invalid.錯(cuò)誤2012-06-06SQL Server數(shù)據(jù)庫(kù)定時(shí)自動(dòng)備份
這篇文章主要為大家詳細(xì)介紹了SQL Server數(shù)據(jù)庫(kù)定時(shí)自動(dòng)備份的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03mybatis collection 多條件查詢(xún)的實(shí)現(xiàn)方法
這篇文章主要介紹了mybatis collection 多條件查詢(xún)的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-10-10Oracle、MySQL和SqlServe三種數(shù)據(jù)庫(kù)分頁(yè)查詢(xún)語(yǔ)句的區(qū)別介紹
這篇文章主要介紹了Oracle、MySQL和SqlServe三種數(shù)據(jù)庫(kù)分頁(yè)查詢(xún)語(yǔ)句的區(qū)別介紹 的相關(guān)資料,需要的朋友可以參考下2016-05-05詳解SQL Server的簡(jiǎn)單查詢(xún)語(yǔ)句
本篇文章詳細(xì)講解了SQL ServerSQL的簡(jiǎn)單查詢(xún)語(yǔ)句。圖文并茂,方便大家理解與學(xué)習(xí)。有興趣的朋友可以看下2016-12-12和表值函數(shù)連接引發(fā)的性能問(wèn)題分析
最近調(diào)優(yōu)過(guò)程中遇到一個(gè)問(wèn)題,就是表值函數(shù)作為連接中的一部分時(shí),可能會(huì)引起麻煩,本文會(huì)簡(jiǎn)單闡述表值函數(shù)是什么,以及為什么使用表值函數(shù)進(jìn)行連接時(shí)會(huì)引發(fā)性能問(wèn)題2015-02-02命令行啟動(dòng)mssqlserver服務(wù)的方法示例
這篇文章主要介紹了命令行啟動(dòng)mssqlserver服務(wù)的方法,大家參考使用2013-11-11