Teradata-table-types

提供:Dev Guides
移動先:案内検索

Teradata-テーブルタイプ

Teradataは、一時データを保持するために次のテーブルタイプをサポートしています。

  • 派生テーブル
  • 揮発性テーブル
  • グローバル一時表

派生テーブル

派生テーブルは、クエリ内で作成、使用、および削除されます。 これらは、クエリ内に中間結果を保存するために使用されます。

次の例は、給与が75000を超える従業員のレコードを含む派生テーブルEmpSalを作成します。

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.