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で記述します。最初の接続は、結果をフィルタリングするためのフィルターを作成するデータソースであり、データソースとして接続されます。先筛后连