データベースを使用するアプリケーションを開発する場合、必然的にユニオンクエリを使用する必要があります。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 にアップグレードする実用的な方法
Vue データの双方向バインディング原則ですが、この方法には欠点があり、配列とオブジェクトの部分的な...
Docker-ComposeとはCompose プロジェクトは、以前の fig プロジェクトから派生...
アカウントにログイン DOCKER_REGISTRY=registry.cn-hangzhou.al...
最近Tencent Cloudサーバーを購入し、環境を構築しました。このメモは、これまで MySQL...
この記事では、CSS を使用して検索機能付きのナビゲーション バーを作成する方法を説明します。以下の...
Linux サーバーに GRUB をインストールする方法クラウド移行ツールを使用して、CentOS ...
1. プラグインを追加し、pomファイルの下に次の設定を追加します。 <!-- mybatis...
レンダリング サンプルコード今日は、WeChat アプレットを使用して 2048 ゲームを実装します...
この記事では主に、クーポンの背景画像などでよく使われる CSS 円形ホローイングについて紹介し、皆さ...
1. まずシステムにmysqlがインストールされているかどうかを確認します rpm -qa | gr...
1. dfコマンドを使用してディスク全体の使用量を表示します。 df コマンドは、ハードディスクのマ...
目次jupyterをインストールするDocker ポートマッピングjupyterをインストールするp...
目次1. 解析する1.1 傍受のルール1.2 傍受プロセス部分1.3 パーサーの概要2. 最適化する...
WML (ワイヤレス マークアップ言語)。これは HTML から派生したマークアップ言語ですが、W...
目次差分アルゴリズムレイヤーごとの比較同じタイプのコンポーネントを比較する同じタイプの要素の比較子ノ...