mysql 查詢臨時表 MySQL臨時表與記憶體表

2021-10-17 12:04:03 字數 2228 閱讀 9703

在mysql中有三種虛擬表:臨時表、記憶體表、檢視。下面簡單介紹一下臨時表和記憶體表的使用。

1、臨時表

mysql臨時表在我們需要儲存一些臨時資料時是非常有用的。臨時表在mysql 3.23版本中新增。臨時表只在當前連線可見,當關閉連線時,mysql會自動刪除表並釋放所有空間。如果你使用了其他mysql客戶端程式連線mysql資料庫伺服器來建立臨時表,那麼只有在關閉客戶端程式時才會銷毀臨時表,當然你也可以手動銷毀。

1.1 建立臨時表

在mysql中建立臨時表使用create temporary table語句,其語法格式如下:

示例:建立臨時表。

還可以通過複製表的方式來建立臨時表。

示例:通過複製表的方式來建立臨時表。

1.2 刪除臨時表

預設情況下,當你斷開與資料庫的連線後,臨時表就會自動被銷毀。當然你也可以在當前mysql會話中手動刪除臨時表。刪除臨時表與刪除普通表的語句是一樣的,使用 drop table語句。

示例:刪除臨時表。

1.3 使用臨時表的注意事項

(1)臨時表只在當前連線可見,當這個連線關閉的時候,會自動drop。比如開啟mysql 就是乙個連線會話。兩個不同的連線可以使用相同名字的臨時表,兩個表之間不存在什麼關係,如果臨時表的名字和已經存在的磁碟表名字一樣,那麼臨時表會暫時覆蓋磁碟表。就是說,你select 查詢,只會顯示臨時表裡面的,不會顯示磁碟表。

(2)臨時表的儲存引擎:memor,myisam,merge,innodb,臨時表不支援mysql cluster簇。

(3)同乙個查詢語句,只能用一次臨時表,就是說不能將表和自己做連線等。

(4)重新命名表,不能用rename 可以用alter table代替。

(5)如果超出了臨時表的容量,臨時表會轉換成磁碟表。

(6)show tables語句不會列出臨時表,在information_schema中也不存在臨時表資訊,show create table可以檢視臨時表。

2、記憶體表

記憶體表的表結構建立在磁碟裡面,資料放在記憶體裡面;

當mysql斷開當前連線後,臨時表的表結構和表資料都沒了,但記憶體表的表結構和表資料都存在;

當mysql服務重啟之後,記憶體表的資料會丟失,但表結構依舊存。

2.1 建立記憶體表

建立記憶體表與建立普通表一樣,使用create table語句,但需要將儲存引擎設定為:engine = memory。其語法格式如下:

示例:建立記憶體表。

2.2 刪除記憶體表

刪除記憶體表與刪除普通表的語句是一樣的,使用 drop table語句。

示例:刪除記憶體表。

2.3 使用記憶體表的注意事項

(1)當mysql服務重啟之後,記憶體表的資料會丟失,表結構依舊存。

(2)多個session,建立表的名字不能一樣。

(3)乙個session建立會話後,對其他session也是可見的。

(4)data目錄下只有tmp_memory.frm,表結構放在磁碟上,資料放在記憶體中。

(5)可以建立索引,刪除索引,支援唯一索引。

(6)不影響主備,主庫上插入的資料,備庫也可以查到。

(7)show tables 語句可以檢視得到表。

(8)記憶體表不能包含blob或者text列。

(9)記憶體表支援auto_increment列。

3、臨時表與記憶體表區別

mysql臨時表更新 MySql 臨時表

今天在專案中遇到乙個,當mysql的in語句中資料量很大時,建立乙個臨時表的例子。於是樓主整理了一下關於臨時表的知識,與大家分享一下 首先,臨時表只在當前連線可見,當關閉連線時,mysql會自動刪除表並釋放所有空間。因此在不同的連線中可以建立同名的臨時表,並且操作屬於本連線的臨時表。建立臨時表 cr...

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語句的資料是不可能或遇到瓶頸的時候,臨時表非常方便。在這種情況下,...