- Teradata表
表类型
类型Teradata支持不同类型的表。
- 永久表 - 这是默认表,它包含用户插入的数据并永久存储数据。
- 易失性表 - 插入到易失性表中的数据仅在用户会话期间保留。在会话结束时删除表和数据。这些表主要用于在数据变换期间保存中间数据。
- 全局临时表 - 全局临时表的定义是持久的,但是在用户会话结束时删除表中的数据。
Global Temporary Table的定义存储在数据字典中,并且它们可以被许多用户/会话使用。 但是加载到Global Temporary Table中的数据仅在会话期间保留。 每个会话最多可以实现2000个Global Temporary Table
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);
- 派生表 - 派生表保存查询中的中间结果。它们的生命周期在创建,使用和丢弃它们的查询中。
Teradata支持以下表类型来保存临时数据。
- Derived Table
- Volatile Table
在用户会话中创建,使用和删除Volatile Table。 它们的定义不存储在数据字典中。 它们保存经常使用的查询的中间数据
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;
- Global Temporary Table
- Derived Table:Derived Table在查询中创建,使用和删除。这些用于在查询中存储中间结果。
SELECT
Emp.EmployeeNo,
Emp.FirstName,
Empsal.NetPay
FROM
Employee Emp,
(select EmployeeNo , NetPay
from Salary
where NetPay >= 75000) Empsal
where Emp.EmployeeNo = Empsal.EmployeeNo;
设置与多重集
Teradata基于如何处理重复记录将表分类为SET或MULTISET表。定义为SET表的表不存储重复记录,而MULTISET表可存储重复记录。