返回顶部
首页 > 资讯 > 数据库 >MYSQL & DB2临时表
  • 779
分享到

MYSQL & DB2临时表

mysql数据库 2023-10-06 07:10:13 779人浏览 薄情痞子
摘要

Mysql 建立临时表 CREATE TEMPORARY TABLE 创建临时表 临时表只在当前连接可见,当关闭连接时,mysql会自动删除表并释放所有空间 如果链接到Mysql使用持久性连接,那么只

Mysql 建立临时表

CREATE TEMPORARY TABLE 创建临时表
临时表只在当前连接可见,当关闭连接时,mysql会自动删除表并释放所有空间
如果链接到Mysql使用持久性连接,那么只有在关闭客户端程序时,才会销毁临时表,当然也可以手动销毁。

创建临时表

CREATE TEMPORARY TABLE tablename

创建临时表的语法和 CREATE TABLE tablename 是一样的,只是多了一个 TEMPORARY 关键字

CREATE TEMPORARY TABLE IF NOT EXISTS `tbl_language_tmp`(   `id` INT UNSIGNED AUTO_INCREMENT,   `name` VARCHAR(64) NOT NULL,   `url` VARCHAR(128) NOT NULL,   `founded_at` DATE,   PRIMARY KEY ( `id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

基于已有表格创建临时表
也可以基于其它表格的结构和数据来创建临时表。例如基于admin表格的结构和所有数据来创建临时表:

CREATE TEMPORARY TABLE tmp_admin      select * from admin;

创建临时表时,只需要admin表的结构,不要数据:

CREATE TEMPORARY TABLE TMP_ADMIN SELECT * FROM ADMIN LIMIT 0;

从admin中查询数据并且插入到临时表中:

insert into tmp_admin (id, admin_name, age)       select id, admin_name,age from admin;

使用

SHOW TABLES

命令并不能查看到临时表,但是他是存在的。
插入数据

INSERT INTO `tbl_language_tmp` (`name`,`url`,`founded_at`) VALUES ('python','https://www.twle.cn','1991-2-20');

查询数据

SELECT * FROM tbl_language_tmp;

一些特性

Https://www.maoyingdong.com/mysql_temporary_tables/
MySQL临时表的理解和用法)

  • 会话结束或者数据库连接断开之后,MySQL会自动删除临时表,如果有需要也可以手动删除;
  • 临时表只能在当前会话中访问,不同会话可以创建同名的临时表,且不会相互影响;
  • 临时表的名称可以和已有的普通表一致(但不建议),出现这种情况的时候,优先使用临时表,这时普通表将无法访问,直到临时表被删除。
  • show tables语句不会显示临时表;
  • 同一个临时表在一次查询中最多使用一次,否则会报错
select * from tmp_admin where id in (select * from tmp_admin where id >2);select * from tmp_admin join tmp_admin as t2;select * from tmp_admin uNIOn select * from tmp_admin;

报错

ERROR 1137 (HY000): Can't reopen table: 'tmp_admin'

删除临时表

DROP TEMPORARY TABLE tmp_admin(表名);

全局临时表与会话临时表的区别

全局临时表(Global Temporary Table)和会话临时表(Session Temporary Table)是在数据库中创建临时表的两种方式,它们之间有以下区别:

作用范围:

全局临时表:全局临时表在整个数据库中可见,多个会话可以同时访问和修改全局临时表的数据。全局临时表的数据在所有会话结束后才会被清除。
会话临时表:会话临时表仅在创建它的会话中可见,其他会话无法访问该表。会话临时表的数据在会话结束后会被自动清除。

生命周期:

全局临时表:全局临时表的生命周期与数据库的生命周期相同,即全局临时表的定义会一直存在于数据库中,直到被删除或数据库关闭。
会话临时表:会话临时表的生命周期与创建它的会话的生命周期相同,即会话临时表的定义会在会话结束时自动被删除。
数据共享:

全局临时表:多个会话可以同时读取和修改全局临时表的数据,这使得全局临时表适合用于多个会话之间共享数据的场景。
会话临时表:会话临时表仅在创建它的会话中可见,其他会话无法访问该表,因此会话临时表适用于需要会话私有数据的场景。
根据具体的业务需求和数据共享的要求,可以选择全局临时表或会话临时表来创建临时表。

会话(session)是指什么

在数据库领域中,会话(session)是指用户与数据库系统进行交互的一段时间。它代表了一个用户与数据库建立的连接,通过该连接用户可以执行查询、插入、更新、删除等操作。

当用户与数据库系统建立连接时,系统会为用户创建一个会话。该会话会持续存在,直到用户断开与数据库的连接。在会话期间,用户可以发送 SQL 查询语句、执行事务、访问数据库对象等。

会话通常具有以下特点:

身份验证:在建立会话之前,用户需要进行身份验证,以确保他们有合法的权限来访问数据库。

连接:会话是通过网络或本地连接与数据库建立的连接。一旦连接建立,用户可以与数据库进行通信。

事务管理:会话可以启动、提交或回滚事务。事务用于维护数据库的一致性和完整性。

上下文环境:会话保存了用户的上下文环境,包括当前的数据库、用户权限、设置选项等。

会话变量:会话可以使用会话变量来存储和共享临时数据,这些变量只在会话期间有效。

每个会话都具有唯一的会话标识符(Session ID),用于在数据库系统中标识和管理会话。数据库系统使用会话来跟踪用户的操作和管理资源,确保并发访问的正确性和隔离性。

在多用户环境中,数据库系统能够同时处理多个会话,每个会话都有自己的执行上下文和资源。会话的概念在数据库管理和应用程序开发中非常重要,它提供了一种交互式、持久的用户与数据库系统之间的连接机制。

DB2临时表

DB2-如何建临时表、加索引、Load数据到临时表

建立临时表

DECLARE GLOBAL TEMPORARY TABLE SESSION.EXPORT    (        INSTANCE_ID VARCHAR(32),       INSTANCE_CODE VARCHAR(1000),      CLASSIFIER_ID VARCHAR(200),    PARENT_ID VARCHAR(32),     STRING_4 VARCHAR(20000),    STRING_8 VARCHAR(1000))on commit preserve rows;

如果不加最后一句on commit preserve rows 插入的数据无法保存

给临时表创建索引

CREATE INDEX SESSION.EXPORT ON SESSION.EXPORT(CLASSIFIER_ID)

使用LOAD方式插入数据

CALL SYSPROC.ADMIN_CMD('LOAD FROM (DATABASE 数据库SELECT 语句)OF CURSORINSERT INTO 插入表(字段)NONRECOVERABLE');

示例

CALL SYSPROC.ADMIN_CMD('    LOAD FROM     (DATABASE ZYRS_METADATA         select                 INSTANCE_ID,instance_code,CLASSIFIER_ID,PARENT_ID,STRING_4,STRING_8         from t_md_instance         where namespace like ''/86b2c582006e4ba5808dcd8881d45e3D%'' )     OF CURSOR     INSERT INTO     SESSION.EXPORT (INSTANCE_ID,instance_code,CLASSIFIER_ID,PARENT_ID,STRING_4,STRING_8) NONRECOVERABLE');

临时表采用压缩存储

在数据库中,临时表的存储方式通常是由数据库管理系统自动处理的,而不需要显式指定。不过,如果你希望对临时表进行压缩存储,可以考虑以下两种方法:

使用数据库管理系统的压缩功能:某些数据库管理系统(如oracleSQL Server)提供了压缩功能,可以在创建表时启用压缩。你可以通过在创建临时表时指定压缩选项来实现。例如,在Oracle中,可以使用COMPRESS关键字来创建一个压缩的临时表,如下所示:

CREATE GLOBAL TEMPORARY TABLE your_temp_table(    column1 datatype,    column2 datatype,    ...)ON COMMIT PRESERVE ROWSCOMPRESS;

手动压缩临时表数据:如果数据库管理系统不提供自动压缩的功能,你可以在临时表使用完成后手动进行数据压缩。这可以通过创建新的表并将压缩后的数据插入其中来实现。以下是一个示例:

CREATE TABLE compressed_temp_tableASSELECT column1, column2, ...FROM your_temp_tableWHERE 1=0; -- 创建一个空表,仅保留表结构INSERT INTO compressed_temp_tableSELECT column1, column2, ...FROM your_temp_table;-- 删除原始临时表DROP TABLE your_temp_table;-- 重命名压缩后的表为原始临时表的名称ALTER TABLE compressed_temp_table RENAME TO your_temp_table;

上述示例中,首先创建一个空表 compressed_temp_table,然后将原始临时表 your_temp_table 中的数据插入到新表中。最后,删除原始临时表,并将新表重命名为原始临时表的名称。

来源地址:https://blog.csdn.net/shirsl/article/details/130930483

您可能感兴趣的文档:

--结束END--

本文标题: MYSQL & DB2临时表

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

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

猜你喜欢
  • MYSQL & DB2临时表
    MySQL 建立临时表 CREATE TEMPORARY TABLE 创建临时表 临时表只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间 如果链接到MySQL使用持久性连接,那么只...
    99+
    2023-10-06
    mysql 数据库
  • DB2 ORACLE 临时表创建
    一、临时表     临时表(TEMPORARY TABLE)通常应用在需要定义临时集合的场合。但是,在大部分需要临时集合的时候,我们根本就不需要定义临时表。当我们在一条SQL语句中只使用一次临时集合时,我们可以使用嵌套表表达式来定义临时集...
    99+
    2015-09-25
    DB2 ORACLE 临时表创建
  • db2怎么删除临时表空间
    要删除临时表空间,您可以使用以下步骤: 首先,确保没有任何连接到数据库的应用程序或会话正在使用该临时表空间。您可以使用以下命令检...
    99+
    2024-04-09
    db2
  • MySQL临时表
    外部临时表是通过语句create temporary table...创建的临时表,临时表只在本会话有效,会话断开后,临时表数据会自动清理。 内部临时表主要有两类,一类是information_schema中临时表,另一类是会话执行查询时...
    99+
    2019-07-13
    MySQL临时表
  • MySQL之临时表
    写在前面 本文一起看下MySQL的临时表。 1:什么是临时表 通过create temporary table t语句创建的表,就是临时表,临时表的临时体现在其生命周期是和会话一样的,当会话结束,即连接关闭时MySQL会自动将创建的临时表执...
    99+
    2023-08-17
    mysql 临时表 内存表 temporary table
  • db2临时表空间大小如何计算
    DB2临时表空间的大小需要根据实际业务场景和需求来进行计算。一般来说,可以按照以下步骤计算临时表空间的大小: 确定临时表的大小:...
    99+
    2024-04-09
    db2
  • db2临时表空间不足怎么解决
    当DB2临时表空间不足时,可以尝试以下解决方法: 扩大临时表空间:可以通过增加临时表空间的容量来解决空间不足的问题。使用ALTE...
    99+
    2024-04-09
    db2
  • MySQL怎么建临时表
    在MySQL中,可以使用CREATE TEMPORARY TABLE语句来创建临时表。 临时表是一种只在当前会话有效的表,它的数据仅...
    99+
    2023-10-27
    MySQL
  • mysql临时表,临时表空间,ibtmp1表空间暴增原因初探
    问题的形式解答: 一、MySQL在什么情况下会创建临时表(Internal Temporary Table Use in MySQL)? 我列举3个 1. UNION查...
    99+
    2024-04-02
  • MySQL查询优化临时表
    【理论分析】 MySQL在执行SQL查询时可能会用到临时表,一般情况下,用到临时表就意味着性能较低。 临时表存储 MySQL临时表分为“内存临时表”和“磁盘临时表”,其中内存临时表使用MySQL的MEMORY存储引擎,磁盘临时表使用MySQ...
    99+
    2019-09-24
    MySQL查询优化临时表
  • MySQL会话临时表空间
    1、物理文件 [root@roidb1 data]# cd \#innodb_temp/ [root@roidb1 #innodb_temp]# ls -lh total 160K -rw-r-----. ...
    99+
    2024-04-02
  • mysql临时表怎么使用
    这篇文章主要介绍了mysql临时表怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql临时表怎么使用文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • mysql如何查询临时表
    这篇文章主要讲解了“mysql如何查询临时表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql如何查询临时表”吧! 本教程...
    99+
    2024-04-02
  • mysql中如何用临时表
    这篇文章主要介绍了mysql中如何用临时表的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql中如何用临时表文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • 如何删除MySQL临时表?
    我们知道,如果当前会话终止,MySQL 临时表将被删除。但仍然在会话之间我们想要删除临时表,而不是借助 DROP 语句我们可以删除临时表。可以借助以下示例来理解 -示例在此例如,我们正在删除名为“SalesSummary”的临时表 ...
    99+
    2023-10-22
  • mysql什么时候创建临时表
    MySQL中临时表在以下情况下被创建:1、当执行包含“CREATE TEMPORARY TABLE”语句时,会创建一个临时表,只在当前的数据库连接中存在,并且在连接关闭后会自动删除;2、当执行一些复杂的查询或排序操作时,MySQL可能会在内...
    99+
    2023-07-28
  • MySQL 5.7 新特性 共享临时表空间及临时表改进
    〇 前言: 在MySQL 5.6引用了独立undo tablespace之后,MySQL 5.7在temporary tablespace上做了改进。 已经实现将temporary tablespac...
    99+
    2024-04-02
  • Oracle临时表
    Oracle临时表分为会话级临时表和事务级临时表。会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。事务级临时表是指临时表中的数据只在事务生...
    99+
    2024-04-02
  • MySQL中临时表如何使用
    今天就跟大家聊聊有关MySQL中临时表如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL如何使用临时表 【临时表存储】MyS...
    99+
    2024-04-02
  • mysql的临时表有哪几种
    这篇文章主要介绍“mysql的临时表有哪几种”,在日常操作中,相信很多人在mysql的临时表有哪几种问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql的临时表有哪几种”...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作