MS SQL SERVER中的臨時表

2021-09-22 06:47:17 字數 906 閱讀 9134

對於複雜的查詢,我們可以使用巢狀的複雜的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

MS SQL SERVER中的臨時表

對於複雜的查詢,我們可以使用巢狀的複雜的sql語句來實現,但是有些時候,借助於臨時表,可以更加方便 高效。sql server 支援臨時表。臨時表就是那些名稱以井號 開頭的表。如果當使用者斷開連線時沒有除去臨時表,sql server 將自動除去臨時表。臨時表不儲存在當前資料庫內,而是儲存在系統資料...

MS SQL SERVER中的臨時表

對於複雜的查詢,我們可以使用巢狀的複雜的sql語句來實現,但是有些時候,借助於臨時表,可以更加方便 高效。sql server 支援臨時表。臨時表就是那些名稱以井號 開頭的表。如果當使用者斷開連線時沒有除去臨時表,sql server 將自動除去臨時表。臨時表不儲存在當前資料庫內,而是儲存在系統資料...

判斷MS SQLSERVER臨時表是否存在

drop table tempcitys select into tempcitys from hy citys 上面的語句第一次執行的時候就肯定出錯了,但第二次就不會。因為select into tempcitys from hy citys自動建立了臨時表 tempcitys 第一次臨時表不存在...