临时表可能是非常有用的,在某些情况下,保持临时数据。最重要的是应该知道的临时表是,他们将当前的客户端会话终止时被删除

当你创建临时表的时候,你可以使用temporary关键字。如:

代码如下

create temporary table tmp_table(name varchar(10) not null,passwd char(6) not null)‘

CREATE TEMPORARY TABLE IF NOT EXISTS sp_output_tmp ENGINE = MEMORY SELECT …from … where ID=current_id;

临时表只在当前连接可见,当这个连接关闭的时候,会自动drop。这就意味着你可以在两个不同的连接里使用相同的临时表名,并且相互不会冲突,或者使用 已经存在的表,但不是临时表的表名。(当这个临时表存在的时候,存在的表被隐藏了,如果临时表被drop,存在的表就可见了)。创建临时表你必须有

create temporary table 权限。

下面几点是临时表的限制:

临时表只能用在 memory,myisam,merge,或者innodb

临时表不支持mysql cluster(簇)

在同一个query语句中,你只能查找一次临时表。例如:下面的就不可用

代码如下

mysql> SELECT * FROM temp_table, temp_table AS t2;

ERROR 1137: Can't reopen table: 'temp_table'

如果在一个存储函数里,你用不同的别名查找一个临时表多次,或者在这个存储函数里用不同的语句查找,这个错误都会发生。

show tables 语句不会列举临时表

你不能用rename来重命名一个临时表。但是,你可以alter table代替:

代码如下

mysql>ALTER TABLE orig_name RENAME new_name;

临时表用完后要记得drop掉:

代码如下

DROP TEMPORARY TABLE IF EXISTS sp_output_tmp;

创建临时表

实例

下面是一个例子,使用临时表在PHP脚本中,使用mysql_query()函数,可以使用相同的代码。

代码如下

mysql> CREATE TEMPORARY TABLE SalesSummary (

-> product_name VARCHAR(50) NOT NULL

-> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00

-> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00

-> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0

);

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SalesSummary

-> (product_name, total_sales, avg_unit_price, total_units_sold)

-> VALUES

-> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SalesSummary;

+--------------+-------------+----------------+------------------+

| product_name | total_sales | avg_unit_price | total_units_sold |

+--------------+-------------+----------------+------------------+

| cucumber     |      100.25 |          90.00 |                2 |

+--------------+-------------+----------------+------------------+

1 row in set (0.00 sec)

当发出一个SHOW TABLES命令,那么临时表将不会被列在列表中。现在如果将MySQL的会话的注销,那么会发出SELECT命令,那么会发现没有在数据库中的数据。即使临时表也就不存在了。

删除临时表:

默认情况下,所有的临时表被删除时,MySQL的数据库连接被终止。不过要删除他们之前就应该发出DROP TABLE命令。

下面的例子为删除一个临时表。

代码如下

mysql> CREATE TEMPORARY TABLE SalesSummary (

-> product_name VARCHAR(50) NOT NULL

-> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00

-> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00

-> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0

);

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SalesSummary

-> (product_name, total_sales, avg_unit_price, total_units_sold)

-> VALUES

-> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SalesSummary;

+--------------+-------------+----------------+------------------+

| product_name | total_sales | avg_unit_price | total_units_sold |

+--------------+-------------+----------------+------------------+

| cucumber     |      100.25 |          90.00 |                2 |

+--------------+-------------+----------------+------------------+

1 row in set (0.00 sec)

mysql> DROP TABLE SalesSummary;

mysql>  SELECT * FROM SalesSummary;

ERROR 1146: Table 'TUTORIALS.SalesSummary' doesn't exist

mysql sql语句临时表_mysql 创建与删除临时表sql语句相关推荐

  1. 【第11天】SQL进阶-索引的创建、删除(SQL 小虚竹)

    回城传送–><32天SQL筑基> 文章目录 零.前言 一.练习题目 二.SQL思路 SQL进阶-索引的创建.删除:SQL121 创建索引 初始化数据 解法 扩展 SQL进阶-索引的创 ...

  2. 创建MySQL数据库的副本_MySQL创建数据库(CREATE DATABASE语句)

    在 MySQL 中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下: CREATE DATABASE [IF NOT EXISTS] [[DEFAULT] CHARACTER ...

  3. mysql添加临时索引_mysql创建索引/删除索引操作

    -- 1.ALTER 创建索引 -- table_name表名,column_list列名,index_name索引名 -- 创建index索引 ALTER TABLE table_name ADD ...

  4. mysql 查询 插入 临时表_mysql创建临时表,将查询结果插入已有表中

    今天遇到一个很棘手的问题,想临时存起来一部分数据,然后再读取.我记得学数据库理论课老师说可以创建临时表,不知道mysql有没有这样的功能呢?临时表在内存之中,读取速度应该比视图快一些.然后还需要将查询 ...

  5. mysql创建用户表的sql语句_Mysql创建、删除用户和表的SQL语句

    Mysql创建.删除用户和表的SQL语句 (2015-01-15 17:08:17) 标签: it 联动北方 数据库 分类: IT MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意 ...

  6. mysql磁盘临时表清理_mysql 创建大量磁盘临时表

    发现 mysql 中创建的临时表基本都是磁盘临时表,对此进行排查.最后为临时表机制说明. 通过查看 mysql 状态变量,看到创建的临时表基本都是磁盘临时表. 查看临时表配置,默认配置 16M,配置并 ...

  7. MySQL中关于临时表的创建到删除详细过程

    1.临时表的创建: CREATE TEMPORARY TABLE SalesSummary (product_name VARCHAR(50) NOT NULL, total_sales DECIMA ...

  8. 索引创建、删除的sql语句

    目录 常用的索引类型 创建索引 使用ALTER TABLE 语句创建索引 使用CREATE TABLE 语句创建索引 删除索引 使用ALTER TABLE 语句删除索引 使用DROP INDEX 语句 ...

  9. mysql中删除用户_Mysql创建,删除用户

    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...

最新文章

  1. idea配置jfinal_Jfinal 项目在idea上创建
  2. java 操作 ldap_JAVA操作LDAP总结
  3. [以太坊源代码分析] I.区块和交易,合约和虚拟机
  4. java 检测硬盘原理_深入Java核心 Java内存分配原理精讲
  5. discuz mysql data_Discuz!显示 Database Error的原因和解决方法
  6. Codeforces Round #665 (Div. 2)
  7. java 中map_Java中Map集合
  8. jquery select css样式,css配合jquery美化 select
  9. MS-SQL (sql server)添加数据库只读用户K3DBSQP,并遍历所有数据库添加访问只读访问权限
  10. 前端必须学会的5个原生JavaScript对象方法
  11. java 下载项目中的文件_java 下载web项目目录下的文件
  12. spring mvc-基础-简单程序
  13. 算法32---图片平滑器
  14. postman websocket_postman的“替代者”postwoman的使用体验—从入门到放弃
  15. 一道简单的但是经典的动态规划题目
  16. 多元线性回归—异方差
  17. vue 实现点击选中div后, 右下角显示对号√
  18. arch模型 matlab,ARCH模型(arch模型干嘛的)
  19. Fedora 20 的 r8168 与 rtl8723be 驱动
  20. 14款超时尚的HTML5时钟动画

热门文章

  1. 导出word分页与横向打印
  2. 基于JAVA护肤品购物系统计算机毕业设计源码+数据库+lw文档+系统+部署
  3. FPGA作业_阶段一(六进制计数器仿真6-9进制循环计数器)
  4. 《论文阅读》EMOTIONFLOW: CAPTURE THE DIALOGUE LEVEL EMOTION TRANSITIONS
  5. 7个关键词带你看小米空净
  6. 洛谷P1077:摆花【动态规划】
  7. int转换为char数组 java_int转换char的正确姿势
  8. 联通定制版GALAXY S Ⅲ发布 选286套餐0元购机
  9. 使用Ajax读出json文件来进行一些操作(使用Ajax读取数据,并显示到网页中数据使用文本格式数据使用json格式)
  10. 用bat几行代码让你轻松用上office2019