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

推薦する

Linux deb パッケージの解凍、変更、その他の操作方法のコード例

さまざまな理由により、debパッケージ内のさまざまなファイルの内容を直接変更する必要がある場合があり...

テキストの折り畳み特殊効果を実現する HTML+CSS の例

この記事では、主に HTML + CSS を使用してテキストの折りたたみ特殊効果を実現する例を紹介し...

Linux で MySQL のルート パスワードを変更する方法

序文このサービスは数か月前からMySQLに導入されています。私の仕事は基本的にターミナルで行われるた...

JavaScript の実行コンテキストとコールスタックの詳細な説明

目次1. 実行コンテキストとは何か2. 実行コンテキスト スタックとは何ですか? 3. 実行コンテキ...

mysqlタイムスタンプの使用

序文:タイムスタンプ フィールドは、MySQL でよく使用されます。たとえば、データ行が作成または変...

mysqlは時間を自動的に追加し、時間を自動的に追加および更新する操作を実装します

時間フィールドは、データベースの使用時によく使用されます。よく使われるのは作成時間と更新時間です。し...

Vue マルチ選択リスト コンポーネントの詳細な説明

マルチ選択は、すべてのオプションを一覧表示し、ユーザーが Ctrl/Shift キーを使用して複数選...

表には表示したい境界コードが表示されます

テーブルの共通プロパティ基本的な属性は、width (幅)、height (高さ)、border (...

Vue 初心者ガイド: 最初の Vue-cli スキャフォールディング プログラムの作成

1. Vue - 最初の vue-cli プログラムVueの開発はNodeJSに基づいています。実際...

HTML テーブルタグチュートリアル (3): 幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...

JavaScript のドキュメント オブジェクト モデル (DOM)

目次1. DOMとは何か2. 要素を選択する3. getElementById() 4. クエリセレ...

MYSQL ストアドプロシージャと関数の簡単な記述

ストアドプロシージャとは簡単に言えば、これは強力で、JAVA 言語のメソッドに似た比較的複雑な論理関...

Vue は小数点付きの星評価を実装します

この記事では、小数点付きの星評価を実装するためのVueの具体的なコードを参考までに共有します。具体的...

CSS モジュールソリューション

CSS のモジュール ソリューションは、JS のモジュール ソリューションと同じくらい多く存在すると...

JS初心者が配列を処理するための実践的な方法のまとめ

join() メソッド: 指定された区切り文字を使用して配列内のすべての要素を文字列に接続します。例...