MySQL マルチテーブル結合入門チュートリアル

MySQL マルチテーブル結合入門チュートリアル

接続は、実際の外部キー(人工的に作成された 2 つのテーブル間の対応関係を指します。対照的に、FORGIEN KEY は物理外部キーとも呼ばれます)のクエリ、更新、および確立に使用できます。

テーブル接続の本質は外部キーの逆制約である

接続条件

接続条件を設定するには ON を使用するか、代わりに WHERE を使用することもできます。

一般的に

  • ON: 接続条件を設定する
  • WHERE: 結果セットのレコードをフィルタリングする

無条件 JOIN 内部結合の本質は、デカルト積です。

[INNER] JOIN 内部結合

MySQL では、JOIN、CROSS JOIN、INNER JOIN は同等です。

内部結合は交差を意味し、結合条件を満たすテーブル A と B のレコードのみが表示されます。接続条件を満たさないレコードは表示されません。

商品ID、商品名、カテゴリ名を選択します 
tdb_goodsより 
内部結合 tdb_goods_cate 
tdb_goods.cate_id を ON にします。

内部結合を使用して複数のテーブルを更新します。

--スペースを節約するために、tdb_goods テーブルに中国語で保存されている goods_cate を tdb_goods_cates テーブル内の対応する cate_id に変更します。UPDATE tdb_goods 
内部結合 tdb_goods_cates
ON goods_cate=カテゴリ名 
goods_cate=cate_id を設定します。
--tdb_goods 変更するテーブルの名前 --tdb_goods_cates 関連する付録 --goods_cate=cate_name 2つのテーブルの対応する列の関係 --goods_cate=cate_id; 値を設定する

外部結合

内部結合は外部結合よりも頻繁に使用されます。

フィールドが一方のテーブルにのみ存在する場合、もう一方のテーブルのフィールドはNULLを返します。

LEFT [OUTER] JOIN 左外部結合

左側のテーブルにすべてのレコードを表示し、右側のテーブルに接続条件を満たすレコードを表示します。

  • LEFT JOIN が使用され、左側のテーブルにレコード A があるが、右側のテーブルに対応するレコードが見つからない場合、返される結果にはレコード A の対応するフィールドの内容のみが含まれ、他のすべてのフィールドは NULL になります (RIGHT JOIN と同様)。

RIGHT [OUTER] JOIN 右外部結合

右側のテーブルにすべてのレコードを表示し、左側のテーブルには接続条件を満たすレコードを表示します。

複数テーブルの結合

2つのテーブルを結合するのと同様

たとえば、3 つのテーブルの接続は次のようになります。

商品ID、商品名、b.カテゴリ名、c.ブランド名、商品価格を選択します。
製品から 
INNER JOIN products_cate AS b 
a.goods_cate = b.cate_id の場合
INNER JOIN products_brand AS c 
a.brand_name = c.brand_id; の場合

自己結合

無制限の分類データテーブルを設計する

同じテーブルに親クラスと子クラスの両方があり、基本的にはツリーです。

同じデータ テーブルに接続してクエリを実行できます。

--親クラスIDに対応する名前を検索します SELECT s.type_id,s.type_name,p.type_name AS parent_name
tdb_goods_types から s へ 
tdb_goods_types を p として左結合する 
s.parent_id=p.type_id を ON にします。

--サブクラスIDに対応する名前を検索します SELECT p.type_id,p.type_name,s.type_name AS child_name
tdb_goods_types から p へ
tdb_goods_types を s として左結合
p.type_id=s.parent_id をオンにします。

-- 子の数を調べる SELECT p.type_id,p.type_name,COUNT(s.type_name) AS child_count
tdb_goods_types から p へ
tdb_goods_types を s として左結合
オン p.type_id=s.parent_id 
GROUP BY p.type_name
p.type_id で並べ替えます。

複数のテーブルのクエリと削除

ここでは、自己結合を使用して 2 つのテーブルをシミュレートし、テーブル内の重複する項目を削除し、goods_id が小さいレコードを保持します。

t1を削除 
tdb_goods から t1 
LEFT JOIN(--goods_nameの重複レコードを選択SELECT goods_id,goods_name 
 tdb_goodsより 
 GROUP BY goods_name --MySQL 5.7.5 以降のバージョンでは、only_full_group_by SQL モードが有効になります。選択された列は、グループ内にあるか、集計列 (SUM、AVG、MAX、MIN) である必要があります。HAVING COUNT(goods_name)>=2 はここでは有効になっていません。 
AS t2 --t1 と t2 を左結合します。実際には、内部結合と右結合も可能です。ON t1.goods_name=t2.goods_name --t1 と t2 の結合条件 WHERE t1.goods_id>t2.goods_id; --LEFT JOIN 結果セットで t1.goods_id>t2.goods_id を満たすレコードを選択します

理解を助けるために、LEFT JOIN の結果は次のようになります。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySql データベースにおける単一テーブル クエリと複数テーブル結合クエリの効率の比較
  • MySQL マルチテーブル結合クエリの詳細な説明
  • Mysql マルチテーブル結合クエリの実行の詳細について簡単に説明します。
  • MySQL マルチテーブル結合クエリ例の説明
  • mysql 3つのテーブルを接続してビューを作成する
  • MySQL でのテーブル結合クエリの最適化に関する簡単なチュートリアル
  • MySQL での基本的な複数テーブル結合クエリのチュートリアル
  • MySQL と PHP の基礎と応用トピック: テーブル接続

<<:  Docker Swarm を使用してサービスのローリング アップデートを実装するためのサンプル コード

>>:  3 階層ナビゲーション メニューを実現するための js+css

推薦する

mysqlはコンマに基づいてデータ行を複数の行に分割します

目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...

ドラッグ効果を実現するための純粋なCSSコード

目次1. ドラッグ効果の例2. CSS実装の原則3. CSS実装の詳細4. CSSレイアウト1. 固...

MySQL 上級学習インデックスの長所と短所、使用ルール

1. インデックスの利点と欠点利点: 高速検索、高速グループ化および並べ替えデメリット: ストレージ...

MySQLのデッドロックとログに関する詳細な説明

最近、MySQL オンラインでいくつかのデータ異常が発生しましたが、すべて早朝に発生しました。ビジネ...

MySQL の一般的な日付比較および計算関数

MySql での時間比較の実装unix_timestamp() unix_timestamp 関数は...

MySQLインデックスが失敗するいくつかの状況の分析

1. 最左プレフィックス原則 - 複数の列にインデックスが付けられている場合は、最左プレフィックス原...

開発効率を向上させる 20 の JavaScript ヒント

目次1. 配列を宣言して初期化する2. 合計、最小値、最大値を計算する3. 文字列、数値、オブジェク...

CSS3 で @media を使用して Web ページの適応を実現するためのサンプル コード

現在、コンピュータモニターの画面解像度はますます高くなる傾向にありますが、携帯電話などのモバイルデバ...

Kubernetes を使用して Springboot または Nginx をデプロイするための詳細なチュートリアル

1 はじめに「Maven がワンクリックで Springboot を Docker リポジトリにデプ...

CSS ペイント API: CSS のような描画ボード

1. Canvas画像をCSS背景画像として使用するCSS ペイント API は、Canvas キャ...

MySQL 5.7.17 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.17のインストールと設定方法を参考までに紹介します。具体的な内容は...

WeChat アプレット wxs 日付と時刻処理の実装例

目次1. 日付までのタイムスタンプ2. UTCを北京時間に変換するWXS (WeiXin Scrip...

dl、dt、dd リスト ラベルの例

dd タグと dt タグはリストに使用されます。通常は <ul><li> タ...

CSSスクロールバーのスタイルをカスタマイズする方法の詳細な説明

この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...

LeetCode の SQL 実装 (182. 重複するメールボックス)

[LeetCode] 182.重複メールPerson という名前のテーブル内のすべての重複メールを...