Apache-tajo-sql-queries
Apache Tajo-SQLクエリ
この章では、次の重要なクエリについて説明します。
- 述語
- 説明する
- Join
先に進み、クエリを実行しましょう。
述語
述語は、true/false値とUNKNOWNを評価するために使用される式です。 述語は、WHERE句およびHAVING句の検索条件、およびブール値が必要なその他の構造で使用されます。
IN述語
テストする式の値がサブクエリまたはリストの値と一致するかどうかを判断します。 サブクエリは、1つの列と1つ以上の行の結果セットを持つ通常のSELECTステートメントです。 この列またはリスト内のすべての式は、テストする式と同じデータ型である必要があります。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
クエリは、学生ID 2、3、4の mytable からレコードを返します。
問い合わせ
結果
上記のクエリは、次の結果を生成します。
上記のクエリは、学生が2,3と4にない mytable からレコードを返します。
述語のように
LIKE述語は、文字列値を計算するための最初の式で指定された文字列(テストする値と呼ばれる)を、文字列値を計算するための2番目の式で定義されたパターンと比較します。
パターンには、次のようなワイルドカードの任意の組み合わせを含めることができます-
- 下線記号(_)。テストする値の単一文字の代わりに使用できます。
- パーセント記号(%)。テストする値内のゼロ文字以上の文字列を置き換えます。
構文
- 問い合わせ *
結果
上記のクエリは、次の結果を生成します。
クエリは、名前が「A」で始まる生徒のmytableからレコードを返します。
- 問い合わせ *
結果
上記のクエリは、次の結果を生成します。
クエリは、名前が2番目の文字が「a」で始まる生徒の mytable からレコードを返します。
検索条件でのNULL値の使用
ここで、検索条件でNULL値を使用する方法を理解しましょう。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
ここでは、結果はtrueなので、テーブルからすべての名前を返します。
問い合わせ
ここで、NULL条件を使用してクエリを確認します。
結果
上記のクエリは、次の結果を生成します。
説明する
論理計画クエリ
結果
上記のクエリは、次の結果を生成します。
クエリ結果には、指定されたテーブルの論理プラン形式が表示されます。 論理計画は、次の3つの結果を返します-
- 対象リスト
- 出力スキーマ *スキーマ内
グローバルプランクエリ
結果
上記のクエリは、次の結果を生成します。
ここで、グローバルプランには、実行ブロックID、実行順序、およびその情報が表示されます。
参加する
SQL結合は、2つ以上のテーブルの行を結合するために使用されます。 以下は、SQL結合のさまざまなタイプです-
- 内部結合
- \ {左|右| FULL}外部参加
- クロス結合
- 自己参加
- 自然結合
結合操作を実行するには、次の2つのテーブルを検討してください。
表1-顧客
Id | Name | Address | Age |
---|---|---|---|
1 | Customer 1 | 23 Old Street | 21 |
2 | Customer 2 | 12 New Street | 23 |
3 | Customer 3 | 10 Express Avenue | 22 |
4 | Customer 4 | 15 Express Avenue | 22 |
5 | Customer 5 | 20 Garden Street | 33 |
6 | Customer 6 | 21 North Street | 25 |
表2-customer_order
Id | Order Id | Emp Id |
---|---|---|
1 | 1 | 101 |
2 | 2 | 102 |
3 | 3 | 103 |
4 | 4 | 104 |
5 | 5 | 105 |
次に進み、上記の2つのテーブルでSQL結合操作を実行します。
内部結合
内部結合は、両方のテーブルの列が一致する場合、両方のテーブルからすべての行を選択します。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
クエリは、両方のテーブルの5つの行に一致します。 したがって、最初のテーブルから一致した行の経過時間を返します。
左外部結合
左外部結合は、「右」テーブルに一致する行があるかどうかに関係なく、「左」テーブルのすべての行を保持します。
問い合わせ
結果
上記のクエリは、次の結果を生成します。
ここで、左外部結合は、customers(left)テーブルのname列の行と、customer_order(right)テーブルのempid列に一致する行を返します。
右外部結合
右外部結合は、「左」テーブルに一致する行があるかどうかに関係なく、「右」テーブルのすべての行を保持します。
問い合わせ
結果
上記のクエリは、次の結果を生成します。
ここで、Right Outer Joinはcustomer_order(right)テーブルからempid行を返し、name列はcustomersテーブルから一致した行を返します。
フル外部結合
完全外部結合では、左テーブルと右テーブルの両方のすべての行が保持されます。
- 問い合わせ *
結果
上記のクエリは、次の結果を生成します。
クエリは、customersテーブルとcustomer_orderテーブルの両方から一致する行と一致しない行をすべて返します。
クロスジョイン
これは、2つ以上の結合されたテーブルからのレコードのセットのデカルト積を返します。
- 構文 *
問い合わせ
結果
上記のクエリは、次の結果を生成します。
上記のクエリは、テーブルのデカルト積を返します。
自然結合
Natural Joinは、比較演算子を使用しません。 デカルト積のようには連結しません。 2つの関係の間に少なくとも1つの共通属性が存在する場合にのみ、Natural Joinを実行できます。
- 構文 *
- 問い合わせ *
結果
上記のクエリは、次の結果を生成します。
ここでは、2つのテーブル間に存在する共通の列IDが1つあります。 その共通列を使用して、 Natural Join は両方のテーブルを結合します。
自己参加
SQL SELF JOINは、テーブルが2つのテーブルであるかのようにテーブルをそれ自体に結合するために使用され、SQLステートメントで少なくとも1つのテーブルの名前を一時的に変更します。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
クエリは、顧客テーブルをそれ自体に結合します。