17.05 - 結合 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)

結合とは、複数のテーブルから1つの新しい仮想テーブルに列を射影するアクションのことです。Vantageでは、クエリー ブロックごとに最大128個のテーブルと単一テーブルのビューの結合をサポートしています。

結合とは複数のテーブルから列値を取り出す処置のことと考えることもできます。

関係代数の用語であるproject、restrict、およびproductの定義については、外部結合の関係代数を参照してください。

結合の種類

テーブルを結合する問合わせでは、以下の4つの基本タイプの結合を指定できます。
  • 自然
  • Θ (シータ)
  • 内部
  • 外部

複数の結合タイプを組み合わせて、例えば、自然内部結合および外部結合を作成したり、Θ内部結合および外部結合を作成できます。

自然結合およびシータ結合

自然結合とΘ(シータ)結合の2つが基本タイプの結合になります。

自然結合は、プライマリ インデックスや基本キー/外部キー リレーションなどの一致する列名を持つ共通列の集合に対して行なわれる等価結合で、WHERE句の等価条件中で表わされます。たとえば、

      ... WHERE a.custnum = b.custnum ...

Θ結合はより汎用性の高いタイプの結合であり、等号(=)だけでなく、より大きい(>)、以上(≥)、未満(<)、以下(≤)などの条件を使用できます。たとえば、

      ... WHERE a.custnum > b.custnum ...

Θ演算子が等号(=)である場合、結合は等価結合とみなされます。場合によっては、自然結合と等価結合が同じことがあります。Teradata SQLはANSI SQL-2011 NATURAL JOIN構文をサポートしていないため、自然結合と等価結合の実際の相違を認識しておらず、それらは同等とみなされます。どちらの結合も等価条件で行なわれますが、テーブルの結合に使用する列名は、等価結合では一致していなくてもかまいません。他方、自然結合では一致している必要があります。

SQLでは、相互結合(直積)および自己結合という他の2つの特殊な結合もサポートされています。

これらの結合タイプについて詳しくは、以下の項を参照してください。

結合操作では、交点と直積は特別なケースであることに注意してください。INTERSECT演算子を参照してください。

内部結合および外部結合

内部結合は、結合されるテーブルの間で特定の共通点がある行だけを射影します。内部結合には、他のテーブルに対がない行は含まれないので、その情報が失われることが時折指摘されます。

内部結合の詳細は、以下を参照してください。

外部結合は、内部結合でレポートされない「失われた」情報を回復する方式を備えることになっています。外部結合は、内部結合の拡張で、結合されるテーブルの間で共通点がある行だけでなく、他のリレーション中に対がない行も射影します。

外部結合の作成方法によっては、内部結合に加えて、左のテーブルの一致していない行、右のテーブルの一致していない行、または両方の一致していない行も射影できます。外部結合の相補的な行集合の属性は、結果中にnullで表わされます。

外部結合およびそのさまざまなタイプについて詳しくは、以下を参照してください。
外部結合については、以下の理由について多少の議論があります。

行レベル セキュリティ制約のあるテーブルおよびビューの結合

Vantageは、テーブルまたはビューに同じ行レベル セキュリティ制約がある場合、行レベル セキュリティ制約のあるテーブルおよびビューの結合をサポートします。そうでない場合、エラーが返されます。

行レベル セキュリティ制約の詳細については、Teradata Vantage™ - Advanced SQL Engineセキュリティ管理ガイド、B035-1100Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184のCREATE CONSTRAINTを参照してください。