Oracleの単純なクエリ多くのテーブルクエリ。、内部および外部接続は、参加右jionを左有することによって基、内部結合、自己問い合わせ

マルチライン機能

- 複数の行範囲、値を返します

番号

名前

タイプ

説明

1

EMPNO

NUMBER(4)

番号:4桁

2

ENAME

VARCHAR2(10)

名前:10 桁の文字

3

ジョブ

VARCHAR2(9)

オフィス

4

MGR

NUMBER(4)

いいえリーダーシップ:リーダーシップは、会社の従業員ではありません

5

HIREDATE

日付

エントリー日

6

WILL

NUMBER(7,2)

小数点以下2桁基本給、5つの整数、7の合計

7

COMM

NUMBER(7,2)

年末の賞

8

DEPTNO

2番)

従業員の部門番号

1-1 EMPの従業員テーブル)

グループ化機能:複数のライン、戻り値に作用します。

lは  、レコードの数を数えるカウント(*);注意:この関数は、NULL値を無視します。

最小値クエリー分()。

最大クエリ MAX()。

L個の  クエリ平均値 AVG()。

L個の  加算関数 SUM()。

グループその後、グループにデータあれば、指定のプレス列、複数行の統計機能のためのデータのセット。

例:各部門のクエリの数は:、DEPTNOによるEMPグループからのカウント(*)をDEPTNOを選択します。

例えば、各部門のクエリの平均給与:セレクトDEPTNO、AVG(SAL)EMP群からDEPTNOによって、

  • このようなグループ機能を使用すると、 SQLのグループ化基準は、フィールドのみでグループとグループ化機能をチェックし、他のフィールドがあることができます。

例えば:DEPTNOによってEMP群から選択DEPTNO、ジョブ、AVG(SAL); - 错误

例えば:DEPTNOによってEMP基、ジョブから選択DEPTNO、ジョブ、AVG(SAL); - 正确

  • グループ化機能を使用することなく、使用されるフィールドによってグループを、パケットの値のみクエリ機能することができます。

例:EMPからAVG(SAL)を選択します。

フィルタリングデータパケットました

例:持つとどこ達成することができて、2000年より平均給与大きいセクターをチェックアウト:

DEPTNO、DEPTNO有する平均(SAL)によってEMP群からAVG(SAL)> 2000を選択し、

(DEPTNOによるEMPグループからAVG(SAL)SAL、DEPTNOを選択)SAL> 2000年から*選択します。

例:クエリ部門の賃金は、1500のセクターの平均賃金よりも大きいです。

DEPTNOによってEMPここSAL> 1500群からDEPTNO、AVG(SAL)を選択します。


マルチテーブルクエリ

- 複数の行範囲、値を返します

番号

名前

タイプ

説明

1

DEPTNO

2番)

これは、2桁の部門番号を表し

2

DNAME

VARCHAR2(14)

最大の部門名、14の文字

3

LOC

VARCHAR2(13)

場所部門

1-1分割テーブル(DEPT)

番号

名前

タイプ

説明

1

EMPNO

NUMBER(4)

番号:4桁

2

ENAME

VARCHAR2(10)

名前:10 桁の文字

3

ジョブ

VARCHAR2(9)

オフィス

4

MGR

NUMBER(4)

いいえリーダーシップ:リーダーシップは、会社の従業員ではありません

5

HIREDATE

日付

エントリー日

6

WILL

NUMBER(7,2)

小数点以下2桁基本給、5つの整数、7の合計

7

COMM

NUMBER(7,2)

年末の賞

8

DEPTNO

2番)

従業員の部門番号

1-2 EMPの従業員テーブル)

マルチテーブルクエリとは何ですか

lの文は、マルチテーブルクエリの操作に適用する必要があり、複数のテーブルからデータを表示する必要があります。

 

デカルト積とは何ですか?

lの数学的概念:関係演算のセット(関係のすべての組み合わせの集合)

では、SQLデカルト積を実現:、のemp eから* DEPTの選択 e.empnoによってDの順序を、e.deptno;
ソリューションは、無効なデータデカルト積を発行する必要があり、EN(----:

  •  コネクタ内暗黙:。A.関連分野関連するフィールドA、B = Bから
  •  明示的な内部接続: ..内部結合A Bから関連フィールド関連付けられたフィールド上= B)。

    EMP電子SELECT * FROM、DEPTのDここe.deptno = d.deptno; -隐式
    インナーe.deptnoにDEPT dを参加EMP Eから選択* = d.deptno; -显式

概要

Lの接続は、この表示データの要件を満たすことができる2つのデータテーブルが必要です。

リットルの  質問:何の部門の従業員はありません。クエリ部門に関連する情報を表示するには?----外部接続

外側のコネクタオラクルはで書かれた特別なを持っています

  • 外側左:参照テーブルを左側に、左側のテーブルは、すべてのデータを表示され、何のデータが右側に表示されていないヌル

           B表から。関連分野= B。関連分野に参加左

  •  右の外部接続:右への参照テーブル、右側のテーブルのすべてのデータを表示しているが、データは左の表に表示されていないヌル

           表から右。関連するフィールド= B。関連性フィールドにBに参加

  •  外部接続(オラクルで書かれた特別ながある)、それは例えば、接続されて残されています

           A、B FROM WHERE A.関連性フィールド(+)=関連分野からB - それは一般的ではないので、そのようなアプローチは、推奨されません

クエリので、

  •  外側左:参照テーブルを左側に、左側のテーブルは、すべてのデータを表示され、何のデータが右側に表示されていないヌル

 例:従業員の名前、位置、リーダーシップ名識別:EMP mのe.mgr = m.empno、EMP電子SELECT * FROMを。

問題:なしリーダーシップ、何の従業員情報がありません。

ソリューション:左の合流

EMP電子SELECT * FROM e.mgr = m.empno上のempメートルに参加左;

なぜ推奨参加左右の参加インナーはONに参加

  • まず、外部接続の点で OARACLE特異的(+)書き込みは、Oracleのために、一般的ではありません。
  •  左、上の参加右側に参加し、内部には、デバッグ、SQLに簡単に、より明確な構造に参加します。
  • 一次および二次テーブル+)、および左に参加し、右側のジョイン、内部ジョインには、それらの間に明確な区別。 

 

 

 

おすすめ

転載: www.cnblogs.com/yangwang-/p/11592427.html