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;