Teradata - 表类型

Teradata 支持以下表类型来保存临时数据。

  • 派生表
  • 易失性表
  • 全局临时表

派生表

在查询中创建、使用和删除派生表。这些用于在查询中存储中间结果。

示例

以下示例构建了一个派生表 EmpSal,其中包含薪水大于 75000 的员工记录。

SELECT
Emp.EmployeeNo,
Emp.FirstName,
Empsal.NetPay
FROM
Employee Emp,
(select EmployeeNo , NetPay
from Salary
where NetPay >= 75000) Empsal
where Emp.EmployeeNo = Empsal.EmployeeNo;

执行上述查询时,它将返回薪水大于 75000 的员工。

*** Query completed. One row found. 3 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo            FirstName               NetPay 
-----------  ------------------------------  ----------- 
    103                  Peter                 83000 

易失性表

易失性表在用户会话中创建、使用和删除。它们的定义不存储在数据字典中。它们保存经常使用的查询的中间数据。以下是语法。

语法

CREATE [SET|MULTISET] VOALTILE TABLE tablename 
<table definitions> 
<column definitions> 
<index definitions> 
ON COMMIT [DELETE|PRESERVE] ROWS

示例

CREATE VOLATILE TABLE dept_stat ( 
   dept_no INTEGER, 
   avg_salary INTEGER, 
   max_salary INTEGER, 
   min_salary INTEGER 
) 
PRIMARY INDEX(dept_no) 
ON COMMIT PRESERVE ROWS;

当执行上述查询时,它会产生以下输出。

*** Table has been created. 
*** Total elapsed time was 1 second.

全局临时表

全局临时表的定义存储在数据字典中,它们可以被许多用户/会话使用。但加载到全局临时表中的数据仅在会话期间保留。每个会话最多可以实现 2000 个全局临时表。以下是语法。

语法

CREATE [SET|MULTISET] GLOBAL TEMPORARY TABLE tablename 
<table definitions> 
<column definitions> 
<index definitions> 

示例

CREATE SET GLOBAL TEMPORARY TABLE dept_stat ( 
   dept_no INTEGER, 
   avg_salary INTEGER, 
   max_salary INTEGER, 
   min_salary INTEGER 
) 
PRIMARY INDEX(dept_no);

当执行上述查询时,它会产生以下输出。

*** Table has been created. 
*** Total elapsed time was 1 second.