sql >> データベース >  >> RDS >> Oracle

Oracle集合演算子

    Oracle Set Operators(Union、Union All、Intersect and Minus / Except)の使用

    Oracle Set演算子を使用して、複数のテーブルからデータを選択できます。 2つ以上のクエリの結果を組み合わせます。設定演算子を使用する場合

    a)各SELECT句には同じ数の列が必要です

    b)列は同じデータ型である必要があります

    c)列は、すべてのselect句で同じ順序で指定する必要があります。

    4つのセット演算子があります:

    UNION 両方のクエリから返されたすべての一意の行を返します
    ユニオンオール 重複を含むすべての行を返します
    交差 両方のクエリから返された行のみを返します
    マイナス 最初のクエリで選択された一意の行を返しますが、2番目のクエリで選択された行は返しません

    Oracle Union Operator:

    Oracle Union演算子は、2つ以上のSELECTステートメントの結果セットを組み合わせるために使用されます。両方のSELECTステートメントの結果セットを組み合わせて、それらの間の重複行を削除します。したがって、基本的に個別の行を返します

    SELECT city_name FROM CUST_DATA
    UNION
    SELECT city_name FROM SUPP_DATA;

    このクエリは、「Cust_data」と「Supp_data」から都市の個別の行を返します

    Oracle Union All

    Oracle Union All演算子は、2つ以上のSELECTステートメントの結果セットを組み合わせるために使用されます。両方のSELECTステートメントの結果セットを組み合わせて、そのまま返します。したがって、データセットによっても重複が含まれる場合があります

    SELECT city_name FROM CUST_DATA
    UNION All
    SELECT city_name FROM SUPP_DATA
    ;

    このクエリは、「Cust_data」と「Supp_data」から都市のすべての行(重複行も)を返します

    UnionとUnionAllinOracleの違い

    Unionは個別の行を返しますが、Unionallはすべての行を返します。したがって、これらのセット演算子を選択する際には、細心の注意を払う必要があります

    Oracle Intersect

    Oracle Intersect演算子は、2つ以上のSELECTステートメントの結果セットを組み合わせるために使用されます。両方のSELECTステートメントデータセットを組み合わせて、ステートメント間の個別の共通行を返します。したがって、レコードが一方のクエリに存在し、もう一方のクエリには存在しない場合、そのレコードはINTERSECTの結果から省略されます。

    結果は上の図の影付きの部分で示されています

    SELECT city_name FROM CUST_DATA
    INTERSECT
    SELECT city_name FROM SUPP_DATA
    ;

    このクエリは、「Cust_data」と「Supp_data」から共通の都市名を返します

    交差点と結合の違い

    1)INTERSECT演算子は、Intersect演算子のselect句の両方から共通レコードを取得するために使用されますが、Joinは、指定された条件に基づいて2つのテーブルからデータを取得するために使用されます
    2)INTERSECTは、INNERJOIN中にすべての列の比較を行います指定された列のみ。
    3)INTERSECT演算子は、INNERJOIN句とほぼ同じ結果を何度も返します。

    Oracleマイナス

    SQLマイナス演算子は、2つ以上のSELECTステートメントの結果セットを組み合わせるために使用されます。 SELECTステートメントの両方を組み合わせて、最初のselectステートメントから選択された行を返し、次に2番目のselectステートメントから取得されたすべての行をデータセットから削除します

    結果は上の図の影付きの部分で示されています

    SELECT city_name FROM CUST_DATA
    MINUS
    SELECT city_name FROM SUPP_DATA
    ;

    このクエリは、「Cust_data」から都市名「Supp_data」を引いた都市名を返します

    ここでは、selectステートメントから返されるすべてのデータが同じであるため、行は生成されませんでした。

    cust_dataに1つの異なる行を挿入して、結果を確認しましょう

    ここで、supp_dataからcust_dataのマイナスを実行するかどうかを確認しましょう

    SELECT city_name FROM SUPP_DATA
    MINUS
    SELECT city_name FROM CUST_DATA
    ;

    SQL Server、mysqlなどの多くのRDBMSではマイナス演算子を使用していません。そこでは例外を使用します マイナスの代わりに、マイナスと同じ機能があります

    これらのすべてのSQL集合演算子は、Oracle、mysql、SQL Server、Postgres、TeradataなどのMarketで使用されるRDBMSに有効です

    関連記事
    oracleで重複レコードを削除する:Oracleテーブルから重複行を削除する方法に関するヒントと方法。重複する行を問題なく削除するためのさまざまなオプションが用意されています。
    OracleSqlチュートリアル:すべての有用なOraclesql記事のリストが含まれています。 Oracle Sqlを知っている場合でも、Oracle Sqlについて学ぶためにそれらを探索してください。
    Oracleインタビューの質問:このページでOracle Interviewの質問と回答のトップ49を確認してください:基本、インタビューに役立つOracleSQL。追加資料も提供されています
    oracleのwhere句:データセットの制限、where句、sqlステートメントのwhere句、比較演算子の
    Oracleの単一行関数:これをチェックして、sql、Oracleデータの単一行関数を確認してください関数、SQLの数値関数、SQLの文字関数


    1. SQL Server(T-SQL)の既存のテーブルに外部キー制約を追加する方法

    2. データベースの専門家にとって機械学習が意味すること

    3. フォルダからSQLServerに複数のCSVファイルをインポートする

    4. 悪い習慣:キーを選択するときにディスクスペースのみに焦点を当てる