いつも、気づかないうちに時間というのは驚くほど早く過ぎていきます。小暑が過ぎ、中暑に突入しました。太陽はますます明るく輝いています...外で太陽に守られている皆さん、皆さんは勤勉で素敵な人々です。家の中でさまざまな姿勢で私のこの章を読んでくださった皆さん、クリックしていただいたので、引き続き 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 が最初に実行されます。 #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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Docker+Jenkinsによる自動デプロイの実現方法
Python プログラムを書き、Mysql ライブラリを集中的に操作したためです。データ量が多くない...
1. CSS、jQuery、Canvasを使用してアニメーションを作成する1. キャンバス利点: ...
1. 公式サイトにアクセスします: D:\mysql-5.7.21-winx64\bin をダウンロ...
崇高なSublime Text はコード エディター (Sublime Text2 は有料ソフトウェ...
tomcat はオープンソースの Web サーバーです。Tomcat ベースの Web は実行効率...
Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...
目次1. 初期化構造2. 蛇の色のレンダリング3. ヘビの動き4. ヘビの死を判定する方法 ヘビの死...
目次クロスドメインの理由JSONP Nginxソリューションバックエンドソリューションクロスドメイン...
目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...
この問題を理解する前に、まず MySQL テーブルのストレージ構造を確認し、次にバイナリ ツリー、マ...
コンピューターに Linux Ubuntu システムをインストールしました。初めてインストールしまし...
ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...
先ほど、Docker を使用して SpringBoot プロジェクトを簡単にデプロイし、Docker...
序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...
導入Linux は、ファイル、ログ、電子メール、バックアップなどを自動的に生成できるシステムです。ハ...