mysql使用temporary關鍵字可以創建出一個臨時表。創建的這張表會在於服務器的會話終止時自動消失。
語法:create temporary table 表名
規則:每個會話只能看到自己創建的臨時表,不同的會話可以創建相同表名稱的臨時表。臨時表的表名可以和永久表的名字相同。
A:臨時表再斷開於mysql的連接後系統會自動刪除臨時表中的數據,但這只限於用下面語句建立的表:
1:定義字段
create temporary table tmp_table(
name varchar(10) not null,
time date not null
)
更高級點就是:
create temporary TABLE `temtable` (
`jws` varchar(100) character set utf8 collate utf8_bin NOT NULL,
`tzlb` varchar(100) character set utf8 collate utf8_bin NOT NULL,
`uptime` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1″
2:直接將查詢結果導入臨時表:
create temporary table tmp_table select * from table_name
B:另外mysql也允許你在內存中直接創建臨時表,因爲是在內存中,所以速度很快。
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP
那如何將查詢的結果存入已有的表呢?
1、可以使用A中第二個方法
2、使用:insert into temtable (select a,b,c,d from tablea)”;
臨時表只在當前連接可見,當關閉連接時,Mysql會自動刪除表並釋放所有空間。因此在不同的連接中可以創建同名的臨時表,並且操作屬於本連接的臨時表。
臨時表可以手動刪除:DROP TEMPORARY TABLE IF EXISTS temp_tb;