ホームページ  >  記事  >  データベース  >  キーワードを使ったOracle学習(具体例)

キーワードを使ったOracle学習(具体例)

WBOY
WBOY転載
2022-03-02 18:05:282774ブラウズ

この記事では、Oracle に関する関連知識を紹介します。主に using キーワードに関する関連知識を紹介します。using キーワードを使用すると、接続クエリを簡素化できます。皆様のお役に立てれば幸いです。 。

キーワードを使ったOracle学習(具体例)

推奨チュートリアル: 「Oracle チュートリアル

仕事中に、次のような SQL ステートメントを見つけました。

select 
    tb.usrnm, 
    tb.typ, 
    tb.oprorder 
    from tb
    inner join rb1
    using (stfaprid) 
    where tb1.jugsumid = #jugsumid# 
    and tb1.blnorg = #blnorg# 
    and isvld = '1' 
    order by tb.typ asc, tb.oprorder asc
SQL/92 標準では、using キーワードを使用して接続クエリを簡素化できますが、using キーワードは、次の 2 つの条件を満たす場合にのみクエリを簡素化するために使用できます。

    1. クエリは等しい値の接続である必要があります。
  • 2. 等結合内の列は、同じ名前とデータ型を持つ必要があります。
例: 次のように using キーワードを使用します。

select emptno,ename,sal,deptno,dname from emp e inner join dept d using(deptno);
上記のステートメントを実行すると、結果は自然接続の結果と同じになります。

using キーワードを使用して接続を簡素化する場合は、次の点に注意する必要があります:

    1. emp テーブルと dept テーブルの deptno 列を使用して接続する場合、 using 句および select 句では、deptno 列にテーブル名またはテーブルの別名を指定できません。
  • 2. 2 つのテーブル内の同じ複数の列が接続クエリで使用されている場合、using 句で複数の列名を指定できます
形式は次のとおりです。

select... from table1 inner join table2 using(column1,column2)
上記のステートメントは次のステートメントと同等です:

select... from table1 inner join table2
on table1.column1=table2.column2
and table1.column2=table2.column2;
複数のテーブルを取得する場合は、次の形式で using キーワードを複数回使用して指定する必要があります:

select... from table1
inner join table2 using(column1)
inner join table3 using(column2);
上記のステートメントは、次のステートメントと同等です。

select... from table1,table2,table3
where table1.column1=table2.column1
and table2.column2=table3.column2;
using に関する詳細説明

Oracle の結合接続の using キーワードは、自然結合に関連しています。

natraul 結合が使用されており、2 つのテーブルに同じ名前とデータ型を持つ複数のフィールドがある場合、これらのフィールドは Oracle によって独自に接続されると前述しました。
しかし、実際には、このように接続する必要がない場合もあります。同じ名前とデータ型を持つ複数のフィールドのうち 1 つまたは 2 つを選択するだけです。この時点では、using キーワードを使用する必要があります。以下に例を示します。
sales というテーブルと Cost というテーブルがあり、これら 2 つのテーブルには pro_id と time_id という 2 つのフィールドがあります。以下の接続の実際の意味については、当面は考慮せず、文法的な研究のみを行います。
自然接続を使用する場合、デフォルトでは、2 つのフィールドは自然に接続されます。

Select * from Sales natural join costs;

Select * from Sales join costs on Sales.prod_id = costs.prod_id and sales.time_id = costs.time_id

Select * from Sales ,costs Where Sales.pro_id = cost.prod_id
and sales.time_id = costs.time_id
結果は同じになるはずです。

自然結合を使用する場合、結合条件を制御する機会はありません。Oracle は、同じデータ型と名前を持つ 2 つのフィールドを独自の判断で自然に結合します。
以下では using キーワードを使用します。

Select * from Sales join costs using(prod_id)
これにより、Oracle は、自然結合接続のデフォルトの 2 つのフィールドではなく、 を使用して接続することで指定されたフィールドを使用するようになります。

ここでの SQL ステートメントには意味がないことに注意してください。これは、using の使用法を説明するための突飛な例にすぎません。
ここで説明する必要があるのは次のとおりです:
using キーワードを使用し、選択結果リスト項目に using キーワードで指定されたキーワードが含まれる場合は、そのキーワードを選択結果リスト項目に含めないでください。キーワードがどのテーブルに属しているか たとえば、(prod_id) を使用し、prod_id フィールドを結果リストに含める場合は、sales.prod_id やcosts.prod_id と記述せず、prod_id と記述してください。エイリアスは使用せず、たとえば「製品番号」として prod_id という形式を使用してください。

    使用時に使用できる列名は 1 つだけです。
  • natural join キーワードと using キーワードは相互に排他的です。つまり、これらを同時に使用することはできません。
推奨チュートリアル: 「

Oracle ビデオ チュートリアル

以上がキーワードを使ったOracle学習(具体例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。