mysql臨時表更新 MySql 臨時表

2021-10-17 12:28:32 字數 1685 閱讀 1309

今天在專案中遇到乙個,當mysql的in語句中資料量很大時,建立乙個臨時表的例子。於是樓主整理了一下關於臨時表的知識,與大家分享一下~

首先,臨時表只在當前連線可見,當關閉連線時,mysql會自動刪除表並釋放所有空間。因此在不同的連線中可以建立同名的臨時表,並且操作屬於本連線的臨時表。

建立臨時表:

create temporary  table temp_table (

id varchar(32) not null,

name varchar(100)

) engine = memory

注意最後面的engine = memory,其中engine是資料庫搜尋引擎,常用的幾種型別為myisam, memory, innodb

1)myisam 管理非事物表。提供高速儲存和檢索,以及全文搜尋能力

2)memory儲存引擎提供「記憶體中」表。就像myisam一樣,memory和merge儲存引擎處理非事務表

注釋:memory儲存引擎正式地被確定為heap引擎。

3)innodb和儲存引擎提供事務安全表。這是預設的資料庫表儲存引擎

當然還有一種簡單粗暴的方式建立臨時表,直接將查詢結果匯入到臨時表:

create temporary  table temp_table

engine = memory

select * from `bm_sc_settlement`

建立臨時表後,我們插入資料

insert into temp_table values('1', 'a');

insert into temp_table values('2', 'b');

insert into temp_table values('3', 'c');

insert into temp_table values('4', 'd');

insert into temp_table values('5', 'e');

查詢:select * from temp_table;

可以看到我們插入的結果已經放到臨時表中(也可以做更新及刪除操作)

此時當我們關掉mysql客戶端(樓主用的sqlyog),然後重新開啟。執行查詢臨時表操作,會提示找不到該臨時表

刪除臨時表:

drop temporary table if exists temp_table;

臨時表使用有一些限制條件:

1)在同乙個query語句中,相同的臨時表只能出現一次。如:

select * from temp_table a ,temp_table b;

錯誤資訊:error 1137 (hy000): can't reopen table: 'temp_table'

同樣相同臨時表不能在儲存函式**現多次,如果在乙個儲存函式裡,用不同的別名查詢乙個臨時表多次,或者在這個儲存函式裡用不同的語句查詢,都會出現這個錯誤。

2) 不同的臨時表可以出現在同乙個query語句中,如臨時表temp_tb1, temp_tb2:

select * from temp_tb1, temp_tb2;

3)可以複製臨時表得到乙個新的臨時表,如:

create temporary table new_table select * from old_table;

mysql 臨時表 限制 Mysql臨時表

當你建立臨時表的時候,你可以使用temporary關鍵字。如 create temporary table tmp table name varchar 10 not null,passwd char 6 not null 或create temporary table if not exists ...

mysql怎麼是臨時表 MySQL臨時表

在本教程中,我們將討論mysql臨時表,並演示如何建立,使用和刪除臨時表。mysql臨時表簡介 在mysql中,臨時表是一種特殊型別的表,它允許您儲存乙個臨時結果集,可以在單個會話中多次重用。當使用join子句查詢需要單個select語句的資料是不可能或遇到瓶頸的時候,臨時表非常方便。在這種情況下,...

Mysql臨時表特性 解析Mysql臨時表及特點

臨時表是當連線沒有斷開時存在,一旦斷開就不會存在,臨時表的資料和結構都在記憶體中,可以做個測驗,你建立乙個臨時表,但是到響應的資料目錄下並不會找到.frm檔案 mysql create temporary table tmp table name varchar 10 not null,value ...