Teradata支持以下表格类型来保存临时数据。
派生表
挥发性表
全球临时表
派生表
派生表在查询中创建,使用和删除。这些用于在查询中存储中间结果。
例
以下示例使用薪金大于75000的雇员记录创建派生表EmpSal。
SELECTEmp.EmployeeNo,Emp.FirstName,Empsal.NetPayFROMEmployeeEmp,(selectEmployeeNo,NetPayfromSalarywhereNetPay>=75000)EmpsalwhereEmp.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.