ORACLEデータベース(8)----テーブル接続

ORACLEデータベース(8)----テーブル接続

1つは、テーブル接続の分類です。

接続すると、左側のテーブルの各データが右側のテーブルの各データに関連付けられます。

1つの内部接続

関連付け条件に従って関連付け、2つのテーブルで関連付け条件を満たすデータを抽出します

FROM A [INNER] JOIN B ON A.a = B.b -- 常用

2外部接続

左外〉接:FROM A LEFT [OUTER] JOIN B ON Aa = Bb 常用

右外〉接:FROM A RIGHT [OUTER] JOIN B ON Aa = Bb 几乎不用

全外完全接:FROM A FULL [OUTER] JOIN B ON Aa = Bb 偶尔用 用来排查问题

特徴

左外部結合:関連付け条件に従って関連付けます。左側のテーブルがメインテーブルとして使用され、両方のテーブルの関連付け条件を満たすデータとメインテーブルの一意のデータが取り出されます。

右外部結合:右のテーブルがメインテーブルとして使用され、2つのテーブルの関連条件を満たすデータが取り出されます+メインテーブルの一意のデータ

完全外部結合:2つのテーブルの関連条件を満たすデータ+左右のテーブルの一意のデータを取り出します

3デカルト接続

相互接続:FROM A CROSS JOIN B 不常用 笛卡尔积:比较危险,会引起数据量暴涨

条件はありません。左側のテーブルの各データは、右側のテーブルの各データに関連付けられています。

2、一般的な使用法

1複数の関連付け条件があります

ANDおよびORを使用して、関連する条件を接続します

-- 和SMITH同部门的其他人
SELECT A.DEPTNO,B.ENAME
  FROM EMP A
  JOIN EMP B
    ON A.DEPTNO = B.DEPTNO 
 WHERE A.ENAME = 'SMITH'
   AND B.ENAME <> 'SMITH';

ここに画像の説明を挿入します

2複数の関連付けテーブルがあります

-- 查询每个员工的员工编号、姓名、薪资、上级姓名、部门名称、员工薪资等级、领导薪资等级
SELECT A.EMPNO,A.ENAME,A.SAL,B.ENAME,D.DNAME,S.GRADE,S2.GRADE
  FROM EMP A
  LEFT JOIN EMP B 
    ON A.MGR = B.EMPNO
  LEFT JOIN DEPT D
    ON A.DEPTNO = D.DEPTNO
  LEFT JOIN SALGRADE S
    ON A.SAL BETWEEN S.LOSAL AND S.HISAL
  LEFT JOIN SALGRADE S2
    ON B.SAL BETWEEN S2.LOSAL AND S2.HISAL;

ここに画像の説明を挿入します

3、まとめ

1データの相違

2つのテーブルが関連付けられている場合、関連付け条件と実際のデータ条件によっては、複数の関連付けが発生する場合があります
1)1-N:テーブルAの各データがテーブルBの複数のデータに対応する場合があります
2)N-1:A表のデータは表Bの1つのデータに対応します
3)1-1:表Aの1つのデータは表Bの1つのデータに対応します
4)NN:表Aの各データは複数のデータに対応します表Bのデータ。同時に、表Bの各データは、表Aの複数のデータに対応します。
その中で、最初と4番目の2つのタイプ。メインテーブルが前のテーブルに関連付けられている状況とデータがより多くなるデータは、データ発散と呼ばれます。
数据发散有时是依据事实需求的正常情况,有时是因为逻辑欠缺造成的错误现象。

2ORACLEでの特別な書き込み

内部接続:FROM A、B WHERE Aa = Bb
外部接続:左外部接続:FROM A、B WHERE Aa = Bb(+)右外部B表为次表
接続:FROM A、B WHERE Aa(+)= BbA表作为次表
デカルト接続(相互接続) :FROM A、B

3テーブルの結合とサブクエリの選択

1 若查询时用于最终展示的字段来源于多个数据源,必须使用表连接

2 若查询时用于最终展示的字段只来源于一个数据源,同时查询过程中用于筛选判断的字段来源于多个数据源,可以使用表连接或子查询

4テーブル結合と集合演算の比較

類似性:データはすべて一緒にスプライスされ、スプライス結果は新しいデータソースとして使用できます
違い:設定操作はデータ多行垂直方向にスプライスすることです

テーブルが接続されると、多列データは水平方向にスプライスされます

5左外部接続、条件はWHEREとONの差で書き込まれます

WHEREで記述されているのは、最初に接続してから、結果をフィルタリングすることです。 先连后筛

テーブルが接続されると、多列データは水平方向にスプライスされます

5左外部接続、条件はWHEREとONの差で書き込まれます

WHERE句に先连后筛
記述されているように、最初の接続をスクリーニングして結果をONで記述します。最初の接続は、結果をフィルタリングするためのフィルターを作成するデータソースであり、データソースとして接続されます。先筛后连

おすすめ

転載: blog.csdn.net/c727657851/article/details/115052894