GaussDB SQL 基本構文の例 - 配列式

1. はじめに SQL は、データベースにアクセスして処理するために使用される標準的なコンピュータ言語です。GaussDB は SQL 標準をサポートしています (SQL2、SQL3、SQL4 の主要機能はデフォルトでサポートされています)。

この連載では、オンラインドキュメント「Cloud Database GaussDB—SQL Reference」をもとに紹介していきます。

GaussDB データベース配列式へようこそ。この記事では、GaussDB データベースの配列式の概念、構文、使用法を紹介します。GaussDB は、さまざまなビジネス シナリオで広く使用されている、高性能で拡張性の高い分散データベースです。配列式は GaussDB データベースの強力な機能であり、ユーザーは配列演算子と関数を使用してデータベース クエリ内の配列型データを処理できるようになります。この記事を学ぶことで、GaussDB データベースで配列式を使用してデータ処理プロセスを簡素化し、クエリの効率を向上させ、それによってビジネス ニーズをより適切に満たす方法を理解できるようになります。

2. GaussDB の条件式と共通配列式の概念 GaussDB は SQL 言語と一部の拡張機能をサポートしています。GaussDB では、配列型データを処理するために配列式が使用されます。一般的な配列式をいくつか示します。

1、IN :式 IN (値 [, ...])

IN 演算子を使用して、配列が指定された値のリストに含まれているかどうかを確認します。配列に括弧内に指定されたすべての値が含まれている場合は true を返し、それ以外の場合は false を返します。

2、NOT IN :式 NOT IN (値 [, ...])

NOT IN 演算子を使用して、配列が指定された値のリストに含まれていないかどうかを確認します。配列に括弧内に指定された値が含まれていない場合は true を返し、それ以外の場合は false を返します。

3、ANY(配列):式演算子 ANY(配列式)

ANY 演算子は、配列が指定された配列内のいずれかの条件を満たすかどうかを判断するために使用されます。このうち演算子は=、<、>などの比較演算子です。左側の配列が右側の配列の条件を満たしている場合は true を返し、そうでない場合は false を返します。

4、SOME (配列) :式演算子 SOME (配列式)

SOME 演算子は、配列が指定された配列内の少なくとも 1 つの条件を満たすかどうかを判断するために使用されます。このうち演算子は=、<、>などの比較演算子です。左側の配列が右側の配列の少なくとも 1 つの条件を満たしている場合は true を返し、そうでない場合は false を返します。GaussDB での SOME の使用法は ANY と同じであるため、上記の例は SOME にも適用されることに注意してください。

5、ALL (配列) :式演算子 ALL (配列式)

ALL 演算子は、配列が指定された配列内のすべての条件を満たすかどうかを判断するために使用されます。このうち演算子は=、<、>などの比較演算子です。左側の配列が右側の配列のすべての条件を満たしている場合は true を返し、そうでない場合は false を返します。

3. GaussDB でよく使われる配列式(構文+例) 1. 式 IN (value [, ...]) 右側の括弧は配列式のリストです。左側の式の結果が式リストの内容と比較されます。リストの内容が左側の式の結果と一致する場合、IN の結果は true になります。一致する結果がない場合、IN の結果は false になります。

in を使用すると、null データは無視され、null データはクエリされません。式の結果が null の場合、または式リストが式の条件を満たさず、右側の式リストが少なくとも 1 つの空の結果を返す場合、IN の戻り結果は false ではなく null になります。この処理方法は、NULL 値を返す SQL のブール組み合わせ規則と一致しています。

例:基本テーブル:教師テーブル、カリキュラムテーブル

--教師テーブルで代理教師をマッチングできるかどうか

SELECT * FROM コース WHERE teid IN (教師から teid を選択);

2. 式 NOT IN (値 [, ...]) 右括弧は式リストです。左側の式の結果が式リストの内容と比較されます。左側の式の結果と一致するコンテンツがリストにない場合、NOT IN の結果は true になります。一致するコンテンツがある場合、NOT IN の結果は false になります。

クエリ ステートメントが空の結果を返す場合、または式リストが式の条件を満たさず、正しい式リストが少なくとも 1 つの空の結果を返す場合、NOT IN の戻り結果は false ではなく null になります。この処理方法は、NULL 値を返す SQL のブール組み合わせ規則と一致しています。

例 (基本的なテーブルのコースと教師については、上のスクリーンショットを参照してください):

--教師テーブルで代理教師をマッチングできるかどうか

SELECT * FROM コース WHERE teid NOT IN (教師から teid を選択);

3. 式演算子 ANY/ SOME (配列式) 右側の括弧は配列式であり、配列値を生成する必要があります。左側の式の結果は、演算子を使用して配列式の各行の結果を計算および比較します。比較結果はブール値である必要があります。

比較の結果、少なくとも 1 つの true 値が得られた場合、ANY の結果は true になります。比較結果に真の値がない場合、ANY の結果は偽となります。結果に真理値がなく、配列式が少なくとも 1 つの null 値を生成する場合、ANY は false ではなく NULL と評価されます。この処理方法は、NULL 値を返す SQL のブール組み合わせ規則と一致しています。例:基本テーブル:部門1、部門2

-- 部門 2 の従業員よりも年上の部門 1 の従業員を検索します。

SELECT * FROM 部門1

WHERE 年齢 > 任意 (部門 2 から年齢を選択);

SOME は ANY に似ています。

-- 部門 2 の従業員よりも年上の部門 1 の従業員を検索します。

SELECT * FROM 部門1

WHERE 年齢 > SOME (部門 2 から年齢を選択);

追加の指示:

サブクエリ結果のいずれかが特定の値より大きい < サブクエリ結果のいずれかが特定の値未満 = サブクエリ結果のいずれかが特定の値以上 <= どれかが特定の値以下サブクエリ結果 = any サブクエリ結果の特定の値と等しい、IN != any と同等 サブクエリ結果の特定の値と等しくない 4. 式演算子 ALL (配列式) 右側の括弧は配列式です。 、配列値を生成する必要があります。左側の式の結果は、演算子を使用して配列式の各行の結果を計算および比較します。比較結果はブール値である必要があります。

すべての比較結果が true の場合 (配列に要素が含まれていない場合も含む)、ALL の結果は true になります。1 つ以上の比較の結果が false の場合、ALL の結果は false になります。配列式が NULL 配列を生成する場合、ALL の結果は NULL になります。左側の式が NULL と評価される場合、ALL の結果は通常 NULL になります (一部の緩やかな比較演算子は異なる結果を与える場合があります)。さらに、右側の配列式に null 要素が含まれており、比較結果に false 値がない場合、ALL の結果は TRUE ではなく NULL になります (一部の非厳密な比較演算子では異なる結果が得られる場合があります)。この処理方法は、NULL 値を返す SQL のブール組み合わせ規則と一致しています。例: (基本テーブル部門 1 と部門 2 については、上のスクリーンショットを参照してください)

SELECT * FROM 部門1

WHERE 年齢 > ALL (部門 2 から年齢を選択);

追加の指示:

サブクエリ結果のすべての値より大きい < サブクエリ結果のすべての値より小さい = サブクエリ結果のすべての値以上 <= すべての値以下サブクエリの結果 = すべてサブクエリの結果と等しい != すべての値はサブクエリの結果のどの値とも等しくなく、NOT IN IV と同等です。 GaussDB データベースの配列式についてはすでに深く理解していました。配列式は、GaussDB データベースの非常に実用的な関数であり、配列型データをより効率的に処理し、クエリ ステートメントを簡素化し、クエリ効率を向上させるのに役立ちます。この記事がお役に立てば幸いです。

IntelliJ IDEA 2023.3 と JetBrains Family Bucket の年次メジャー バージョン アップデート 新しいコンセプト「防御型プログラミング」: 安定した仕事に就く GitHub.com では 1,200 を超える MySQL ホストが稼働していますが、8.0 にシームレスにアップグレードするにはどうすればよいですか? Stephen Chow の Web3 チームは来月、独立したアプリをリリースする予定ですが、 Firefox は廃止されるのでしょうか? Visual Studio Code 1.85 リリース、フローティング ウィンドウ Yu Chengdong: ファーウェイは来年破壊的な製品を発売し、業界の歴史を書き換えるだろう 米国 CISA はメモリ セキュリティの脆弱性を排除するために C/C++ の廃止を勧告 TIOBE 12 月: C# がプログラミングになると予想30年前 雷軍が書いた論文「コンピュータウイルス判定エキスパートシステムの原理と設計」
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/gaussdb/blog/10321093