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の詳細なインストール履歴

推薦する

JS、CSS スタイルのリファレンスの記述

CS: ... 1. <link type="text/css" href...

マウスを動かしたときにセカンダリメニューバーを実装するために HTML+CSS を使用する例

この記事では、マウスを動かしたときにセカンダリ メニュー バーを実装するために HTML+CSS を...

uniapp vue および nvue カルーセル コンポーネントのサンプル コード

vueの部分は以下のとおりです。 <テンプレート> <ビュークラス="&...

Vue のプロダクション環境と開発環境を切り替えてフィルターを使用する方法

目次1. 本番環境と開発環境を切り替える最初の方法: .envファイルを設定する2番目の方法2. フ...

Web Storage APIの使用に関する簡単な説明

目次1. ブラウザのローカルストレージ技術1.1、セッションストレージ1.2、ローカルストレージ2....

MySQL の行レベルロックの詳細な例

序文ロックは、複数のスレッドを実行するときにリソースへのアクセスを強制的に制限するために使用される同...

Tencent Cloud Serverの構築方法を説明します(グラフィックチュートリアル)

この記事は元々ブロガーのWeiwei Miaoによって書かれたものです。ブログホームページ: htt...

キャンバスはスクラッチカード効果を描画します

この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。...

MySQL のデータ削除とデータ テーブル メソッドの例

MySQL でデータやテーブルを削除するのは非常に簡単ですが、削除するとすべてのデータが消えてしまう...

Ubuntu サーバーで MySQL を設定し、リモート接続を実装する方法

サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...

HTML でフォームを中央揃えにする

以前、写真が与えられ、その写真スタイルに基づいてフォームを作成するという課題に遭遇しました。しかし、...

JavaScript 関数構文の説明

目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...

JSはカリキュラムタイムテーブルアプレット(スーパーカリキュラムタイムテーブルを模倣)を実装し、カスタムバックグラウンド機能を追加します

概要:市販されているいくつかのタイムテーブルソフトウェアから教訓を得ました。機能が複雑すぎるため、タ...

MySQL ストアド プロシージャにおけるループ ステートメント (WHILE、REPEAT、LOOP) の使用法の分析

この記事では、例を使用して、MySQL ストアド プロシージャでのループ ステートメント (WHIL...

MySQLとPythonの相互作用の例

目次1. データを準備するデータテーブルを作成するデータの挿入2. SQLドリル1. SQL文の強化...