.ALL演算子の例: STRUCTURED型UDTでの.ALL演算子の利用 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

以下の例は、*.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';