sql創建臨時表
『壹』 如何實現sql Server臨時表的創建
創建臨時表
方法一:
create table #臨時表名(欄位1 約束條件,
欄位2 約束條件,
.....)
create table ##臨時表名(欄位1 約束條件,
欄位2 約束條件,
.....)
方法二:
select * into #臨時表名 from 你的表;
select * into ##臨時表名 from 你的表;
註:以上的#代表局部臨時表,##代表全局臨時表
查詢臨時表
select * from #臨時表名;
select * from ##臨時表名;
刪除臨時表
drop table #臨時表名;
drop table ##臨時表名;
『貳』 關於sql 創建臨時表的問題
select * from ##tmp1的
『叄』 sql 創建臨時表
表名前使用一個#號,臨時表是局部的,使用兩個#號,臨時表是全局的,在斷開連接後sql會自動刪除臨時表
create table #a
(
id int,
name varchar(50)
)
insert into #a(id,name) values(1,'123')
select * from #a
drop table #a
臨時表除了名稱前多了#號外,其他操作與普通表完全一樣。
tb_Student是已建立好的表,我們通過臨時表temp把tb_Student表中的內容復制到tb_lizi表中,可以使用如下的代碼實現:
use mcf
SELECT * INTO #temp FROM tb_Student
SELECT * INTO tb_lizi FROM #temp
執行後斷開sql連接並重新連接(也可以退出sq再l重新啟動sql),發現tb_lizi表中的內容tb_Student表中的內容完全一致,實現了復制,同時我們沒有用代碼刪除temp表,但mcf資料庫中卻沒有temp表了,這是因為斷開連接時sql自動刪除了temp表
希望能解決您的問題。
『肆』 sql中臨時表的建立
不需要,就你寫的那個就可以創建臨時表了,還有convert(varchar(60),'')轉化欄位類型,並且控制長度.
『伍』 SQL臨時表使用以及創建問題
視圖是邏輯層面上的
就像你是1 班的. 而你又是學生會的. 那麼. 學生會這邊就不必再為你而新建信息. 它只要求能夠指向你所在班級就可以了. 也就是說.你還是你. 只不過看的角度不同了.
它與臨時表沒有什麼聯系.
臨時表 故名思義 ,它是臨時的. 你與數據連接後,也就是產生了一個Session.
這個時候,我們可以創建一張臨時性質的表 它與真正的表沒有什麼區別
,但是這張表就不會存儲到正常的表空間中去,而是被臨時放置而已.等到你斷開資料庫後,所謂的臨時表的一切信息都會被丟棄.
形象一點,就像你打開了電腦,登陸了一個用戶,存在硬碟上的東西是永久的(相當於表),而內存中的數據是臨時的(相當於臨時表),一旦你重啟了.那麼內存中的數據都會被丟掉.而硬碟上的數據依然還在.
不同的資料庫,對臨時表的操作在語法上會有一些不同
僅舉一例:
declare @t1 table (
id int primary key,
name nvarchar(20),
tel nvarchar(20)
)
insert into @t1 values(1,'aa','123')
insert into @t1 values(2,'bb','234')
insert into @t1 values(3,'cc','567')
--select * from @t1
『陸』 sqlserver怎麼建臨時表
網上其實很多相關文章,你可以搜一下,並不一定需要在這里提問。
轉帖一篇給你吧
drop table #Tmp --刪除臨時表#Tmp
create table #Tmp --創建臨時表#Tmp
(
ID int IDENTITY (1,1) not null, --創建列ID,並且每次新增一條記錄就會加1
WokNo varchar(50),
primary key (ID) --定義ID為臨時表#Tmp的主鍵
);
Select * from #Tmp --查詢臨時表的數據
truncate table #Tmp --清空臨時表的所有數據和約束
相關例子:
Declare @Wokno Varchar(500) --用來記錄職工號
Declare @Str NVarchar(4000) --用來存放查詢語句
Declare @Count int --求出總記錄數
Declare @i int
Set @i = 0
Select @Count = Count(Distinct(Wokno)) from #Tmp
While @i < @Count
Begin
Set @Str = 'Select top 1 @Wokno = WokNo from #Tmp Where id not in (Select top ' + Str(@i) + 'id from #Tmp)'
Exec Sp_ExecuteSql @Str,N'@WokNo Varchar(500) OutPut',@WokNo Output
Select @WokNo,@i --一行一行把職工號顯示出來
Set @i = @i + 1
End
臨時表
可以創建本地和全局臨時表。本地臨時表僅在當前會話中可見;全局臨時表在所有會話中都可見。
本地臨時表的名稱前面有一個編號符 (#table_name),而全局臨時表的名稱前面有兩個編號符 (##table_name)。
SQL 語句使用 CREATE TABLE 語句中為 table_name 指定的名稱引用臨時表:
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)
如果本地臨時表由存儲過程創建或由多個用戶同時執行的應用程序創建,則 SQL Server 必須能夠區分由不同用戶創建的表。為此,SQL
Server 在內部為每個本地臨時表的表名追加一個數字後綴。存儲在 tempdb 資料庫的 sysobjects 表中的臨時表,其全名由
CREATE TABLE 語句中指定的表名和系統生成的數字後綴組成。為了允許追加後綴,為本地臨時表指定的表名 table_name 不能超過
116 個字元。
除非使用 DROP TABLE 語句顯式除去臨時表,否則臨時表將在退出其作用域時由系統自動除去:
當存儲過程完成時,將自動除去在存儲過程中創建的本地臨時表。由創建表的存儲過程執行的所有嵌套存儲過程都可以引用此表。但調用創建此表的存儲過程的進程無法引用此表。
所有其它本地臨時表在當前會話結束時自動除去。
全局臨時表在創建此表的會話結束且其它任務停止對其引用時自動除去。任務與表之間的關聯只在單個 Transact-SQL 語句的生存周期內保持。換言之,當創建全局臨時表的會話結束時,最後一條引用此表的 Transact-SQL 語句完成後,將自動除去此表。
在
存儲過程或觸發器中創建的本地臨時表與在調用存儲過程或觸發器之前創建的同名臨時表不同。如果查詢引用臨時表,而同時有兩個同名的臨時表,則不定義針對哪
個表解析該查詢。嵌套存儲過程同樣可以創建與調用它的存儲過程所創建的臨時表同名的臨時表。嵌套存儲過程中對表名的所有引用都被解釋為是針對該嵌套過程所
創建的表,例如:
CREATE PROCEDURE Test2
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (2)
SELECT Test2Col = x FROM #t
GO
CREATE PROCEDURE Test1
AS
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (1)
SELECT Test1Col = x FROM #t
EXEC Test2
GO
CREATE TABLE #t(x INT PRIMARY KEY)
INSERT INTO #t VALUES (99)
GO
EXEC Test1
GO
下面是結果集:
(1 row(s) affected)
Test1Col
-----------
1
(1 row(s) affected)
Test2Col
-----------
2
當創建本地或全局臨時表時,CREATE TABLE 語法支持除 FOREIGN KEY 約束以外的其它所有約束定義。如果在臨時表中指定
FOREIGN KEY 約束,該語句將返回警告信息,指出此約束已被忽略,表仍會創建,但不具有 FOREIGN KEY 約束。在 FOREIGN
KEY 約束中不能引用臨時表。
考慮使用表變數而不使用臨時表。當需要在臨時表上顯式地創建索引時,或多個存儲過程或函數需要使用表值時,臨時表很有用。通常,表變數提供更有效的查詢處理。
『柒』 在SQL Server中如何用SQL語句建立一張臨時表
create table #臨時表名(剩下的和建立普通表是一樣的)
select 欄位s.. into #臨時表名 from ...
『捌』 SQL如何把查詢出來的多個表創建成一個臨時表
SELECT * INTO #TEMPTABLENAME
FROM
(
SELECT xxxxxx //你的查詢語句
)AS table_source //這個別名是必須的
WHERE xxxxxxxx //你需要的where判斷;
COMMIT或ROLLBACK後可自動刪除該臨時表
1、sql server使用select into會自動生成臨時表,不需要事先創建。
select * into #temp from sysobjects
2、sql要把多個表合並成一個要用到union或union all的關鍵字。
3、union或union all的區別是:union會自動壓縮多個結果集合中的重復結果,而union all則將所有的結果全部顯示出來。
(8)sql創建臨時表擴展閱讀
sql語言特點如下:
1、一體化:SQL集數據定義DDL、數據操縱DML和數據控制DCL於一體,可以完成資料庫中的全部工作。
2、使用方式靈活:它具有兩種使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主語言中使用。
3、語言簡潔,語法簡單,好學好用:在ANSI標准中,只包含了94個英文單詞,核心功能只用6個動詞,語法接近英語口語。