MySQL 接続とコレクションの簡単な分析

MySQL 接続とコレクションの簡単な分析

結合クエリ

結合クエリとは、2 つ以上のテーブル間のマッチング クエリを指し、一般的には水平操作と呼ばれ、最終結果にはこれらのテーブルのすべての列が含まれることを意味します。MySQL には、クロス結合、内部結合、外部結合の 3 種類の結合操作があります。

クロス結合は CROSS JOIN と呼ばれます。2 つのテーブルで直積を実行し、2 つのテーブルのすべての列の構成を返します。たとえば、左のテーブルに n 個のレコードがあり、右のテーブルに m 個のレコードがある場合、最終結果は n*m 個のレコードになります。ただし、次のステートメントのように、それ自体と結合して最終結果を n*n 個のレコードにすることもできます。

order から * を a として選択し、orders を b としてクロス結合します。
+---------+--------+---------+--------+
| 注文ID | ユーザーID | 注文ID | ユーザーID |
+---------+--------+---------+--------+
| 10007 | 2 | 10001 | 1 |
| 10006 | 4 | 10001 | 1 |
.....
| 10002 | 1 | 10007 | 2 |
| 10001 | 1 | 10007 | 2 |
+---------+--------+---------+--------+

セット内の行数は 49 行です (0.01 秒)

orders テーブルには 7 つのレコードがあるため、最終的には 49 のレコードが生成されます。別の書き方は次のとおりです。

mysql> select * from orders as a ,orders as b;

結果は同じですが、書き方が異なります。上記の書き方は、1989年にアメリカ規格協会が作成したSQLの標準規格で、ANSI SQL 89規格と呼ばれていますが、最初の書き方が規定されたのは1992年です。

クロス結合の 1 つの用途は、次のステートメントのように重複データをすばやく生成することです。

注文を挿入します。a.orderId、a.userId を注文から注文として a 、注文として b として制限 10 として選択します。

以下は内部結合で、2つの部分に分かれています。まず、直積を生成し、次にフィルター条件ONに従ってフィルター処理します。2つのテーブルに同じレコードがある値を生成します。

ON の後の等号演算子 (=) に加えて、より大きい (>)、より小さい (<)、等しくない (<>) などの他の演算子を使用して接続条件を形成することもできます。

最後はOUTER JOINで、これはいくつかのフィルタリング条件に従ってテーブル間のデータを一致させることができます。INNER JOINとは異なり、OUTER JOINによって追加された予約テーブルには一致しないデータがあります。MySQLはLEFT OUTER JOINとRIGHT OUTER JOINをサポートしており、書き込み時にOUTERを省略することができます。

以下は、LEFT JOIN を示す図です。LEFT JOIN は、左側のテーブル (table1) のすべてのレコードと、右側のテーブル (table2) の一致するレコードを返します。

以下は、RIGHT JOIN を示す図です。RIGHT JOIN は、右側のテーブル (table2) のすべてのレコードと、左側のテーブル (table1) の一致するレコードを返します。

集合演算

MySQL には UNION 演算子があり、2 つ以上の SELECT 結果セットを結合し、SELECT ステートメント間の重複行を削除するために使用されます。これを使用する場合は、次の基本ルールに従う必要があります。

  • すべての SELECT ステートメントで列の数と順序が同じである必要があります。
  • 列のデータ型も同じである必要があります。

次の表があるとします

テーブルt1を作成します(
    id INT 主キー
);

テーブルt2を作成します(
    id INT 主キー
);

t1に値(1)、(2)、(3)を挿入します。
t2に値(2),(3),(4)を挿入します。

次のSQLを実行します

t1からidを選択
連合
t2からidを選択します。

最終結果はこれです。

+----+
|id|
+----+
| 1 |
| 2 |
| 3 |
| 4 |
+----+
セット内の 4 行 (0.00 秒)

デフォルトでは、UNION ステートメントは結果セットから重複データを削除しますが、UNION ALL を使用して重複レコードを取得できます。

t1からidを選択
ユニオンオール 
t2からidを選択します。

結果は以下のとおりです

+----+
|id|
+----+
| 1 |
| 2 |
| 3 |
| 2 |
| 3 |
| 4 |
+----+
セット内の 6 行 (0.00 秒)

UNION と JOIN の基本的な違いは、UNION は結果セットを水平に結合するのに対し、JOIN ステートメントは結果セットを垂直に結合することです。

要約する

これで、MySQL 接続とコレクションに関するこの記事は終了です。MySQL 接続とコレクションに関するより関連性の高い記事については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL サブクエリ (ネストされたクエリ)、結合テーブル、複合クエリの詳細な説明
  • MySQL の高度なクエリとコレクションによるグループ化の紹介

<<:  JavaScriptは双方向リンクリストプロセス分析を実装します

>>:  HTML の rel 属性の分析

推薦する

Vue で親コンポーネントから子コンポーネントにデータを渡すいくつかの方法

最近、Vue のソースコードを勉強していて、Vue で親コンポーネントと子コンポーネント間でデータを...

Vite と Vue CLI の長所と短所

Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 1...

nginx ベースのブラウザネゴシエーションキャッシュプロセスの詳細な説明

この記事は主に、nginx に基づいてブラウザネゴシエーションキャッシュを設定する詳細なプロセスを紹...

初心者向けウェブサイト構築チュートリアル: 10 日間でウェブサイトの構築方法を学ぶ

10 日間のチュートリアルでは、最も理解しやすい言語を使用し、最も基本的なことから始めて、誰もが W...

Linux システムで TCP 接続を作成するプロセスの紹介

目次LinuxでTCPを作成する手順サーバクライアントTCP確立プロセスサンプルコードLinuxでT...

Tomcat が IDEA のコンソールで文字化けを起こし、IDEA エンコーディングを UTF-8 に設定する方法

1. まず、TomcatログのエンコーディングとIdeaログ表示コンソールのエンコーディングを区別す...

VMware ESXi6.7 の簡単なセットアップ(画像とテキスト付き)

1. VMware vSphere の概要VMware vSphere は、業界をリードする最も信...

MySQL 集計関数のネストされた使用操作

目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...

moment.jsの時間と日付の処理の詳細な説明

月曜日から日曜日の時間形式の変換(Y --- 年 M --- 月 D--- 日) : : : : :...

Mysqlトランザクション操作の失敗を解決する方法

Mysqlトランザクション操作の失敗を解決する方法トランザクションの原子性: トランザクションは、デ...

HTML と CSS の命名規則の概要

CSS命名規則 ヘッダー: ヘッダーコンテンツ: コンテンツ/含むフッターナビゲーション: navサ...

this.parentNode.parentNode (親ノードの親ノード) はどういう意味ですか?

親ノードの親ノード、例えば、このような段落がありますHTML:コードをコピーコードは次のとおりです。...

WeChatアプレットがシンプルな計算機機能を実装

WeChatアプレット:シンプルな計算機、参考までに、具体的な内容は次のとおりです。ミニプログラムに...

Linux システム構成 (サービス制御) の詳細な紹介

目次序文1. システムサービス制御1. システムctl 2. ターゲット3. 共通システムサービス4...

Docker ファイルの保存パス、コンテナの起動コマンド操作の取得

コンテナはすでに作成されていますが、その起動パラメータ(データがマウントされる場所)を知る方法 #コ...