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 updatexml() 関数のエラーインジェクション分析

まず、updatexml()関数を理解する UPDATEXML (XML ドキュメント、XPath ...

高品質なコードを書く Web フロントエンド開発実践書の抜粋

(P4) Web 標準は一連の標準で構成されています。中心となる概念は、Web ページの構造、スタイ...

JavaScript ES 新機能ブロックスコープ

目次1. ブロックスコープとは何ですか? 2. ブロックスコープが必要なのはなぜですか? 3. 関数...

WeChat 8.0の爆発的な特殊効果を実現するために300行以上のCSSコードが必要

WeChat 8.0 アップデートの主な特徴は、アニメーション絵文字のサポートです。送信するメッセー...

JavaScript の 50 以上のユーティリティ関数の概要

JavaScript は多くの素晴らしい機能を備えています。この記事では、作業効率の向上とコードのデ...

CentOS 8 Zabbix 4.4 インストール ガイド

Zabbix サーバー環境プラットフォームZABBIX バージョン 4.4セントOS8 MySQL ...

Windows はリモート デスクトップが長時間自動的に切断されるのを防ぎます

Windows リモート デスクトップを使用してサーバーに接続したことがある人なら、リモート デスク...

Centos6.9 インストール Mysql5.7.18 ステップ記録

インストール手順 rpm -ivh mysql-コミュニティ-共通-5.7.18-1.el7.x86...

表 td 画像水平および垂直中央揃えコード

HTMLコード:コードをコピーコードは次のとおりです。 <td align="cen...

MySQLでconcat関数を使用する方法

以下のように表示されます。 //managefee_managefee テーブルの年と月を照会し、c...

MySQL テーブルにはどのくらいの量のデータを保存できますか?

プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...

CentOS 6 および 7 での MySQL 5.7 の詳細なインストール チュートリアル

開発には常にデータが必要です。サーバーとしての Linux では、テスト データを格納するためのデー...

MySQLのトランザクション特性とレベル原則の分析

1. トランザクションとは何ですか?データベース トランザクション (略称: トランザクション) は...

Linux での JDK と Tomcat のアップロードと設定に関する詳細なチュートリアル

準備1. 仮想マシンを起動する2. gitツールルートアカウントでログインルートアカウントを使用して...