MySQL マルチテーブルクエリの詳細な説明

MySQL マルチテーブルクエリの詳細な説明

よく食べて十分に休息を取るというのは簡単なことのように思えますが、実際に実行するのはそれほど簡単ではありません。

1999年のMySqlマルチテーブルクエリの構文を引き続き確認します

#2、SQL1999 構文:
 SELECT クエリ リスト FROM テーブル 1 エイリアス [接続タイプ]
 JOIN テーブル 2 エイリアス ON リンク条件 [WHERE フィルタ条件]
 グループ化
 【フィルター条件あり】
 【ORDER BY ソートリスト ASC|DESC】

カテゴリ(接続タイプ):
 内部結合(★):INNER
 左外部結合(★):LEFT【OUTER】
 右外側(★):右【外側】
 フル【アウター】
 クロスコネクション:CROSS

===============================================================================

1. 内部結合構文:
 SELECT クエリ リスト FROM テーブル 1 エイリアス INNER JOIN テーブル 2 エイリアス ON 結合条件 [WHERE フィルタ条件]
 グループ化
 【フィルターグループを持つ】
 【ORDER BY ソートリスト ASC|DESC】

分類:
 等価および非等価の自己接続の特性:
 ①並び替え、グループ化、フィルタリングを追加する ②INNERは省略可能 ③WHEREの後にフィルタリング条件、ONの後に連結条件を置くことで分離性が向上し、読みやすくなります。
 ④INNER JOIN接続の効果は、SQL1992構文の同等の接続と同じであり、どちらも交差部分を照会します。
#1. 同等の接続 #ケース 1. 従業員名と部門名を照会します。結合条件を入れ替えても結果には影響しません。
SELECT last_name AS employee_name,department_name AS department_name FROM employees_name
INNER JOIN 部門 d
オン e.department_id=d.department_id;
SELECT last_name AS employee_name,department_name AS department_name FROM employees_name
INNER JOIN部門e
オン e.department_id=d.department_id; 

#ケース 2. 「e」を含む従業員と職種名を照会する (スクリーニング)
SELECT last_name AS employee name, job_title AS job title FROM employees e
INNER JOINジョブ j
オン e.job_id=j.job_id
e.last_name が '%e%' のように記述される場所; 

#ケース 3. 部門数が 3 を超える都市名と部門番号を照会します。 (グループ化 + フィルタリング)
手順: まず各都市の部門の数を調べ、次に要件を満たす部門をフィルタリングします。
SELECT city AS city,COUNT(*) AS number FROM locations l
INNER JOIN 部門 d
オン l.location_id=d.location_id
都市別にグループ化
COUNT(*) > 3 である; 

#ケース4. 従業員数が3人以上の部門名と従業員数を照会し、降順で並べ替えます。
ステップバイステップ:
1. 各部門の従業員数を照会する
2. 上記の結果から、従業員が 3 人を超えるレコードを除外します。
3. 従業員数をソートする SELECT COUNT(*) AS 従業員数, d.department_name AS 部門名 FROM 従業員 e
INNER JOIN 部門 d
オン e.department_id=d.department_id
GROUP BY d.部門名
カウント(*) > 3
従業員番号で順序付け DESC; 

#ケース 5. 従業員名、部門名、役職名を照会し、部門名の降順で並べ替えます。 3つのテーブルを接続する際の条件に注意してください。
SELECT last_name AS 従業員名、department_name AS 部門名、
job_title AS ジョブ名 FROM 従業員 e
INNER JOIN 部門 d
オン e.department_id=d.department_id
INNER JOINジョブ j
オン e.job_id=j.job_id
ORDER BY d.department_name DESC; 

#2. 非等値接続。範囲(間接)
#ケース1. 従業員の給与レベルを照会します。
SELECT salary AS monthly salary, grade_level AS salary grade FROM employees e
内部結合 job_grades g
e.salary が g.lowest_sal と g.highest_sal の間である場合; 

#ケース 2. 20 を超える各給与レベルの数を照会し、降順で並べ替えます。
j.grade_level AS grade、COUNT(*) number FROM employees e を選択
内部結合 job_grades j
e.salary が j.lowest_sal と j.highest_sal の間
GROUP BY j.grade_level
カウント(*) > 20
ORDER BY 番号 DESC; 

#3.自己結合#ケース1.従業員の名前と上司の名前を照会します。
SELECT e.last_name AS 従業員名、m.last_name AS 上司名 FROM 従業員 e
INNER JOIN 従業員 m
e.manager_id=m.employee_id をONにします。 

#ケース 2. 文字 k を含む従業員の名前と上司の名前を照会します。
SELECT e.last_name AS 従業員名、m.last_name AS 上司名 FROM 従業員 e
INNER JOIN 従業員 m
オン e.manager_id=m.employee_id
e.last_name が '%k%' のように記述されます。 

#2. 外部結合アプリケーション シナリオ: あるテーブルに存在するが別のテーブルには存在しないレコードをクエリするために使用されます。
特徴:
1. 外部結合のクエリ結果は、メインテーブル内のすべてのレコードです。セカンダリテーブルに一致するものがある場合は、一致する値が表示されます。セカンダリテーブルに一致するものがない場合、null が表示されます。
外部結合クエリ結果 = 内部結合結果 + メイン テーブルにあるがスレーブ テーブルにはないレコード 2. 左外部結合、LEFT JOIN の左側がメイン テーブル 右外部結合、RIGHT JOIN の右側がメイン テーブル 3. 左外部と右外部の 2 つのテーブルの順序を入れ替えることで、同じ効果を実現できます。
4. 完全外部結合 = 内部結合の結果 + テーブル 1 にはあるがテーブル 2 にはないデータ + テーブル 2 にはあるがテーブル 1 にはないデータ (MySQL ではサポートされていません)
輸入:
beautyから*を選択します。
男の子から*を選択します。 

#はじめに: 男性神テーブルにボーイフレンドがいない女神の名前を照会する SELECT b.NAME,bo.*
美からb
LEFT OUTER JOIN 男の子 bo
b.boyfriend_id=bo.id をオンにします。 

#左外部結合 SELECT b.NAME,bo.*
美からb
LEFT OUTER JOIN 男の子 bo
オン b.boyfriend_id=bo.id
bo.id が NULL の場合;
#テーブルから主キー列を選択する
#右外部結合、同じ結果。
b.NAME、bo.* を選択
男の子から
右外部結合 美しさ b
オン b.boyfriend_id=bo.id
bo.id が NULL の場合; 

# beauty テーブルの行 10 の boyfriend_id を 4 から 6 に変更すると、次の結果が得られます。
b.*、bo.*を選択します。
男の子から
左外部結合の美しさb
オン b.boyfriend_id=bo.id
b.id が NULL の場合; 

#ケース1.どの部門に従業員がいませんか。
#左外部書き込みメソッド SELECT d.*,e.employee_id
部門から
LEFT OUTER JOIN 従業員 e
オン d.department_id=e.department_id
e.department_id が NULL の場合;
==============================
#右外書き方式 SELECT d.*,e.employee_id
従業員から
右外部結合部門d
オン d.department_id=e.department_id
e.employee_id が NULL の場合; 

#完全外部結合の結果は3つの部分で構成されます(たとえば、Mysqlはサポートしていません)構文構造のデモンストレーション最初に2つのテーブルの交差を見つけ、次に不足している部分を見つけ、最後に他の無関係なものを見つけます構文構造の例SELECT b.*,bo.*
美からb
FULL OUTER JOIN 男の子 bo
オン b.boyfriend_id=bo.id
#クロス結合、デカルト積は 1999 構文標準 SELECT b.*,bo.* を使用して実装されています
美からb
CROSS JOIN 男の子 bo; 

#SQL1992構文とSQL1999構文の比較機能: SQL1999はより多くの機能をサポート可読性: SQL1999は接続条件とフィルター条件を分離し、可読性を向上させます

要約:

SELECT <選択リスト>
Aから
内部結合B
A.キー=B.キーの場合; 

SELECT <選択リスト>
Aから
左結合B
A.キー=B.キーの場合; 

SELECT <選択リスト>
Aから
右結合B
A.キー=B.キーの場合; 

SELECT <選択リスト>
Aから
左結合B
A.キー=B.キー
B.KEY が NULL の場合; 

SELECT <選択リスト>
Aから
右結合B
A.キー=B.キー
A.KEY が NULL の場合; 

SELECT <選択リスト>
Aから
フルジョインB
A.キー=B.キーの場合; 

SELECT <選択リスト>
Aから
フルジョインB
A.キー=B.キー
A.KEYがNULLの場合
または B.KEY が NULL です。

簡単なマルチテーブルクエリは終了です。これを読めば、簡単なテーブル結合は簡単にできるようになると思います。わからない人は、えーっと…

ヤン先生の言葉を借りれば、20回か30回書けば感覚がつかめるようになるそうです。 o(^▽^)o.

大学入試が終わり、大学生活が始まりました。自分の世界へのカウントダウンが始まりました... どんな専攻を選ぶにせよ、自分の選択である限り、その専攻で必ず何かを残すと信じなければなりません...

これで、MySQL マルチテーブル クエリの詳細な説明は終了です。MySQL マルチテーブル クエリに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySql マルチテーブル クエリ トランザクションと DCL
  • 4種類のMySQL接続とマルチテーブルクエリの詳細な説明
  • MySQL マルチテーブルクエリの具体例
  • MySQL データベースの高度なクエリとマルチテーブルクエリ
  • MySQL マルチテーブルクエリの詳細な説明
  • デカルト積原理を使用してMySQLで複数のテーブルをクエリする方法を簡単に説明します。
  • MySQL 左結合マルチテーブルクエリの条件記述例
  • MySQL マルチテーブルクエリの実装の分析
  • MySQL マルチテーブルクエリ実装分析
  • MySQL マルチテーブルクエリの詳細な分類

<<:  Linux で PyCurl のエラーを解決する方法

>>:  Ubuntu 20.04 LTSの詳細なインストール履歴

推薦する

モバイルアダプティブスタイルで@mediaを使用する方法

一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...

MySQLデータベースに接続し、クエリ操作を実行するためのIDEAの完全なコード

1.まずMysqlリンク設定ページを書く パッケージ com.wretchant.fredis.me...

CSS で波の効果を作成するためのアイデア

以前、純粋な CSS を使用して波の効果を実現する方法をいくつか紹介しました。それらについては、次の...

VMWare を使用して Windows 上で Linux 環境を構築する手順 (画像とテキスト)

Mac を返却して以来、元のラップトップは使用されていません。このラップトップの構成は非常に良好で...

Node.js の非同期イテレータの詳細な説明

目次序文非同期イテレータとは何ですか?非同期イテレータストリームとしてページング機能を備えたAPIの...

Linux ユーザー状態とカーネル状態間の通信方法の詳細な説明

CPU 権限の制限により、Linux ユーザー状態とカーネル状態間の通信は、プロセス間通信を使用した...

ウェブレッスンプラン、初心者向けレッスンプラン

指導トピックウェブページ適用グレード高校2年生授業時間1 クラス教科書分析焦点: 静的および動的ウェ...

JDKネイティブスレッドプールのバグを修正するTomcatの実装原理

処理能力と同時実行性を向上させるために、Web コンテナは通常、リクエストを処理するタスクをスレッド...

JavaScriptはクリックするとランダムなグラフィックを生成します

この記事では、クリックするとランダムグラフィックの生成を実現するJavaScriptの具体的なコード...

MySQL 数千万のビッグデータに対するSQLクエリ最適化の知識ポイントのまとめ

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...

MySQLで一意のサーバーIDを生成する方法

序文MySQL では、server-id を使用してデータベース インスタンスを一意に識別し、それを...

Mac ノードの削除と再インストールのケーススタディ

Macノードの削除と再インストール消去 ノード -v sudo npm アンインストール npm -...

MySQL8のパスワードを忘れた場合の簡単な解決策

序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...

JavaScript のガベージコレクションの仕組みの詳細な説明

目次ガベージコレクション (GC) はなぜ必要なのでしょうか?ガベージコレクションとは廃棄物の発生ガ...