MySQL临时表

MySQL临时表1 使用场景 MySQL 临时表用来保存一些临时数据 例如 当执行下面这条 SQL 语句 update employeeset salary salary 500where idin selectidfrom lt 8000 会报错错误代码 1093Youcan tspecifytarg

1.使用场景

MySQL临时表用来保存一些临时数据。

例如,当执行下面这条SQL语句

update employee set salary = salary + 500 where id in(select id from employee where salary < 8000);

会报错

-- 错误代码: 1093 -- You can't specify target table 'employee' for update in FROM clause

这时可以使用临时表

DROP TEMPORARY TABLE IF EXISTS tmp_sal; -- 创建临时表 CREATE TEMPORARY TABLE tmp_sal AS SELECT * FROM employee WHERE salary < 8000; -- 从临时表中查询数据 UPDATE employee SET salary = salary + 500 WHERE id IN(SELECT id FROM tmp_sal);

注:MySQL临时表一般配合MySQL存储过程一起使用(PS:其他场景本人目前还没用到过→ →)。

2.作用域

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

(2)如果是使用编程语言(PHP、Java等)的脚本来创建临时表,则当脚本执行完成后,该临时表也会自动销毁。

(3)如果是使用的其他MySQL客户端程序连接MySQL数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表,当然你也可以手动销毁(到下面再说)。

(4)使用 SHOW TABLES 命令是无法查看临时表的。

3.创建临时表

方式一,类似于创建普通表:

DROP TEMPORARY TABLE IF EXISTS salary_analy; -- 创建临时表 CREATE TEMPORARY TABLE salary_analy( depart_name VARCHAR(10), date_year INT, date_month TINYINT, total_salary DECIMAL(12,2), avg_salary DECIMAL(7,2) ); -- 插入数据 INSERT INTO salary_analy (depart_name,date_year,date_month,total_salary,avg_salary) VALUES ('销售一部',2018,7,.00,30000.00); -- 查看 SELECT * FROM salary_analy;

方式二,将查询结果作为临时表(使用 AS 关键字):

DROP TEMPORARY TABLE IF EXISTS salary_analy; CREATE TEMPORARY TABLE salary_analy AS SELECT depart,date_year,SUM(salary) sum_sal,AVG(salary) avg_sal FROM salary GROUP BY depart,date_year;

4.手动删除临时表

手动删除临时表和删除普通表一样

DROP TABLE salary_analy; -- 或 DROP TEMPORARY TABLE salary_analy;

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202428.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午7:09
下一篇 2026年3月20日 上午7:10


相关推荐

  • require用法

    require用法现在前端的页面都采用模块化来加载 js 避免了 js 加载的延迟顺序依赖等问题 原理的东西这里不多做解释 我们这节只是介绍一下 require 的用法 1 首先我们要下载 require js 文件 2 html 引入 lt scriptsrc js require js data main main gt lt script gt 这里 src 是 require js 的路径 data main

    2026年3月16日
    2
  • 用户地理位置的聚类算法实现—基于DBSCAN和Kmeans的混合算法

    用户地理位置的聚类算法实现—基于DBSCAN和Kmeans的混合算法用户地理位置的聚类算法实现—基于DBSCAN和Kmeans的混合算法用户地理位置的聚类算法实现基于DBSCAN和Kmeans的混合算法聚类算法简介1基于划分的Kmeans算法2基于密度的DBSCAN算法用户地理位置信息的的聚类实现1基于Kmeans的聚类实现2基于DBSCAN的聚类实现基于DBSCAN和Kmeans的混合算法实现1.聚类算法简介聚类的目标是使同一类对象

    2022年6月18日
    29
  • wpf-AvalonDock基础-安装和更换主题

    wpf-AvalonDock基础-安装和更换主题最近对wpf的多窗口排列问题深感头疼,算尺寸、位置太麻烦了(也可能是我菜鸡的缘故),最后决定用AvalonDock,排列很漂亮。本篇主要是安装和更换主题,后续会更一篇项目中常用的技巧。再吐槽一下,AvalonDock的中文资料同质化太严重!!!很多需要自己测试了才能用好(我的环境是win10+vs2019)喜欢的话为我的辛苦点个赞吧!嘤嘤嘤安装Avalondock是一个支持mvvm的框架,可以快速开发出类似visualstudio的多窗口app。去https://archive.codepl

    2022年7月20日
    27
  • vue/uniapp 如何让页面的 onLoad 在 onLaunch 之后执行[通俗易懂]

    app.vue里的onLaunch中如果有异步方法(比如:登录),返回结果可能会在页面的onLoad之后,但onLoad中的方法需要登录回调的结果。为了让页面的onLoad在onLaunch之后执行,解决方案:1.main.js添加代码Vue.prototype.$onLaunched=newPromise(resolve=>{Vue.prototype.$isResolve=resolve;})2.在App.vue的onLau

    2022年4月14日
    61
  • AI绘画-Midjourney V7 更新 · 新图形参考​

    AI绘画-Midjourney V7 更新 · 新图形参考​

    2026年3月15日
    2
  • nc报销系统用的什么java_财务NC系统是什么?

    nc报销系统用的什么java_财务NC系统是什么?展开全部 1 NC 系统是一个全面的预算管理平台 支持企业从销售计划 生产 e4b893e5b19e 计划 采购计划 费用计划 投资计划 资金计划 损益计划 资产负债计划的全面预算控制 实现了对经营行为的事前编制 事中控制和事后分析 2 NC 财务系统也叫 NC 系统 充分考虑了用户的个性化需求 提供了多种自我配置和客户

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号