MS SQL SERVER中的暫存資料表

來源:互聯網
上載者:User

對於複雜的查詢,我們可以使用嵌套的複雜的SQL語句來實現,但是有些時候,藉助於暫存資料表,可以更加方便、高效。

SQL Server 支援暫存資料表。暫存資料表就是那些名稱以井號 (#) 開頭的表。如果當使用者中斷連線時沒有除去暫存資料表,SQL Server 將自動除去暫存資料表。暫存資料表不儲存在當前資料庫內,而是儲存在系統資料庫 tempdb 內。

暫存資料表有兩種類型:
1)本地暫存資料表:本地暫存資料表的名稱以單個數字記號 (#) 打頭;它們僅對當前的使用者串連是可見的;當使用者從 Microsoft SQL Server 2000 執行個體中斷連線時被刪除。
2)全域暫存資料表:全域暫存資料表的名稱以數學符號 (##) 打頭,建立後對任何使用者都是可見的。如果在建立全域暫存資料表的串連斷開前沒有顯式地除去這些表,那麼只要所有其它任務停止引用它們,這些表即被除去。當建立全域暫存資料表的串連斷開後,新的任務不能再引用它們。當前的語句一執行完,任務與表之間的關聯即被除去;因此通常情況下,只要建立全域暫存資料表的串連斷開,全域暫存資料表即被除去。
例如,如果建立名為 employees 的表,則任何人只要在資料庫中有使用該表的安全許可權就可以使用該表,除非它已刪除。如果建立名為 #employees 的本地暫存資料表,只有您能對該表執行操作且在中斷連線時該表刪除。如果建立名為 ##employees 的全域暫存資料表,資料表中的任何使用者均可對該表執行操作。如果該表在您建立後沒有其他使用者使用,則當您中斷連線時該表刪除。如果該表在您建立後有其他使用者使用,則 SQL Server在所有使用者中斷連線後刪除該表。

e.g.

create table #TempTableName

select [欄位1,欄位2,...,] into #TempTableName from table
刪除表:
drop table #TempTableName

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.