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