一、什么是临时表
MySQL临时表在很多场景中都会用到,MySQL内部在执行复杂SQL时,需要借助临时表进行分组、排序、去重等操作。
- 作用:临时表用来保存一些 “临时数据”
- 特点:
(1) 临时表只在“当前连接”可见,当关闭连接时,MySQL会自动删除表数据及表结构
(2) 临时表 和 普通表 用法一样,用关键字 “TEMPORARY” 予以区别
二、临时表有哪些类型
1、内部临时表:
通常在执行复杂SQL语句时,比如group by,distinct,union等语句,执行计划中如果包含Using temporary,那么MySQL内部将使用自动生成的临时表,以辅助SQL的执行。比如:
2、外部临时表:
**通过CREATE TEMPORARY TABLE语句创建的临时表为外部临时表,在创建时可以手动指定临时表的存储引擎。**比如:
CREATE TEMPORARY TABLE temp_t(
id INT,
name VARCHAR(10)
) ENGINE = InnoDB;
INSERT INTO temp_t VALUES (1,'one'),(2,'two'),(3,'three');
SELECT * FROM temp_t;
DROP TEMPORARY TABLE temp_t;
**外部临时表还可以通过查询结果进行直接创建。**比如:
CREATE TEMPORARY TABLE tmp_t SELECT * FROM 指定的table_name;
三、对外部临时表说两句
- 再次重申一下,外部临时表的生命周期仅仅是当前连接
- SHOW TABLES;命令并不能看到创建的外部临时表,内部的当然更看不到
- 但是,外部创建的临时表可以通过SELECT语句进行查询
- 外部临时表会随着连接的关闭而被自动清理掉,当然也可以手动进行删除。特别注意,为了数据安全避免误操作,在删除临时表时,一定不能省略TEMPORARY关键字,否则如果与非临时表表名重复也会被删除掉
四、执行验证
略。
写了个略,突然想起小时候,课本习题的答案好多都是略,还有的老师让把最后的答案整个撕下来上交,那些当时觉得难熬的日子,如今看来是那般无忧无虑。当学生,除了没钱什么都有,当员工,除了温饱,什么都没有。