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

推薦する

MySQL データベースの集計クエリと結合クエリ操作

目次1. クエリ結果を挿入する2. 集計クエリ2.1 はじめに2.2 集計関数2.3 group b...

HTML に埋め込まれた Flash HTML ウェブページ コードに Flash ファイルを埋め込むソリューション (パート 2)

上の記事で、SWFObject V1.5 の使い方の紹介は一旦終了です。これから、SWFObject...

Nginx サーバーが Systemd カスタム サービス プロセス分析を追加

1. nginxを例に挙げるyumコマンドを使用してNginxをインストールしましたSystemd ...

Mysql ALTER TABLE はフィールドを追加するときにテーブルをロックしますか?

目次MySQL 5.6以前MySQL 5.6以降要約する知らせMySQL 5.6以前更新手順元のテー...

LINUX でポートが占有されているかどうかを確認する方法

ポートが占有されているかどうかは、これまで一度もわかりませんでした。多くの人に尋ねて、ようやくわかり...

Docker可視化ツールPortainerの導入と中国語翻訳

#docker 検索#docker プルポーター1. イメージを取得した後、中国語パッケージをダウン...

非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する

アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...

Dockerイメージ構築原理の分析(Dockerをインストールしなくてもイメージを構築できる)

イメージの構築は、DevOps プロセスにおいて非常に重要なプロセスです。一般的に、イメージの構築と...

CSS で 2 列レイアウトを実現する N 通りの方法

1. 2 列レイアウトとは何ですか? 2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと...

Linux ユーザー グループと権限の概要

ユーザーグループLinux では、すべてのユーザーはグループに属する必要があり、Linux には次の...

Win10 VM 仮想マシンに Mac OS10.14 を完璧にインストールする (グラフィック チュートリアル)

最近、Apple の記者会見を見てとても興奮したので、Mac システムを体験して Apple の素晴...

HTML 左、中央、右の適応レイアウト (calc css 式を使用)

最新の HTML 標準には、レイアウトを計算するために使用できる calc CSS 式があります。し...

Navicat PremiumでSQLファイルをインポートする方法

今日、最終プロジェクトに取り組み始めましたが、今年はMySQLデータベースを使用したため、Navic...

Nginx を使用してクロスドメイン Vue 開発環境を処理する方法

1. 需要正しい Cookie 配信と SSO テストを確実に実行できるように、ローカル テスト ド...

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

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