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 データ型における DECIMAL の使用法の詳細な説明

MySQL データ型における DECIMAL の使用法の詳細な説明MySQL のデータ型には、INT...

JavaScript で簡単なモグラ叩きゲームを実装する

この記事では、モグラ叩きゲームを実装するためのJavaScriptの具体的なコードを参考までに紹介し...

Vscode が Ubuntu にリモート接続する際のエラー問題の解決方法

1. 事件の背景:仕事上、Ubuntu への vscode リモート接続を使用する必要があります。 ...

Docker を使用した Hadoop クラスターのデプロイに関する詳細なチュートリアル

最近、社内に Hadoop テスト クラスターを構築したいので、docker を使用して Hadoo...

Linuxはsttyを使用して端末の回線設定を表示および変更します。

Sttty は、Linux で端末設定を変更および印刷するための一般的なコマンドです。 1. パラ...

Mysql 更新マルチテーブル共同更新方法の概要

次に、2 つのテーブルを作成し、一連の SQL 文を実行します。SQL 文の実行後にテーブル内のデー...

js でシンプルなタブを実装する

タブ選択カードは、実際の Web ページで非常に頻繁に使用されます。基本的に、すべての Web ペー...

MySQL テーブルスペースの断片化の概念と関連する問題の解決策

目次背景表領域の断片化とは何ですか?表領域の断片化を確認する方法表スペースの断片化問題を解決する方法...

MySQL の結合テーブルにインデックスを作成する方法

この記事では、MySQL で 2 つのテーブルを関連付ける結合テーブルにインデックスを作成する方法を...

VMware での Ubuntu と Windows 間のファイル共有

この記事では、VMware 環境下で Ubuntu と Windows 間でファイルを共有する方法を...

Docker 構成コンテナの場所とヒントのまとめ

Docker の使用に関するヒント1. 停止したDockerコンテナをすべてクリーンアップする停止し...

Alpine イメージに Ansible サービスを追加する方法

apk add ansible を使用して、alpine イメージに ansible サービスを追加...

MySQLデータベースを誤って削除した後にデータを回復するための手順

日々の運用・保守作業において、MySQL データベースのバックアップは重要です。ウェブサイトにとって...

HTML ボディタグと HTML でよく使われる制御タグの詳細な説明

1. <body> タグ: Web ページの本体をマークするために使用されます。body...

CSS フレキシブルレイアウト FLEX、メディアクエリ、モバイルクリックイベントの実装

フレックスレイアウト定義: Flexレイアウトの要素は、 Flex 、または略して「コンテナー」と呼...