-
一些操作的结果集只需要在当前连接保存使用,不需要永久存在时。比如京东的购物车表,将商品放入购物车(insert),变更数量(update),删除商品(delete),结算金钱后,这些数据就要清掉,这时需要用临时表
-
在导出数据时,你可能不想导完整的数据库,或者表,你可能只想要导出符合某些条件的数据,那么你可以创建临时表,把select语句插入到临时表,接着导出这个临时表,导完以后通过结束session或者事务的方式,让这些没用的数据自动清理掉
-
如果需要连接多张表才能得到结果,同时做连接消耗太大,可以先将A,B,C连接的结果,放在临时表,接着再把这张临时表,跟D,E,F连接,最后得的数据插入普通表
create temporary table tmp_customer(
id int(11) primary key,
name varchar(25) not null,
age int(11) not null
insert into tmp_customer values(1,'Tom',25),(2,'Jack',26),(3,'Weiking',27);
select * from tmp_customer;
show tables; # Show tables 命令无法看到临时表
drop (temporary)table tmp_customer; # 可以使用drop table 语句来删除临时表,但是最好加上temporary,防止删除普通的表(比如当前会话突然断了有自动连接上了,你不知道,使用drop table就会导致普通的表被删除)
select * from tmp_customer; # 断开当前连接,重新连接mysql,执行该查询,会报表不存在错误。因为断开连接时临时表就已经被删除了