OracleにおけるINとEXISTSの主な違いは、SQLエンジンがIN条件ではすべての値を比較するのに対し、EXISTSでは1つでも正の条件が見つかればすぐに処理を停止する点です。
OracleデータベースはOracle社によって設計されたRDBMSです。
データウェアハウスやオンライントランザクション処理で一般的に使用されている。
Oracleの新バージョンであるOracle 19cは、クラウドまたはハイブリッドクラウド環境で利用可能です。
プログラマーは、データベースに格納されているデータに対して操作を実行するためのSQLクエリを記述することができます。
IN と EXISTS は、SQL クエリを作成する際に使用できる 2 つのコマンドまたは条件です。
オラクルのINとは
IN は Oracle の条件であり、WHERE 句でデータをフィルタリングすることができます。
データを限定するのに役立ちます。
さらに、SQL文の中で複数のOR句を使用することを避けることができます。
さらに、INを使った文は、クエリをよりシンプルにすることができます。
構文は以下の通りです。
式は、値を取得する列の名前を表す。
式 IN (値1, 値2, ……, 値n)
例えば、studentというテーブルがあるとします。
IN」を使ったSQL文は次のようになります。
SELECT * from student WHERE name IN (‘Ann’, ‘Peter’, ‘Tom’);
これは、Ann、Peter、Tomという名前を持つレコードを提供することになります。
言い換えると、テーブル内の名前が ‘Ann’ または ‘Peter’ または ‘Tom’ であるすべての列の値が提供されます。
オラクルのEXISTSとは
EXISTS は、クエリを結合してサブクエリを作成するために使用される条件です。
構文は次のとおりです。
サブクエリは、少なくとも1つのレコードを返すselect文であることを表す。
WHERE EXISTS (サブクエリ)
たとえば、table1 と table2 は2つのテーブルです。
EXISTSを使ったSQL文は次のようになる。
SELECT name from table1 WHERE EXISTS (SELECT * FROM table2 WHERE table1.id = table2.id)
中括弧の中のクエリを実行すると、table1からの名前のリストが得られます。
OracleにおけるINとEXISTSの違い
定義
IN はオラクルで複数の OR 条件の使用を最小化するのに役立つ句または条件であり、EXISTS はオラクルでクエリを結合してサブクエリを作成するのに使われる句または条件です。
プロセス
SQLエンジンは、IN条件のすべての値を比較します。
一方、SQLエンジンはEXISTSで1つでも正の条件を見つけるとすぐに処理を停止する。
実行速度
また、サブクエリの結果が小さい場合はINがEXISTSより速く、サブクエリの結果が大きい場合はEXISTSがINより速くなることがわかる。
Null
INはNULLの比較に役立ちますが、EXISTSはNULLの比較には使えません。
ネゲーション
IN の否定は NOT IN であり、EXISTS の否定は NOT EXISTS です。
親クエリと子クエリ
IN は親クエリとサブクエリ間の値を比較しますが、EXISTS は親クエリとサブクエリ間の値を比較することはできません。
直接価値
さらに、IN条件はサブクエリではなく、複数の直接値を持つことができる。
一方、EXISTS条件では、直接値を比較することはできない。
EXISTS条件は、直接値を比較することができないので、selectでサブクエリを持つ必要がある。
使用方法
IN は多重 OR 演算子として使用され、EXISTS は値が返されているかどうかを調べるのに役立ちます。
結論
Oracle は人気のあるデータベース管理システムです。
プログラマーはデータベースに格納されたデータに対して操作を実行するために様々なクエリを書くことができます。
簡単に説明すると、Oracle で利用できる条件は IN と EXISTS の 2 つです。
Oracle の IN と EXISTS の主な違いは、SQL エンジンが IN 条件のすべての値を比較するのに対して、EXISTS は正の条件が一つでも見つかればすぐに処理を停止する点です。