16.20 - .ALL演算子 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-162K-JPN
Language
日本語 (日本)

STRUCTURED型UDTのみの場合、ALLは、指定されたテーブルまたは列名の属性値を返すかどうかを指定します。

構文要素

table_name
すべてのSTRUCTURED型UDT列のすべての属性が返されるテーブルの名前。
column_name
すべての属性が返されるSTRUCTURED型UDT列の名前。
.ALL
指定されたテーブル内の、指定されたUDT列またはすべてのSTRUCTURED型UDT列のすべての属性が式リストの結果に返されることを指定します。

ANSI準拠

.ALLは、ANSI SQL:2011 SQL規格に対するTeradata拡張機能です。

.ALL演算子とSTRUCTURED型UDT

STRUCTURED型UDTデータ型の列がある場合、各属性の値は、.ALLオプションを指定した際に返されます。

以下の構文のいずれかを使用して.ALL演算子を指定するが、指定されたテーブル セットにSTRUCTURED型データ型列がない場合、Teradata Databaseはその指定を無視します。
  • *.ALL
  • table_name.*.ALL

以下の構文を指定するが、指定された列にSTRUCTURED型UDTタイプがない場合、その指定は無視されます。

     column_name.ALL

例: STRUCTURED型UDTでの.ALL演算子の利用

以下の例は、*.ALL演算子のUDTおよびテーブル定義です。

     CREATE TYPE school_record AS (
       school_name VARCHAR(20),
       GPA         FLOAT)
     INSTANTIABLE
     …
     CREATE TYPE college_record AS (
       school school_record,
       major  VARCHAR(20),
       minor  VARCHAR(20))
     INSTANTIABLE
     …
     CREATE TABLE student_record (
       student_id  INTEGER,
       Last_name   VARCHAR(20),
       First_name  VARCHAR(20),
       high_school school_record,
       college     college_record);

例1a:*.ALLを使用してすべてのテーブル列を検索し、STRUCTURED型を展開する

ここでは、同等の応答セットを返すSELECT文のペアの例を示します。唯一の相違点は、一方の文は*.ALL表記を使用し、他方は使用しないということです。

*.ALLを使用してテーブルstudent_recordのすべての列を検索します。ここではSTRUCTURED型列high_schoolおよびcollegeが展開されます。
     SELECT *.ALL
     FROM student_record;

以下の同等なSELECT文では、*.ALL表記を使用していません。

     SELECT student_id, last_name, first_name,
            high_school.school_name(), high_school.GPA(),   
            college.school().school_name(), college.school().GPA(),
            college.major(), college.minor()
     FROM student_record;

例1b:*.ALLを使用して、単一UDT列用の拡張STRUCTURED型を取得する

*.ALLを使用してテーブルstudent_recordのすべての列を検索します。ここではSTRUCTURED型列high_schoolおよびcollegeが展開されます。

     SELECT student_record.*.ALL;

以下の同等なSELECT文では、*.ALL表記を使用していません。

     SELECT student_record.student_id, student_record.last_name,
            student_record.first_name,
            student_record.high_school.school_name(),
            student_record.high_school.GPA(),
            student_record.college.school().school_name(),
            student_record.college.school().GPA(),
            student_record.college.major(),
            student_record.college.minor();

例1c: *.ALLを使用して、複数のUDT列用の拡張STRUCTURED型を取得する

高校名と、すべての生徒のGPA(成績評価点平均)を抽出します。

     SELECT high_school.ALL
     FROM student_record;

以下の同等なSELECT文では、.ALL表記を使用していません。

     SELECT high_school.school_name(), high_school.GPA()
     FROM student_record;

例1d:UDTから1生徒のみについての情報を選択する

生徒「Steven Smith」の大学名、GPA(成績評価点平均)、専攻、および副専攻を抽出します。

     SELECT s.college.ALL
     FROM student_record s
     WHERE s.student.First_name() = 'Steven'
     AND   s.student.Last_name() = 'Smith';

以下の同等なSELECT文では、.ALL表記を使用していません。

     SELECT s.college.school().school_name(), s.college.school().GPA(),
            s.college.major(), s.college.minor()
     FROM student_record s
     WHERE s.student.first_name() = 'Steven'
     AND   s.student.last_name() = 'Smith';