臨時表定義
臨時表與實體表類似,只是在使用過程中,臨時表是存儲在系統資料庫tempdb中。當我們不再使用臨時表的時候,臨時表會自動刪除。
臨時表分類
臨時表分為本地臨時表和全局臨時表,它們在名稱、可見性以及可用性上有區別。
臨時表的特性
對於臨時表有如下幾個特點:
- 本地臨時表就是用戶在創建表的時候添加了"#"前綴的表,其特點是根據資料庫連接獨立。只有創建本地臨時表的資料庫連接有表的訪問許可權,其它連接不能訪問該表;
- 不同的資料庫連接中,創建的本地臨時表雖然"名字"相同,但是這些表之間相互並不存在任何關係;在SQLSERVER中,通過特別的命名機制保證本地臨時表在資料庫連接上的獨立性,意思是你可以在不同的連接裏使用相同的本地臨時表名稱。
- 全局臨時表是用戶在創建表的時候添加"##"前綴的表,其特點是所以資料庫連接均可使用該全局臨時表,當所有引用該臨時表的資料庫連接斷開後自動刪除。
- 全局臨時表相比本地臨時表,命名上就需要注意了,與本地臨時表不同的是,全局臨時表名不能重複。
- 臨時表利用了資料庫臨時表空間,由資料庫系統自動進行維護,因此節省了物理表空間。並且由於臨時表空間一般利用虛擬內存,大大減少了硬碟的I/O次數,因此也提高了系統效率。
- 臨時表在事務完畢或會話完畢資料庫會自動清空,不必記得用完後刪除數據。
本地臨時表
本地臨時表的名稱以單個數字元號"#" 打頭;它們僅對當前的用戶連接(也就是創建本地臨時表的connection)是可見的;當用戶從 SQL Server 實例斷開連接時被刪除。
本地臨時表實例
我們以Customers表為實例,表數據如下: