データベースを使用するアプリケーションを開発する場合、必然的にユニオンクエリを使用する必要があります。SQL でよく使用されるユニオンクエリには、内部結合、外部結合、クロス結合があります。私を含め、多くの人がこの 3 つの違いについてよく理解していない可能性があります。確認してみましょう。結合を使用してテーブルを接続する場合、欠陥のあるケースは内部結合です。また、開発で使用される左結合と右結合は外部結合に属し、外部結合には完全結合も含まれます。図を使用して、それらの違いをお知らせします。 テーブルは 2 つあり、左側のテーブルがテーブル A です。表Bは右側の表です。それぞれに 4 つのレコードがあり、そのうち 2 つは同じ名前です。 1. INNER JOINの結果はABの交差である TableA から * を選択し、TableB を TableA.name = TableB.name に結合します。 2. LEFT [OUTER] JOIN はテーブル A の完全なセットを生成し、一致するものがない場合、テーブル B の一致する値は null 値に置き換えられます。 TableA から * を選択し、TableB を LEFT OUTER JOIN し、TableA.name = TableB.name とします。 3.RIGHT [OUTER] JOIN はテーブル B の完全なセットを生成し、一致するものがない場合、テーブル A の一致する値は null 値に置き換えられます。 TableA から * を選択し、TableB を TableA.name = TableB.name に右外部結合します。 この図は左結合に似ています。 4. FULL [OUTER] JOIN は A と B の結合を生成します。一致しないレコードの場合、値として null が使用されます。 TableA から * を選択し、TableB を TableA.name = TableB.name に完全外部結合します。 is NULL を使用すると、一致する値がないことが分かります。 TableA から * を選択し、TableB を TableA.name = TableB.name に完全外部結合します。 TableA.id が null であるか、TableB.id が null である 5. CROSS JOIN は、テーブル A とテーブル B のデータの N*M 結合、つまりデカルト積を実行します。たとえば、この例では 4*4=16 レコードが生成されます。開発プロセスではデータをフィルタリングする必要があるため、この方法はほとんど使用されません。 表Aから*を選択し、表Bにクロス結合します。 上記の比較により、内部結合、外部結合、クロス結合の違いを誰もが明確に理解できたと思います。 補充する 参加することが最善の選択である理由は何ですか? 「,」を使用してテーブルを接続すると、テーブル A とテーブル B は直接デカルト積を生成し、where を使用して結果をフィルタリングします。ただし、結合時にテーブル A とテーブル B が接続されると、結果は on 以降の条件に従ってフィルタリングされ、次に where 条件に従ってフィルタリングされます。 SQL 標準によれば、CROSS JOIN はデカルト積です。しかし、MySQL の場合、CROSS JOIN は INNER JOIN と同等です。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: CentOS 7.4 で MySQL 5.7.28 バイナリモードをインストールする方法
>>: Linux で PHP を 5.6 にアップグレードする実用的な方法
序文MySQL スロー クエリ ログは、日常業務でよく遭遇する機能です。MySQL スロー クエリ ...
CSS にカスケード メカニズムがあるのはなぜですか? CSS では、同じ要素の特定のプロパティに同...
背景今日、CodePen を閲覧していたところ、非常に興味深い効果を見つけました。 CodePen ...
この記事では、MySQL 5.7.21のインストールに関する注意事項をまとめ、皆さんと共有します。 ...
MySQL 5.7.18 のインストールと問題の概要。今日、新しい MySQL サーバーを導入しまし...
序文ご存知のとおり、Linux ではハードディスクやグラフィック カードなどすべてがファイルです。 ...
この記事では主に、Vue を使用してタブ ナビゲーション バーを実装し、flex レイアウトを使用し...
目次ツリー項目にコードを追加します。 1. 右側に関連情報ページを保存します(userManage....
この記事では、カード ウォーターフォール レイアウトを実現するための CSS3 列のサンプル コード...
目次動作原理:ブラウザは何をするのですか?ホストファイル index.htmlメイン.jsその他のベ...
HTML4 についてHTML (XHTML ではありません)、MIME タイプは text/html...
質問: コンピュータを再起動した後、docker の mysql コンテナを再起動できません。原因が...
ポートとは何ですか?私たちが通常参照するポートは、物理的な意味でのポートではなく、具体的には TCP...
目次1. プロジェクトフォルダ構造1. アセットフォルダ2. 図書館3. ローカル設定(ローカル) ...
Dockerfile を使用したイメージのカスタマイズイメージのカスタマイズとは、実際には各レイヤー...