SQL临时表

时间:2020-02-23 14:32:35  来源:igfitidea点击:

在实时情况下,请考虑您对表具有只读访问权限,并且必须操纵其中的某些数据。
当您要在当前会话中使用临时表时,创建临时表总是很有用的。

介绍

在本教程中,我们将讨论MySQL中的临时表。
以下是临时表的一些功能。

  • 当我们关闭会话或者关闭连接时,MySQL会删除一个临时表。

  • 临时表仅对创建它的客户端可见。

  • 临时表可以与普通表共享相同的名称。

  • 如果两个临时表位于不同的会话中,则它们也可以具有相同的名称。

  • 如果临时表和现有的普通表共享相同的名称。
    在不删除临时表之前,普通表将无法访问。

现在,我们将考虑在MySQL中创建,使用和删除临时表。

创建一个临时表

创建临时表的语法:

CREATE TEMPORARY TABLE table_name SELECT column(s) FROM existing_table;

在上述语法中,由于关键字Temporary,将创建一个临时表。

让我们创建一个Library表,并将使用相同的表创建一个临时表。

CREATE TABLE `library` (
`idLibrary` int(11) NOT NULL,
`BookTitle` varchar(45) DEFAULT NULL,
`BookQuantity` int(11) DEFAULT NULL,
`Author` varchar(45) DEFAULT NULL,
`BookPrice` float DEFAULT NULL,
PRIMARY KEY (`idLibrary`),
UNIQUE KEY `idLibrary_UNIQUE` (`idLibrary`)
)

以下查询将用于数据插入。

INSERT INTO `test`.`library`(`idLibrary`,`BookTitle`,`BookQuantity`,`Author`,`BookPrice`)VALUES(1,'The Chamber of Secrets',10,'J K Rowling',20.99);
INSERT INTO `test`.`library`(`idLibrary`,`BookTitle`,`BookQuantity`,`Author`,`BookPrice`)VALUES(2,'One night at the call center',13,'Chetan Bhagat',100.99);
INSERT INTO `test`.`library`(`idLibrary`,`BookTitle`,`BookQuantity`,`Author`,`BookPrice`)VALUES(3,'The God of Small things',11,'Arundhati Roy',120.99);
INSERT INTO `test`.`library`(`idLibrary`,`BookTitle`,`BookQuantity`,`Author`,`BookPrice`)VALUES(4,'War and Peace',5,'Leo Tolstoy',80.00);

我们将创建一个图书数量大于10的临时表。

Create temporary table libary_10 select * from library where bookquantity>10;

现在,我们将使用Select语句检查表是否已创建。

Select * from libary_10;

临时表的用法

现在,我们已经创建了表格,假设我们想获得最高的书价。
我们将使用下面提到的查询来获取结果集。

Select max(bookprice) from libary_10;

现在,我们将了解如何删除临时表。

删除临时表

删除临时表的语法:

Drop Temporary Table temp_table_name;

Temporary关键字用于确保错误地删除了永久表。
如果尝试使用上述语法删除永久表,则会收到错误消息。

让我们看看如何删除临时表。

Drop Temporary Table libary_10;