【SQL – Oracle】Oracle独自結合構文による等価結合について

【SQL – Oracle】Oracle独自結合構文による等価結合について

Oracle独自結合構文による等価結合

 ここまではSQL:1999結合構文を使用した等価結合の記述方法を違う記事で解説してきましたが、等価結合はOracle独自結合構文で記述することもできます。
 Oracle結合構文での等価結合の構文は以下のとおりです。FROM句に結合する表の名前を「,」(カンマ)で区切って指定します。この構文はOracle独自結合構文の中でも基本となる重要な構文です。

▼ Oracle独自結合構文
 SELECT [表名.]列名 [, [表名. ]列名 …]
 FROM 表名1, 表名2 
 WHERE 結合条件
 [AND 結合条件以外の条件];

 Oracle独自結合構文には以下の特徴があります。SQL:1999結合構文のON句を使用した結合と似ていますが、異なる点もありますので混同しないように注意してください。

〇 結合条件はWHERE句に指定する
 SQL:1999結合構文のON句を使用した結合では、ON句に結合条件を、WHERE句に結合条件以外の条件を指定しますが、Oracle独自結合構文による等価結合ではWHERE句に結合条件を指定し、結合条件以外の条件がある場合はAND演算子を使用して追加します。そのため、結合条件と結合条件以外の条件がWHERE句に混在することになります。

〇 2つの表に共通して存在する列は、表接頭辞を使用して修飾する必要がある
 Oracle独自結合構文による等価結合では、SQL:1999結合構文のON句を使用した結合と同様に、2つの表に同じ名前の列がある場合は、表接頭辞を使用して修飾する必要があります。表接頭辞を使用しないとエラーになるので注意してください。
 なお、SQL:1999結合構文とOracle独自結合構文にパフォーマンス上の差はありません。どちらを使用しても同じパフォーマンスになります。

 以下の例では、Oracle独自結合構文を使用して、EMPLOYEES表とDEPARTMENTS表をDEPTNO列で等価結合しています。

▼ Oracle独自結合構文による等価結合

SQL> SELECT e.empno, e.ename, d.dname
 2  FROM employees e, departments d
 3  WHERE e.deptno = d.deptno
 4  AND d.deptno IN (10, 20);

EMPNO   ENAME    DNAME      
------ -------  ----------- 
1001    佐藤      管理        
1002    鈴木      研究開発    
1005    渡辺      研究開発
1008    中村      管理
1009    小林      研究開発
1011    加藤      研究開発        
1013    山田      研究開発    
1014    佐々木    管理    

8行が選択されました。

 

まとめ

▼ SQL:1999 結合構文とOracle独自結合構文にパフォーマンス上の差はない

コメントを残す