1.临时表

临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。

  1. // 创建临时表
  2. create temporary Table salesSummary(
  3. )
  4. // 插入数据
  5. insert into salesSummary () values ();

2. 复制表

如果我们需要完全的复制MySQL的数据表,包括表的结构,索引,默认值等。 如果仅仅使用CREATE TABLE … SELECT 命令,是无法实现的。
步骤:

  • 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
  • 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
  • 如果你想复制表的内容,你就可以使用 INSERT INTO … SELECT 语句来实现。 ```sql //首先获取表 mysql> show create table test\G; * 1. row *
    1. Table: test
    Create Table: CREATE TABLE test ( id int DEFAULT NULL, i bigint NOT NULL, name varchar(20) DEFAULT NULL, age bigint DEFAULT ‘20’, KEY user_age (age) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.04 sec)
  1. 这时候复制表的结构如下:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/190166/1638756001166-60708fb2-328d-446b-b7bb-311f2ece82a1.png#clientId=ucfc7a155-8ac7-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=261&id=u0a863f51&margin=%5Bobject%20Object%5D&name=image.png&originHeight=222&originWidth=634&originalType=binary&ratio=1&rotation=0&showTitle=false&size=15008&status=done&style=none&taskId=ud62e3f3a-2ec5-4c87-8b3d-59ffee3786a&title=&width=744.9886169433594)
  2. ```sql
  3. // 更改表名
  4. mysql> CREATE TABLE `test_clone` (
  5. -> `id` int DEFAULT NULL,
  6. -> `i` bigint NOT NULL,
  7. -> `name` varchar(20) DEFAULT NULL,
  8. -> `age` bigint DEFAULT '20',
  9. -> KEY `user_age` (`age`)
  10. -> )ENGINE=INNodb default charset=utf8mb4 collate=utf8mb4_0900_ai_ci;
  11. Query OK, 0 rows affected (0.05 sec)
  1. // 复制表内容
  2. insert into test_clone (id, i, name, age) select id, i, name, age from test;

image.png