SQL 临时表

SQL 临时表

什么是临时表

临时表基本上就是字面上的意思:它们是在数据库中创建的用于存储临时数据的表。我们可以执行类似于永久表上的SQL操作,如CREATE、UPDATE、DELETE、INSERT、JOIN等。但是这些表在当前的客户端会话终止后将自动删除。此外,如果用户决定手动删除它们,它们也可以被显式删除。

各种关系型数据库管理系统(RDBMS),如MySQL,从3.23版本开始支持临时表。如果你使用的是比3.23版本旧的MySQL,你就无法使用临时表,但可以使用 堆表

如前所述,临时表只会在客户端会话有效期内存在。如果你在PHP脚本中运行代码,则临时表在脚本执行完毕后会自动销毁。如果通过MySQL客户端程序连接到MySQL数据库服务器,则临时表将一直存在,直到你关闭客户端连接或手动销毁表。

在MySQL中创建临时表

要在MySQL中创建临时表,我们遵循与创建常规数据库表相同的查询。然而,不使用CREATE TABLE语句,而是使用 CREATE TEMPORARY TABLE语句

语法

创建临时表的语法如下:

CREATE TEMPORARY TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

示例

以下是在MySQL数据库中创建临时表的SQL查询语句:

CREATE TEMPORARY TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

就像普通表一样,您可以使用INSERT语句将数据插入临时表中。以下查询将3条记录插入上述创建的临时表中 –

INSERT INTO CUSTOMERS VALUES
   (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
   (2, 'Khilan', 25, 'Delhi', 1500.00 ),
   (3, 'kaushik', 23, 'Kota', 2000.00 );

临时表 CUSTOMERS 将被创建,并包含以下记录:

ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00

当您发出SHOW TABLES命令时,您的临时表将不会显示在表列表中。要验证临时表是否已创建,您需要使用SELECT语句检索它的数据。由于在当前会话关闭时,所有临时表将被删除,所以如果您退出MySQL会话然后发出SELECT命令,您将无法在数据库中找到临时表。 在MySQL中删除临时表 虽然当您的数据库连接终止时,MySQL会删除所有的临时表,但如果您想手动删除它们,可以通过发出DROP TEMPORARY TABLE命令来实现。 示例 以下是删除临时表的基本语法:

DROP TEMPORARY TABLE table_name;

示例

以下查询将删除在上一个示例中创建的临时表 CUSTOMERS

DROP TEMPORARY TABLE CUSTOMERS;

验证

由于我们已经删除了临时表CUSTOMERS,如果您尝试使用SELECT语句检索其内容,它将生成一个错误,表示该表不存在。

SELECT * FROM CUSTOMERS;

这将产生以下结果−

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

SQL Server中的临时表

在MySQL中创建的临时表只在当前会话中可见。但是,在Microsoft SQL Server中可以创建两种类型的临时表。

  • 本地临时表: 本地临时表只能在创建它的会话中访问。当创建它的连接关闭时,它会自动被删除。如果临时表是在存储过程中创建的,在存储过程执行完成后会自动删除。

  • 全局临时表: 全局临时表对所有连接可见,并在引用该表的最后一个连接关闭时被删除。

本地临时表的语法

SQL Server中,使用单个“#”作为表名的前缀来创建本地临时表,如下所示 –

CREATE TABLE #table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

本地临时表示例

以下查询在SQL服务器中创建一个名为CUSTOMERS的本地临时表:

CREATE TABLE #CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

全局临时表的语法

要创建全局临时表,我们需要在表名前面添加前缀“##”,如下所示−

CREATE TABLE ##table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

全局临时表的示例

以下查询在SQL服务器中创建了一个名为Buyers的全局临时表。

CREATE TABLE ##Buyers(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

在SQL Server中删除临时表

如果您想手动删除SQL Server中的临时表,您需要在本地临时表名前面加上”#”,在全局临时表名前面加上”##”,然后执行DROP TABLE语句。

示例

以下查询将删除前面示例中创建的本地临时表 Customers

DROP TABLE #Customers;

然而,以下查询会删除全局临时表 Buyers

DROP TABLE ##Buyers;

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程