📅  最后修改于: 2020-11-29 09:01:59             🧑  作者: Mango
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
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
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.