mysql学习教程,从入门到精通,SQL 临时表(37)
1、SQL 临时表
在SQL中,临时表(Temporary Table)是一种在会话或连接期间临时存储数据的表。它们对于存储中间结果、简化复杂查询以及提高性能非常有用。以下是一个创建和使用临时表的示例。
假设我们有一个名为 employees 的表,其中包含以下列:employee_id, first_name, last_name, department_id, 和 salary。我们想要创建一个临时表来存储某个特定部门的员工,并对这些员工进行一些分析。
1.1、创建并使用临时表的步骤
-
创建临时表:
首先,我们需要创建一个临时表来存储数据。临时表在不同的数据库系统中可能有所不同,但通常使用CREATE TEMPORARY TABLE语句。 -
插入数据:
接下来,我们将从原始表中插入数据到临时表中。 -
查询和分析数据:
最后,我们可以对临时表进行查询和分析。
示例代码
以下是一个完整的示例,展示了如何在MySQL中创建和使用临时表:
-- 1. 创建临时表
CREATE TEMPORARY TABLE temp_employees (employee_id INT,first_name VARCHAR(50),last_name VARCHAR(50),department_id INT,salary DECIMAL(10, 2)
);-- 2. 插入数据到临时表
-- 假设我们要插入部门ID为10的所有员工
INSERT INTO temp_employees (employee_id, first_name, last_name, department_id, salary)
SELECT employee_id, first_name, last_name, department_id, salary
FROM employees
WHERE department_id = 10;-- 3. 查询和分析数据
-- 例如,计算临时表中所有员工的平均工资
SELECT AVG(salary) AS average_salary
FROM temp_employees;-- 4. 临时表在会话结束时会自动删除,但你也可以手动删除它
-- DROP TEMPORARY TABLE temp_employees;
1.2、注意事项
-
临时表的生命周期:
- 在MySQL中,临时表在会话结束时会自动删除。
- 在其他数据库系统(如SQL Server)中,临时表分为局部临时表(以
#开头,会话结束时删除)和全局临时表(以##开头,所有会话不再引用时删除)。
-
权限:
- 创建临时表通常需要
CREATE TEMPORARY TABLES权限。
- 创建临时表通常需要
-
事务处理:
- 在某些数据库系统中,临时表可能不支持事务处理或具有特殊的行为。
-
命名冲突:
- 在同一会话中,不能创建两个同名的临时表。
通过创建和使用临时表,你可以有效地处理复杂的查询和数据操作,同时避免对原始数据的直接修改。
当然可以。以下是一些实际的使用SQL临时表的案例,这些案例展示了临时表在不同场景下的应用。
案例一:计算订单交付周期统计信息
假设有一个名为 pln_order_pool 的订单表,包含以下字段:create_time(订单创建时间)、reality_deliver_time(实际交付时间)、order_state(订单状态)等。我们需要计算所有状态为“finish”的订单的平均交付周期、最大交付周期和最小交付周期。
-- 计算每个订单的交付周期,并存储在临时表中
WITH order_lead_times AS (SELECT DATEDIFF(reality_deliver_time, create_time) AS leadTimeFROM pln_order_poolWHERE order_state = 'finish'
)
-- 从临时表中计算平均交付周期、最大交付周期和最小交付周期
SELECT AVG(leadTime) AS avgLeadTime,MAX(leadTime) AS maxLeadTime,MIN(leadTime) AS minLeadTime
FROM order_lead_times;
在这个案例中,我们使用了一个公共表表达式(CTE,也称为WITH子句)来创建一个临时表 order_lead_times,它存储了每个订单的交付周期。然后,我们从这个临时表中计算出了所需的统计信息。
案例二:计算计划完成率
假设有一个名为 plan 的表,用于记录某项目的计划数和实际完成数。该表包含以下字段:date(日期)、type(类型,‘计划’或’实出’)、num(数量)。我们需要计算某一天的计划完成率,即该天的实际完成数与计划数的比值。
-- 计算当天的计划总数,并存储在临时表中
WITH plan_nums AS (SELECT SUM(num) AS planNumsFROM planWHERE type = '计划' AND date = '2022-08-09'
),
-- 计算当天的实际完成总数,并存储在另一个临时表中
finish_nums AS (SELECT SUM(num) AS finishNumsFROM planWHERE type = '实出' AND date = '2022-08-09'
)
-- 从两个临时表中计算计划完成率
SELECT planNums,finishNums,IFNULL(ROUND(finishNums / planNums * 100, 2), 0) AS finishRate
FROM plan_nums, finish_nums;
在这个案例中,我们使用了两个CTE来分别创建存储当天计划总数和实际完成总数的临时表。然后,我们从这两个临时表中计算出了计划完成率。
案例三:数据转换和ETL过程
在ETL(提取、转换、加载)过程中,临时表常用于临时保存和转换数据。例如,我们可能需要从多个表中提取数据,进行转换和清洗,然后将结果加载到目标表中。在这个过程中,临时表可以作为一个中间存储点,用于存储转换后的数据。
-- 创建一个临时表来存储转换后的数据
CREATE TEMPORARY TABLE temp_transformed_data (column1 datatype,column2 datatype,...
);-- 从原始表中提取并转换数据,然后插入到临时表中
INSERT INTO temp_transformed_data (column1, column2, ...)
SELECT transform_function1(original_column1),transform_function2(original_column2),...
FROM original_table;-- 将转换后的数据从临时表加载到目标表中
INSERT INTO target_table (column1, column2, ...)
SELECT column1, column2, ...
FROM temp_transformed_data;-- 删除临时表(虽然它会在会话结束时自动删除)
DROP TEMPORARY TABLE temp_transformed_data;
请注意,具体的SQL语法和函数可能因数据库系统的不同而有所差异。上述案例是基于MySQL的语法编写的,但类似的概念和操作可以在其他数据库系统中实现。
相关文章:
mysql学习教程,从入门到精通,SQL 临时表(37)
1、SQL 临时表 在SQL中,临时表(Temporary Table)是一种在会话或连接期间临时存储数据的表。它们对于存储中间结果、简化复杂查询以及提高性能非常有用。以下是一个创建和使用临时表的示例。 假设我们有一个名为 employees 的表,…...
算法闭关修炼百题计划(四)
仅供个人复习 1.两数相加2.寻找峰值6.岛屿的最大面积3.最大数4.会议室5.最长连续序列6.寻找两个正序数组的中位数 1.两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请…...
头歌实践教学平台 大数据编程 实训答案(二)
第三阶段 Spark算子综合案例 Spark算子综合案例 - JAVA篇 第1关:WordCount - 词频统计 任务描述 本关任务:使用 Spark Core 知识编写一个词频统计程序。 相关知识 略 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下: …...
路由交换实验指南
案例 01:部署使用 eNSP 平台实验需求: 安装华为 eNSP 网络模拟平台打开 eNSP 平台,新建拓扑并绘制网络能够成功启动交换机、计算机设备 实验步骤: 安装华为 eNSP 网络模拟平台启动安装程序 配置安装内容 防护墙允许 eNSP 程序的…...
了解网页 blob 链接
blob 链接 自从 HTML5 提供了 video 标签,在网页中播放视频变得非常简单,只要在代码中插入一个 video 标签,再将 video 标签的 src 属性设置为视频的链接就可以了。由于 src 指向的是视频文件真实的地址,所以当我们通过浏览器的调…...
OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离
OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离 —— 2024-10-02 下午 bilibili赵新政老师的教程看后笔记 code review! 文章目录 OpenGL笔记之事件驱动设计将相机控制类和应用程序类分离1.代码图片2.分析3.UML4.代码 1.代码图片 运行 Mouse button 1 pressed at (1…...
低代码时代的企业信息化:规范与标准化的重要性
在当今数字化转型的浪潮中,企业的信息化建设正逐步向低代码平台倾斜。低代码不仅仅是简化开发过程,更是对企业内部流程、规范和标准化的深刻理解与应用。本文将探讨低代码在企业信息化中的重要性,特别是在运维和开发流程中的标准化࿰…...
理解无监督学习、无监督图像分割
系列文章目录 文章目录 系列文章目录一、无监督学习如何学习 能不能举一个非常具体的例子,带着运算过程的例子总结 二、在图像分割中呢,具体怎样实现无监督示例:使用自编码器和k-means进行无监督图像分割1. **数据准备**2. **构建自编码器**3…...
C语言— exec系列函数
exec系列函数 在C语言编程中,exec 系列函数用于在当前进程中执行一个新程序,从而替换当前进程的映像。这些函数不会返回,除非发生错误。exec 系列函数有多个变体,其中最常用的包括 execl, execle, execlp, execv, execve, execvp…...
命名管道Linux
管道是 毫不相关的进程进程间通信::命名管道 管道 首先自己要用用户层缓冲区,还得把用户层缓冲区拷贝到管道里,(从键盘里输入数据到用户层缓冲区里面),然后用户层缓冲区通过系统调用(write)写…...
【ios】---swift开发从入门到放弃
swift开发从入门到放弃 环境swift入门变量与常量类型安全和类型推断print函数字符串整数双精度布尔运算符数组集合set字典区间元祖可选类型循环语句条件语句switch语句函数枚举类型闭包数组方法结构体 环境 1.在App Store下载Xcode 2.新建项目(可以先使用这个&…...
【AUTOSAR 基础软件】PduR模块详解(通信路由)
文章包含了AUTOSAR基础软件(BSW)中PduR模块相关的内容详解。本文从AUTOSAR规范解析,ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解PduR这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都是依托于ETAS提供的…...
[控制理论]—差分变换法与双线性变换法的基本原理和代码实现
差分变换法与双线性变换法的基本原理和代码实现 1.差分变换法 差分变换法就是把微分方程中的导数用有限差分来近似等效,得到一个与原微分方程逼近的差分方程。 差分变换法包括后向差分与前向差分。 1.1 后向差分法 差分变换如下: d e ( t ) d t e…...
【JavaEE】——多线程常用类
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 引入: 一:Callable和FutureTask类 1:对比Runnable 2:…...
Cilium-实战系列-(二)Cilium-Multi Networking-多网络
一、Cilium必要开启的功能 1、enable-multi-network 2、ipam模式选择:multi-pool 二、涉及的CRD资源 1、 ciliumpodippools.cilium.io *通过Cilium管理节点上的pod cidr.网络分为主网络和第二网络。 *主网络的 ciliumpodippools.cilium.io default根据配置文件默认生成的。 …...
springboot自动配置
自动配置的核心就在SpringBootApplication注解上,SpringBootApplication这个注解 底层包含了3个注解,分别是: SpringBootConfiguration ComponentScan EnableAutoConfiguration EnableAutoConfiguration这个注解才是自动配置的核心,它 封…...
mock数据,不使用springboot的单元测试
业务代码 package com.haier.configure.service.impl;import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.haier.common.util.RequestUtil; import com.haier.configure.entity.Langua…...
【pytorch】pytorch入门5:最大池化层(Pooling layers )
文章目录 前言一、定义概念 缩写二、参数三、最大池化操作四、使用步骤总结参考文献 前言 使用 B站小土堆课程 一、定义概念 缩写 池化(Pooling)是深度学习中常用的一种操作,用于降低卷积神经网络(CNN)或循环神经网…...
职场上的人情世故,你知多少?这五点一定要了解
职场是一个由人组成的复杂社交网络,人情世故在其中起着至关重要的作用。良好的人际关系可以帮助我们更好地融入团队,提升工作效率,甚至影响职业发展。在职场中,我们需要了解一些关键要素,以更好地处理人际关系…...
Python | Leetcode Python题解之第456题132模式
题目: 题解: class Solution:def find132pattern(self, nums: List[int]) -> bool:candidate_i, candidate_j [-nums[0]], [-nums[0]]for v in nums[1:]:idx_i bisect.bisect_right(candidate_i, -v)idx_j bisect.bisect_left(candidate_j, -v)if…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
