- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL 查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查询
- SQL - 删除查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接 vs 右连接
- SQL - Union vs Join
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 复合键
- SQL - 备用键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 集群索引
- SQL - 非集群索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - Min & Max
- SQL - 空函数
- SQL - 检查约束
- SQL - 默认约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复数据
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - Group By vs Order By
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - 临时表
什么是临时表?
临时表与其名称描述的几乎一样:它们是在数据库中创建的用于存储临时数据的表。我们可以执行类似于永久表操作的 SQL 操作,例如 CREATE、UPDATE、DELETE、INSERT、JOIN 等。但是,这些表将在当前客户端会话终止后自动删除。此外,如果用户决定手动删除它们,也可以显式删除它们。
各种 RDBMS(如 MySQL)从 3.23 版开始支持临时表。如果您使用的 MySQL 版本早于 3.23,则无法使用临时表,但可以使用**堆表**。
如前所述,临时表仅在客户端会话处于活动状态时才会存在。如果您在 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 ) );
示例
以下是 SQL 查询,用于在 MySQL 数据库中创建临时表 -
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 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) );
全局临时表的语法
要创建全局临时表,我们需要在表名前添加前缀**##**,如下所示 -
CREATE TABLE ##table_name( column1 datatype, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY( one or more columns ) );
全局临时表的示例
以下查询在 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) );
在 SQL Server 中删除临时表
如果您想在 SQL Server 中手动删除临时表,则需要通过在本地临时表名前放置**#**,在全局临时表名前放置**##**来执行 DROP TABLE 语句。
示例
以下查询删除了上一个示例中创建的本地临时表**Customers**。
DROP TABLE #Customers;
而以下查询删除了全局临时表**Buyers**。
DROP TABLE ##Buyers;