Sql 简明教程
SQL - Temporary Tables
What are Temporary Tables?
临时表的名称很好地描述了它们的目的:它们是在数据库中创建的用于存储临时数据的表。我们可以执行与永久表类似的 SQL 操作,例如 CREATE、UPDATE、DELETE、INSERT、JOIN 等。但是,一旦当前客户端会话终止,这些表将被自动删除。此外,如果用户决定手动删除它们,也可以显式删除它们。
与 MySQL 等各种 RDBMS 一样,它们从版本 3.23 开始支持临时表。如果您使用的是低于 3.23 的 MySQL 旧版本,则无法使用临时表,但可以使用 heap tables 。
如前所述,临时表仅在客户端会话存续期间才会存在。如果您在 PHP 脚本中运行代码,那么临时表将在脚本执行完毕后自动销毁。如果您通过 MySQL 客户端程序连接到 MySQL 数据库服务器,那么临时表将在您关闭客户端连接或手动销毁该表之前一直存在。
Creating Temporary Tables in MySQL
要在 MySQL 中创建临时表,我们遵循与创建常规数据库表相同的查询。但是,您将使用 CREATE TEMPORARY TABLE statement. ,而不是使用 CREATE TABLE 语句。
Syntax
以下是创建临时表的语法:
CREATE TEMPORARY TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
Example
以下是用于在 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 命令,那么您将找不到数据库中的临时表。
Dropping Temporary Tables in MySQL
虽然当您的数据库连接终止时所有临时表都会被 MySQL 删除,但如果您仍想手动删除它们,那么您可以通过发出 DROP TEMPORARY TABLE 命令来进行删除。
Temporary Tables in SQL Server
在 MySQL 中创建的临时表仅在当前会话中可见。但是,在 Microsoft SQL Server 中您可以创建两类临时表。
-
Local Temporary Tables: 局部临时表仅可由创建它的会话访问。创建它的连接关闭时,它会自动删除。如果在存储过程中创建了临时表,则在存储过程执行完成后,它将自动删除。
-
Global Temporary Tables: 全局临时表对所有连接都是可见的,并在引用该表的最后一个连接关闭时删除。
Syntax of the Local Temporary Tables
要在 SQL Server 中创建局部临时表,单个 # 用作表名的前缀,如下所示:
CREATE TABLE #table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
Example of the Local Temporary Tables
以下查询在 SQL Server 中创建名为 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)
);
Syntax of the Global Temporary Tables
要创建全局临时表,我们需要在表名前加上前缀 ## ,如下所示:
CREATE TABLE ##table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
Example of the Global Temporary Tables
以下查询在 SQL Server 中创建名为 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)
);