广告
返回顶部
首页 > 资讯 > 数据库 >mysql临时表插入数据方式
  • 383
分享到

mysql临时表插入数据方式

2024-04-02 19:04:59 383人浏览 安东尼
摘要

目录Mysql临时表插入数据临时表mysql中临时表(TEMPORARY)语法功能检查是否存在临时表与MEMORY比较mysql临时表插入数据 临时表 1.在数据库断开连接的时候会自动删除临时表。 create tem

mysql临时表插入数据

临时表

1.在数据库断开连接的时候会自动删除临时表。

 create temporary table IF NOT EXISTS client.getstucou(
  type_id int
 )Engine=InnoDB default charset utf8;

注意:在存储过程中创建了临时表的情况的话,在外面使用查询语句是找不到这张表的。

例如:

mysql临时表插入数据方式

在存储过程中的sql语句中才而能找到该表。

2.临时表插入(select语句查出的数据集合)。INSERT INTO 表名 (查询到的集合)

例如:UNION ALL(将两个select语句求并集)

INSERT INTO getstucou 
 WITH TEMP AS (
  SELECT
  *
  FROM
  t_shop_type
  WHERE
  parent_type_id = @StuNo
  OR type_id
  = @StuNo
  UNioN ALL
  SELECT
  t.*
  FROM
  TEMP,
  t_shop_type t
  WHERE
  TEMP.type_id = t.parent_type_id
  ) SELECT
  type_id 
  FROM
  TEMP;

mysql中临时表(TEMPORARY)

首先来看看官网给的有关MySQL的临时表的简介:

In MySQL, a temporary table is a special type of table that allows you to store a temporary result set, which you can reuse several times in a single session.A temporary table is very handy when it is impossible or expensive to query data that requires a single SELECT statement with the JOIN clauses. In this case, you can use a temporary table to store the immediate result and use another query to process it.

总结而来就是:

当我们需要使用难以接受的或开销很大的一个SELECT语句和JOIN子句的数据时,临时表非常方便。

语法

大致同CREATE TABLE语法,创建临时表则是CREATE TEMPORARY TABLE,增加了TEMPORARY关键字表示临时表。

1.创建

(1)创建不同于现有表的临时表

CREATE TEMPORARY TABLE table_name(
 column_1_definition,
 column_2_definition,
 ...,
 table_constraints
);

实例:

//首先,创建一个新的临时表,称为credits存储客户的信用:
CREATE TEMPORARY TABLE credits(
  customerNumber INT PRIMARY KEY,
  creditLimit DEC(10,2)
);
//然后,将customers表中的行插入临时表中credits:
INSERT INTO credits(customerNumber,creditLimit)
SELECT customerNumber, creditLimit
FROM customers
WHERE creditLimit > 0;

(2)创建结构基于现有表的临时表

不能使用该CREATE TEMPORARY TABLE … LIKE语句。而是,使用以下语法:

CREATE TEMPORARY TABLE temp_table_name
SELECT * FROM original_table
LIMIT 0;

实例:

//下面的示例创建一个临时表,该表按收入存储前10名客户。临时表的结构是从以下SELECT语句派生的:
CREATE TEMPORARY TABLE top_customers
SELECT p.customerNumber,
   c.customerName,
   ROUND(SUM(p.amount),2) sales
FROM payments p
INNER JOIN customers c ON c.customerNumber = p.customerNumber
GROUP BY p.customerNumber
ORDER BY sales DESC
LIMIT 10;
//从top_customers临时表中查询数据,就像从永久表中查询一样:
SELECT
  customerNumber,
  customerName,
  sales
FROM
  top_customers
ORDER BY sales;

2.删除

可以通过DROP TABLE语句删除临时表,但不推荐这样,因为当临时表与永久表同名时,有可能会误删永久表,当然若你已经准备好机票,我就祝你一路顺风吧!若你未曾准备好机票,这里也给你提供中航订票电话:0086-95583 | 0086-10-95583,祝你好运!

推荐:

DROP TEMPORARY TABLE table_name;

注意:

(1)如果尝试使用该DROP TEMPORARY TABLE语句删除永久表,则会收到一条错误消息,提示您尝试删除的表是未知的。愉快地避免删表的误操作了。

(2)如果开发使用连接池或持久连接的应用程序,则不能保证在终止应用程序时自动删除临时表。因为该应用程序使用的数据库连接可能仍处于打开状态,并放置在连接池中,以便其他客户端以后再使用。因此,一个好习惯是在不再使用临时表时始终删除它们。

(3)在采用连接池的情况下,为防止多次CREATE 、 DROP TEMPORARY TABLE带来的性能瓶颈,可以使用CREATE IF NOT EXISTS + TRUNCATE TABLE 的方式来提升性能。(注意:IF NOT EXISTS是在TABLE之后,table_name之前的。)

功能

(1)通过使用CREATE TEMPORARY TABLE语句创建一个临时表。请注意,该关键字TEMPORARY已添加到CREATE和TABLE关键字之间 。

(2)当会话结束或连接终止时,MySQL自动删除临时表。当然,您可以在DROP TABLE不再使用临时表时使用该 语句显式删除该临时表。

(3)临时表仅对创建它的客户端可用并且可以访问。不同的客户端可以创建具有相同名称的临时表而不会导致错误,因为只有创建临时表的客户端才能看到它。但是,在同一会话中,两个临时表不能共享相同的名称。

(4)临时表可以与数据库中的普通表具有相同的名称。例如,如果您创建一个employees在示例数据库中命名的临时表,则现有employees表将变得不可访问。您针对该employees表发出的每个查询现在都引用该临时表 employees。当您删除employees临时表时,永久employees表可用且可访问。

但即使临时表可以与永久表具有相同的名称,也不建议使用。因为这可能导致混乱并可能导致意外的数据丢失。例如,如果与数据库服务器的连接丢失并且您自动重新连接到服务器,则无法区分临时表和永久表。然后,您可以发出一条DROP TABLE 语句删除永久表而不是临时表,这是不期望的。为避免此问题,可以使用该DROP TEMPORARY TABLE语句删除临时表。

检查是否存在临时表

MySQL不提供直接检查临时表是否存在的函数或语句。但是,我们可以创建一个存储过程来检查临时表是否存在,如下所示:

DELIMITER //
CREATE PROCEDURE check_table_exists(table_name VARCHAR(100))
BEGIN
  DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' SET @err = 1;
  SET @err = 0;
  SET @table_name = table_name;
  SET @sql_query = CONCAT('SELECT 1 FROM ',@table_name);
  PREPARE stmt1 FROM @sql_query;
  IF (@err = 1) THEN
    SET @table_exists = 0;
  ELSE
    SET @table_exists = 1;
    DEALLOCATE PREPARE stmt1;
  END IF;
END //
DELIMITER ;
//在此过程中,我们尝试从临时表中选择数据。如果临时表存在,则将该@table_exists变量设置为1,否则,将其设置为0。
//该语句调用check_table_exists来检查临时表是否credits 存在:
CALL check_table_exists('credits');
SELECT @table_exists;
//根据输出判断临时表是否存在

与MEMORY比较

我们知道还有一种通过存储引擎创建临时表的方式ENGINE|TYPE = MEMORY,这种方式创建的临时表是在内存中的,效率在理论上是比TEMPORARY更高的,因为MEMORY是在内存中,TEMPORARY是同永久表在磁盘上的。

实例:

CREATE TEMPORARY TABLE table_name(
 column_1_definition,
 column_2_definition,
 ...,
 table_constraints
) ENGINE|TYPE = MEMORY;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文档:

--结束END--

本文标题: mysql临时表插入数据方式

本文链接: https://www.lsjlt.com/news/34210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql临时表插入数据方式
    目录mysql临时表插入数据临时表mysql中临时表(TEMPORARY)语法功能检查是否存在临时表与MEMORY比较mysql临时表插入数据 临时表 1.在数据库断开连接的时候会自动删除临时表。 create tem...
    99+
    2022-09-26
  • mysql数据库表插入数据
    如何向mysql数据表中插入数据? 答:你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: 如果数据是字符型,必须使用单引...
    99+
    2023-08-31
    数据库 mysql php
  • MySQL插入数据的多种方式
    插入数据的多种方式 replace关键字插入数据 语法: REPLACE [LOW_PRIORITY | DELAYED] [INTO] tbl_name [PARTITION (part...
    99+
    2023-10-25
    mysql 数据库 sql
  • 建表时向表中插入数据
    DECLARE BEGIN execute immediate 'create table TJ_JKTJBACK(tjbh VARCHAR2(200) not null,grb...
    99+
    2022-10-18
  • sql怎么新建临时表并导入数据
    要新建临时表并导入数据,可以使用以下步骤: 创建临时表:使用`CREATE TEMPORARY TABLE`语句创建临时表。临时表...
    99+
    2023-10-27
    sql
  • MySql批量插入时如何不重复插入数据
    目录前言一、insert ignore into二、on duplicate key update三、replace into总结前言 Mysql插入不重复的数据,当大数据量的数据需...
    99+
    2022-11-12
  • MySQL MyBatis 默认插入当前时间方式
    目录MySQL MyBatis 默认插入当前时间MyBatis 插入时间类型的数据MySQL MyBatis 默认插入当前时间 <!--单表动态更新语句 -->...
    99+
    2022-11-13
    MyBatis插入当前时间 MyBatis当前时间 MyBatis默认当前时间
  • MySQL之创建表并插入数据
    文章目录 一、在数据库中创建表二、Table的变量类型2.占位符类型 三、导出数据库中的表总结 一、在数据库中创建表 MySQL中table实在已有数据库的基础上创建的,因此在创...
    99+
    2023-10-27
    mysql 数据库
  • MySQL数据表插入数据及增加语句
    每个数据库都有增删改查功能,下面简单说说MySQL INSERT语句用法。 1,MySQL INSERT语句允许您将一行或多行插入到表中 INSERT INTO table(column1,column2....
    99+
    2022-10-18
  • 避免 MySQL 插入重复数据的 4 种方式
    最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下: 这里为了方便演示,我新建了一个us...
    99+
    2023-09-20
    mysql 数据库 sql Powered by 金山文档
  • Mysql避免重复插入数据的4种方式
    最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下: 这里为了方便...
    99+
    2022-05-21
    Mysql 重复插入数据 MYSQL避免重复插入
  • MySql按条件插入数据,MySQL插入语句写where条件,MySQL在插入时做幂等
    文章目录 写在前面根据条件插入数据1、先准备测试数据2、正常的插入语句3、有条件的插入语句(重点)4、查看最终结果 总结分析 写在前面 使用MySQL的删、改、查功能时,我们都可以根据...
    99+
    2023-10-08
    mysql 数据库 sql
  • MySQL定时任务,清理表数据方式
    目录mysql定时清理表数据对某个表只保留一个月内的数据MySQL定时自动删除数据表描述开启事件调度器关闭事件开启事件删除事件查看事件MySQL定时清理表数据 针对一些每天都会产生大量数据的表,比如说报警、日志表等,数据...
    99+
    2022-11-19
    MySQL定时任务 MySQL清理表数据 MySQL定时清理表数据
  • mysql插入多条数据的方法
    这篇文章主要介绍mysql插入多条数据的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql插入多条数据的方法:1、使用“INSERT INTO 表名 字段列表 VALUES...
    99+
    2022-10-18
  • Mysql大数据批量插入方法
    MySQL是当前最流行的关系型数据库之一,大数据批量插入是MySQL中常用的操作之一。在处理大量数据时,如果一条一条地插入会极大地影响效率,因此批量插入是一个更好的选择,可以大大提高数据的处理速度。下面介绍几种MySQL大数据批量插入的方法...
    99+
    2023-09-14
    mysql 大数据 数据库
  • mysql ON DUPLICATE KEY UPDATE重复插入时更新方式
    目录mysql当插入重复时更新的方法第一种方法第二种方法第三种方法Mysql on duplicate key update解决插入重复数据时更新值的问题以及其存在的问题使...
    99+
    2022-11-13
  • mysql ON DUPLICATE KEY UPDATE重复插入时更新方式
    目录mysql当插入重复时更新的方法第一种方法第二种方法第三种方法Mysql on duplicate key update解决插入重复数据时更新值的问题以及其存在的问题使用存在问题mysql当插入重复时更新的...
    99+
    2022-07-11
    mysql重复插入 mysql插入更新 mysql ON DUPLICATE KEY UPDATE
  • mysql中插入表数据中文乱码的解决方法
    小编给大家分享一下mysql中插入表数据中文乱码的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql中插入表数据中...
    99+
    2022-10-18
  • mysql往表里插数据的方法
    这篇文章主要介绍mysql往表里插数据的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前...
    99+
    2022-10-18
  • 我们如何向 MySQL 表中插入数据?
    要将数据插入 MySQL 表,我们需要使用 INSERT INTO 命令。我们必须在 INSERT INTO 命令中指定表中所有列的值。语法INSERT INTO table_name values(value1,value2,&helli...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作