MySQLのDQL詳細(マルチテーブル)


前回はみんなに持ってきて、MySQLの中で単表の検索に対して、今回、友达に多表の検索操作について詳しく話します!
私达の実际の运用の中で、きっと単纯に1枚の表のクエリーではありませんて、いくつかのデータ量の大きい复雑な関系に対して表して、私达は主外のキーの间の関系を利用して接続する必要があって、この时、私达の多表のクエリーに関わりました!マルチテーブル・クエリーでは、結果セットのマージ、内部接続、外部接続、サブクエリーの4つのタイプに分けます.
では、ブロックを分けて理解しましょう.
結果セットのマージ
SELECT * FROM   
UNION ALL
SELECT * FROM  ;

集計結果セットは、総じて、クエリーが必要な2つのテーブルを接続し、観察を容易にします.
ないぶせつぞく
SELECT * FROM;

上記の操作は、私たちのLIMITクエリー(グループクエリー)と同じように、よく理解すれば、MySQLに属する「方言」です.つまり、私たちが使用しているデータベースがMySQLではない場合(Oracleなど)、この文は役に立たないということです.
SELECT * FROM    INNER JOIN    ON   ;

このコマンドは、私たちの中で最も正規の文法を接続しています.ONキーワードの後ろの条件は、主に私たちが必要としないデカルト積を除去するためです.
デカルト積については、私たちのメタグループが生成したときに発生した不要なゴミデータです.ここでは必要ありません.だから、条件でフィルタリングする必要があります.
がいぶせつぞく
外接続はまた左外接続と右外接続(以下、左外と右外と呼ぶ)に分けられ、左接続の実際の意味は左表のすべてのデータを検出することであり、右表に対応するデータがなければnullで補う.右接続逆!
左外
SELECT * FROM    LEFT OUTER JOIN    ON   ;

右の外
SELECT * FROM    RIGHT OUTER JOIN    ON   ;

全外
SELECT * FROM    FULL OUTER JOIN    ON   ;

以上の方式については、MySQLではサポートされていませんが、MySQLではどのようにして全外の接続方式を完了しますか?
実は簡単で、左外、右外、合併結果セットを一緒に使うだけで、解決できます~
SELECT * FROM    LEFT OUTER JOIN    ON   
UNION ALL
SELECT * FROM    RIGHT OUTER JOIN    ON   ;

サブクエリ
サブクエリは、最も簡単な言葉で言えば、クエリの中にクエリがセットされています.クエリが必要なデータが、私たちが初めてクエリした結果セットに基づいている場合、サブクエリを使用する必要があります.固定された基本構文はありません.
一般的に、サブクエリは2つの形式で表示されます.
  • FROMの後に置かれた新しい表
  • はWHEREの後、条件
  • として置く
    テーブルとして
    SELECT * FROMSELECT * FROM    WHEREWHERE   ;
    

    上のような形で、内層SELECT文を1回目のクエリの結果として、その上で、再度クエリを行います.これも私たちのサブクエリの中で比較的簡単なものです.
    条件として
    サブクエリが条件として現れる場合は、単行単列、単行多列、多行単列の3つのケースに分けられます(また、複数行多列の場合もありますが、実際には新しいテーブルで、上のボケはすでに与えられています).次に、この3つのケースがそれぞれ対応する効果を見てみましょう.
    1行1列
    SELECT * FROM    WHERE    [=><>=<=<>] (SELECT * FROM    WHERE   );
    

    1行複数列
    SELECT * FROM    WHERE [INALLANY] (SELECT * FROM    WHERE   );
    

    複数行の単列
     SELECT * FROM    WHERE (  ,  ) IN (SELECT * FROM    WHERE   );
    

    以上、DQLのマルチテーブルについて説明しました.ここまで、SQLの4つの操作DDL、DML、DCL、DQLについては、すべて終わります.
    何か間違ったことがあったら、コメントして指導してください.ありがとうございます.