デカルトを設定し
、以下の条件の下で生産さデカルトラリーを:
- 省略した接続条件
- 条件が無効である参加
- すべてのテーブルのすべての行が相互接続されています
デカルトのセットを回避するために、WHERE効果的な接続状態で添加してもよいです。
Oracleは、接続された
複数のテーブルの接続クエリデータを使用します。
SELECT TABLE1。列、表2。カラム FROM TABLE1、table2の WHERE table1.column1 = table2.column2。
- WHERE句での接続状態を記述します。
- 場合は、列名の前にテーブル名接頭辞を持つテーブル内の同じ列、
等価結合
の例
SELECT employees.employee_id、 employees.last_name、 のemployees.department_id、 departments.department_id、 departments.location_id FROM 従業員、 部署 のemployees.department_id = departments.department_idを。
- 接続条件AND演算子の複数
重複したカラム名を区別する
- 複数のテーブルに同じ列を区別するために、テーブルの接頭辞を使用します。
- 異なるテーブルに同じ列名を持つ列は、表の別名によって識別することができます。
エイリアステーブル
- エイリアスを使用して、クエリを簡素化します。
- 効率を向上させることができ、テーブルの接頭辞を使用します。
SELECT e.employee_id、 e.last_name、 e.department_id、 d.department_id、 d.location_idを FROM 従業員E、 部門は、D WHERE e.department_id = d.department_id。
複数のテーブルを接続します
- N-テーブル、少なくともn-1個の接続状態を接続します。たとえば、次の3つの接続テーブル、少なくとも二つの接続条件。
非等価結合の
EMPLOYEES表の列給与は最低賃金とJOB_GRADESテーブルの最高賃金の間であるべきである
例
SELECT e.last_name、 e.salary、 j.grade_level FROM 従業員E、 job_grades J WHERE e.salary BETWEEN j.lowest_sal と j.highest_sal。
内側と外側の加入します
- エン:テーブルの同じ列の2行以上と組み合わせて、結果セットが一致していないテーブルと別のテーブルの行が含まれていません
- 外部接続の2つのテーブルが付加戻りラインに結合条件を満足し、また、左を返す(または右)テーブル行状態で接続中に満たされず、この接続は左(または右)と呼ばれる外部結合します。句条件は、内部接続を結ぶ外側に類似しているが、リストの背面に接続されている該当する行、対応する結果表が空(NULL)が。すなわち、外部接続ライン演算子を増加させるための条件と一致しません、カッコ内のプラス記号(+)を持ちます。
- SQLでは:1999、コネクタが結合条件を満たすデータのみを返します
- 戻りラインに加えて、接続二つのテーブル間にさらにテーブルの行の条件を満たしていない、この接続は左(または右)と呼ばれ、左(または右)を返すように結合条件を満足する外部結合。
- 接続時には戻りラインに加えて、2つの表は、さらに戻りライン状態で結合条件を満たして満足して二つのテーブルではありません、この接続は、完全な外部接続と呼ばれています。
外側には結合構文
- 参加条件を満たしていないクエリデータを外部結合を使用します。
- これは、外側の記号(+)に接続されています。
右外连接 SELECT TABLE1を。列、表2。コラム FROM table1の、table2の WHERE TABLE1。カラム(+が)=表2を。コラム; 左外连接 SELECTの TABLE1。列、表2。コラム FROM table1の、table2の WHERE TABLE1。列 =表2。カラム(+)。
例
SELECT e.last_name、 e.department_id、 d.department_name FROM 従業員E、 部門は、D WHERE e.department_id(+)= d.department_id。
接続以来の
例
SELECT worker.last_name || 「のために働く」 || manager.last_name FROM 従業員、 従業員のマネージャ worker.manager_id = manager.employee_id。
1999文法の接続
SELECT TABLE1。列、表2。コラム FROM TABLE1 [ CROSSは、表2のJOIN ] | [ NATURALは、表2のJOIN ] | [ (COLUMN_NAME)を使用して、表2に参加] | [ 表2 JOIN (table1.column_name = table2.column_name)ON ]を | [ LEFT | RIGHT | FULL OUTERは表2をJOIN (table1.column_name = table2.column_name)ON ]。
接続を作成するにはON句
- 天然の結合条件は、同じ名前の接続として表示されます。
- ON句を追加接続条件を指定することができます。
- 接続条件は他の条件から分離されています。
- ON句の文高く読みやすさを作ります
例
SELECT e.employee_id、 e.last_name、 e.department_id、 d.department_id、 d.location_idを FROM 従業員E JOIN部門は、D ON(e.department_id = d.department_id)。
マルチテーブルを作成するための句が加入ON
例
SELECT EMPLOYEE_ID、 都市、 DEPARTMENT_NAME FROM 従業員Eが JOIN部門は、D ON d.department_id = e.department_id JOIN位置LをON d.location_id = l.location_idと、
左外側の
模範的な
SELECT e.last_name、 e.department_id、 d.department_name FROM 従業員は、E LEFT OUTERが JOIN部門は、D ON(e.department_id = d.department_id)。
外部結合右の
例を
SELECT e.last_name、 e.department_id、 d.department_name FROM 従業員は、E RIGHT OUTERが JOIN部門は、D ON(e.department_id = d.department_id)。
完全外部結合します
SELECT e.last_name、 e.department_id、 d.department_name FROM 従業員は、E FULL OUTERが JOIN部門は、D ON(e.department_id = d.department_id)。