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

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

いつも、気づかないうちに時間というのは驚くほど早く過ぎていきます。小暑が過ぎ、中暑に突入しました。太陽はますます明るく輝いています...外で太陽に守られている皆さん、皆さんは勤勉で素敵な人々です。家の中でさまざまな姿勢で私のこの章を読んでくださった皆さん、クリックしていただいたので、引き続き MySql の知識を一緒に復習しましょう!

練習データ ガールズ ライブラリと 2 つのテーブルのスクリプトを確認します。

リンク: https://pan.baidu.com/s/1bgFrP7dBBwk3Ao755pU4Qg 抽出コード: ihg7

はじめに:デカルト現象、まず2つの表を見てみましょう。

男の子から*を選択します。 

beautyから*を選択します。 

boys,beauty から NAME,boyname を選択します。
最終結果: 12*4=48行

#上級 6: 結合クエリ 意味: マルチテーブルクエリとも呼ばれ、クエリフィールドが複数のテーブルから取得される場合、結合クエリが使用されます。直積現象: テーブル 1 には m 行、テーブル 2 には n 行、結果 = m*n 行 原因: 有効な結合条件がありません。 解決方法: 有効な結合条件を追加します。 結合カテゴリ:
   時代別:
   SQL1992 標準 (192 標準): 内部結合のみサポート SQL1999 標準 (199 標準) [推奨]: 内部結合 + 外部結合 (左外部結合と右外部結合) + クロス結合をサポート 機能による分類:
   内部結合:
     等価結合 非等価結合 自己結合 外部結合:
     左外部結合、右外部結合、完全外部結合、クロス結合:
      左外部結合、右外部結合、完全外部結合、クロス結合:
boys,beauty から NAME,boyname を選択
ここで、 beauty.boyfriend_id = boys.id; 

#I. SQL192 標準 #1. 等価結合 ① 複数テーブルの等価結合の結果は、複数のテーブルの積集合になります ② n テーブル結合の場合、少なくとも n-1 個の結合条件が必要です ③ 複数のテーブルの順序に関する要件はありません ④ 一般に、テーブルには別名が必要です ⑤ ソート、グループ化、フィルタリングなど、上記で紹介したすべての句で使用できます。
# 複数テーブルのクエリ、最初に一致させてからフィルタリング# ケース 1。従業員名と対応する部門名をクエリします。
SELECT first_name AS name,department_name AS department_name FROM employees,departments
ここで、 employees.department_id = departments.department_id; 

#ケース 2. 従業員名、職務番号、職務名を照会します。 2 つのテーブルで共有されるフィールドの場合は、テーブル名を制限として追加する必要があります。そうしないと、エラーが報告されます。
エラー例:
SELECT first_name AS name,employees.job_id AS job number,job_title AS job name FROM employees,jobs
ここで、 employees.job_id = jobs.job_id;
#2. テーブルに別名を付ける ① 文の簡潔性を向上させる ② 名前を変更した複数のフィールドを区別する 注意: テーブルに別名を付ける場合、クエリフィールドを元のテーブル名で制限することはできません SELECT first_name AS name, e.job_id AS job number, job_title AS job name FROM employees AS e, jobs AS j
ここで、e.job_id = j.job_id; 

テーブルに別名を付け、完全なテーブル名を使用して修飾すると、エラーが報告され、許可されません。実行順序としては、FROM が最初に実行されます。
FROM が完了すると、エイリアスが使用され、仮想ビューが生成され、元のテーブル名が認識されなくなります。

#3. 2 つのテーブル名の順序を入れ替えることはできますか? はい、できます。
SELECT first_name AS name、e.job_id AS job number、job_title AS job nameFROM jobs AS j、employees AS e
ここで、e.job_id = j.job_id;

#4. フィルターを追加できます#ケース 3. ボーナスのある従業員と部門の名前を照会します。
first_name AS name、department_name AS department_name、commission_pct AS bonus から employees AS e、departments AS d を選択します。
e.department_id=d.department_id の場合
AND fee_pct は NULL ではありません。#AND fee_pct は NULL ではありません。 

#ケース4.都市名の2番目の文字がoである都市名と部門名を照会します。
city AS city、department_name AS department_name FROM locations AS l、departments AS d を選択します。
ここで、l.location_id = d.location_id
AND city LIKE '_o%'; 

#5. グループを追加できます#ケース 1. 各都市の部門の数を照会します。
city AS city、COUNT(department_id) AS numberFROM locations AS l、departments AS d を SELECT します。
ここで、l.location_id = d.location_id
GROUP BY l.city; 

#ケース2. 部門名、リーダー番号、ボーナスを含む各部門の最低給与を照会します。
#クエリを実行するときに、必ず両方の列を追加しないでください。
SELECT 手数料 PCT AS ボーナス、部門名 AS 部門名、
d.manager_id AS リーダーシップ番号、MIN(salary) AS 最低給与 FROM employees AS e、departments AS d
e.department_id = d.department_id の場合
かつ、commission_pct が NULL ではない
GROUP BY 部門名、d.manager_id; 

#6. ソートを追加できます#ケース 1: 職種ごとに職名と従業員数を照会し、従業員数の降順でソートします。
SELECT j.job_title AS ジョブ名,COUNT(employee_id) AS 番号FROM 従業員 AS e,ジョブ AS j
e.job_id = j.job_id の場合
GROUP BY 職名
ORDER BY 番号 DESC; 

#7. 3 つのテーブルの結合 #ケース 1. 従業員名、部門名、都市をクエリする SELECT first_name AS name, d.manager_id AS department name, city AS city FROM employees AS e, departments AS d, locations AS l
e.department_id = d.department_id の場合
 かつ、d.location_id = l.location_id; 

#ケース 2. 従業員名、部門名、都市名 (都市名は s で始まる) を照会します。
SELECT first_name AS name、d.manager_id AS department name、city AS city FROM employees AS e、departments AS d、locations AS l
e.department_id = d.department_id の場合
かつ、d.location_id = l.location_id
 AND city LIKE 's%'; 

#ケース 3. 従業員名、部門名、都市名 (都市名は s で始まる) を照会し、名前の降順で並べ替えます。
SELECT first_name AS name、d.manager_id AS department name、city AS city FROM employees AS e、departments AS d、locations AS l
e.department_id = d.department_id の場合
かつ、d.location_id = l.location_id
AND city は 's%' が好きです
ORDER BY department_name DESC; 

新しい給与等級表を追加します。
テーブルjob_gradesを作成する
(グレードレベル VARCHAR(3)、
 最低塩分 int,
 最高sal int);
job_gradesに挿入
値 ('A'、1000、2999);
job_gradesに挿入
値 ('B'、3000、5999);
job_gradesに挿入
値('C', 6000, 9999);
job_gradesに挿入
値('D', 10000, 14999);
job_gradesに挿入
値('E', 15000, 24999);
job_gradesに挿入
値('F', 25000, 40000); 

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

#ケース 2. 従業員の給与と給与レベルを照会し、レベル A の従業員を表示します。
SELECT salary AS salary、grade_level AS grade FROM employees AS e、job_grades AS g
WHERE salary が g.lowest_sal と g.highest_sal の間
かつ、g.grade_level = 'A'; 

#3. 自己接続 [自分自身とつながる] 

#ケース1. 従業員名と上司名を照会します。
e.employee_id、e.last_name を従業員として選択します。
m.employee_id、m.last_name AS リーダー FROM 従業員 e、従業員 m
ここで、e.manager_id = m.employee_id; 

上記の例を読んだ後、マルチテーブルクエリについて理解できたと思います。それでは、実際に練習してみましょう。 o(^▽^)o

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

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

<<:  Docker+Jenkinsによる自動デプロイの実現方法

>>:  跳ねるボールを実現するネイティブjs

推薦する

MySQLクエリが遅い場合の理由と解決策

Python プログラムを書き、Mysql ライブラリを集中的に操作したためです。データ量が多くない...

モバイルデバイスでのフリーズ問題に対する CSS3 ソリューション (アニメーション パフォーマンスの最適化)

1. CSS、jQuery、Canvasを使用してアニメーションを作成する1. キャンバス利点: ...

MySQL解凍版のインストール手順の詳しい説明

1. 公式サイトにアクセスします: D:\mysql-5.7.21-winx64\bin をダウンロ...

Sublime TextがUbuntuで中国語を入力できない問題の最も簡単な解決策

崇高なSublime Text はコード エディター (Sublime Text2 は有料ソフトウェ...

Tomcat セキュリティ仕様 (Tomcat セキュリティ強化と仕様)

tomcat はオープンソースの Web サーバーです。Tomcat ベースの Web は実行効率...

Docker で FastDFS をデプロイする方法

Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...

JSはスネークゲームを実装する

目次1. 初期化構造2. 蛇の色のレンダリング3. ヘビの動き4. ヘビの死を判定する方法 ヘビの死...

ウェブ開発におけるクロスドメインの理由に対する複数のソリューション

目次クロスドメインの理由JSONP Nginxソリューションバックエンドソリューションクロスドメイン...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

MySQL で B+ ツリー インデックスを使用する利点は何ですか?

この問題を理解する前に、まず MySQL テーブルのストレージ構造を確認し、次にバイナリ ツリー、マ...

Win10 に Linux ubuntu-18.04 デュアル システムをインストールする (インストール ガイド)

コンピューターに Linux Ubuntu システムをインストールしました。初めてインストールしまし...

W3C チュートリアル (11): W3C DOM アクティビティ

ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

Linux のタイムドログ削除を実装する簡単な方法

導入Linux は、ファイル、ログ、電子メール、バックアップなどを自動的に生成できるシステムです。ハ...