前言
臨時(shí)表是用來(lái)暫時(shí)保存臨時(shí)數(shù)據(jù)(中間數(shù)據(jù)) 的一個(gè)數(shù)據(jù)庫(kù)對(duì)象, 它與普通表有些類(lèi)似, 但又有很大區(qū)別。而在SQL Server中,使用INSERT INTO和SELECT INTO來(lái)填充表數(shù)據(jù)時(shí),我們應(yīng)該選擇哪種方式會(huì)更好。本文將探討這兩種方法之間的差異、它們對(duì)臨時(shí)表的影響。
語(yǔ)法
1、INSERT INTO
INSERT INTO用于將數(shù)據(jù)插入到現(xiàn)有表中,因此使用該方法前需要提前創(chuàng)建表結(jié)構(gòu)。在創(chuàng)建表時(shí),可以定義表的約束、索引和鍵等。此方法可以控制表的結(jié)構(gòu),并確保所有必要的元數(shù)據(jù)(如約束或索引)都是預(yù)定義的。
下面是使用語(yǔ)法:
-- tablename 數(shù)據(jù)插入的表
-- sourceTable 數(shù)據(jù)來(lái)源的表
INSERT INTO tablename (Column1, Column2,...)
SELECT Column1, Column2, ...
FROM sourceTable
-- 1、創(chuàng)建臨時(shí)表
CREATE TABLE #UserTemp (
Id INT PRIMARY KEY,
UserName NVARCHAR(100),
Email NVARCHAR(200),
Token NVARCHAR(500)
)
-- 2、往臨時(shí)表插入數(shù)據(jù)
INSERT INTO #UserTemp (Id, UserName, Email,Token)
SELECT UserId,UserName, Email,Token
FROM Users
-- 3、 查詢(xún)數(shù)據(jù)
SELECT * FROM #UserTemp
-- 刪除臨時(shí)表
DROP TABLE #UserTemp
2、SELECT INTO
SELECT INTO動(dòng)態(tài)創(chuàng)建新表,并同時(shí)將數(shù)據(jù)插入表中,因此使用該方法前不需要提前創(chuàng)建表結(jié)構(gòu)。
下面是使用語(yǔ)法:
-- tablename 數(shù)據(jù)插入的表
-- sourceTable 數(shù)據(jù)來(lái)源的表
SELECT Column1, Column2,...
INTO tablename
FROM sourceTable
-- 1、創(chuàng)建臨時(shí)表,并往臨時(shí)表插入數(shù)據(jù)
SELECT UserId,UserName, Email,Token
INTO #Userinfo
FROM Users
-- 2、查詢(xún)數(shù)據(jù)
SELECT * FROM #Userinfo
差異
1、區(qū)別
2、使用場(chǎng)景
INSERT INTO更適合臨時(shí)表是因?yàn)?/span>可以利用元數(shù)據(jù)緩存、可以避免更改表結(jié)構(gòu),導(dǎo)致元數(shù)據(jù)緩存失效、在并中重用緩存元數(shù)據(jù)以提高性能。
小結(jié)
以上簡(jiǎn)單地探討INSERT INTO與SELECT INTO內(nèi)容及其差異,了解并知道何時(shí)使用它們,可以使我們?cè)诓煌膱?chǎng)景中選擇較好的方式。
閱讀原文:原文鏈接
該文章在 2024/12/30 15:15:43 編輯過(guò)