ホームページ データベース mysql チュートリアル MySQL での複雑なクエリ手法の共有

MySQL での複雑なクエリ手法の共有

Jun 14, 2023 pm 01:08 PM
- mysql - 複雑なクエリ - ヒントの共有

MySQL は、広く使用されているリレーショナル データベース管理システムです。複雑なクエリは、MySQL を使用する際の非常に一般的な要件の 1 つであり、複雑なクエリ タスクをエレガントに完了する方法は、MySQL ユーザーにとって必須のスキルです。この記事では、読者が MySQL クエリをよりよく習得できるように、MySQL の複雑なクエリ テクニックをいくつか紹介します。

1. WHERE 句を使用してデータをフィルタリングする

WHERE 句は、返される結果セットを制限するために使用される MySQL の非常に一般的な句です。 WHERE 句を使用すると、不要なデータを簡単に除外し、修飾されたデータを返すことができます。 WHERE 句の構文形式は次のとおりです。

SELECT column_name(s) FROM table_name WHERE condition;
ログイン後にコピー

このうち、条件はフィルタリングに使用される条件であり、比較条件、範囲条件、NULL 条件、論理演算子、およびワイルドカードなど

たとえば、年齢フィールドが 18 歳以上である Student テーブル内のすべてのレコードをクエリする場合は、次のように記述できます。

SELECT * FROM student WHERE age>=18;
ログイン後にコピー

WHERE 句を使用するクエリの効率を大幅に向上させ、結果を制限することができますが、これはニーズの範囲内です。同時に、複数の条件を使用してデータをフィルタリングすることもできます (例:

SELECT * FROM student WHERE age>=18 AND gender='male';
ログイン後にコピー

2. JOIN を使用して複数のテーブルをクエリします

JOIN は、で最も広く使用されているクエリ メソッドの 1 つです) MySQL: JOIN を通じて複数のテーブルにクエリを実行し、これらのテーブルの対応するフィールドに基づいて結果セットを結合します。 JOIN 操作では、特定の条件に従って 2 つのデータ セットを結合し、2 つのテーブルを「リンクする」という目的を達成できます。

JOIN 操作には、INNER JOIN、LEFT JOIN、RIGHT JOIN の 3 つがあります。

  1. INNER JOIN

INNER JOIN は最も一般的に使用される JOIN 操作で、2 つのテーブルから同時に条件を満たすレコードを選択します (等結合とも呼ばれます)。 ON 句を使用して結合条件を指定できます。たとえば、学生の名前とクラスの名前をクエリしたい場合は、次のように記述できます。

SELECT student.name, class.class_name FROM student 
INNER JOIN class ON student.class_id=class.id;
ログイン後にコピー

このクエリの結果は、学生の名前とクラスの名前を返します。

  1. LEFT JOIN

LEFT JOIN 操作は、左側のテーブルのすべてのレコードと、右側のテーブルに一致するレコード (存在する場合) を返します。右側のテーブルに一致するレコードがない場合は、NULL が返されます。たとえば、クラス名と学生の名前をクエリしたい場合は、次のように記述できます:

SELECT class.class_name, student.name FROM class 
LEFT JOIN student ON student.class_id=class.id;
ログイン後にコピー

このクエリ結果は、すべてのクラスの名前と学生の名前を返します (学生がいる場合)、学生がいない場合、名前フィールドには NULL が表示されます。

  1. RIGHT JOIN

RIGHT JOIN 操作は LEFT JOIN 操作と似ていますが、右側のテーブルのすべてのレコードが返され、条件を満たすレコードが返される点が異なります。左側の表にあるものが返されます (存在する場合)。左側のテーブルに一致するレコードがない場合は、NULL が返されます。たとえば、学生の名前とそのクラスの名前をクエリしたい場合は、次のように書くことができます:

SELECT student.name, class.class_name FROM student 
RIGHT JOIN class ON student.class_id=class.id;
ログイン後にコピー

このクエリの結果は、すべての学生の名前とそのクラスの名前を返します (一致するものがない場合 条件がクラスの場合、クラス名フィールドには NULL が表示されます。

3. サブクエリの使用

サブクエリとは、1 つのクエリ内に別のクエリをネストすることを指します。 MySQL では、WHERE 句、FROM 句、および SELECT 句でサブクエリを使用できます。サブクエリを使用すると、テーブル内の特定のフィールドの最大値または最小値をクエリするなど、非常に複雑なクエリ要件を実現できます。

たとえば、学生の中で 3 番目に高いスコアを持つ学生の記録をクエリしたい場合は、次のように書くことができます:

SELECT * FROM student WHERE score=(
  SELECT DISTINCT(score) FROM student GROUP BY score ORDER BY score DESC LIMIT 2,1);
ログイン後にコピー

このクエリ結果は、次のような学生の記録を返します。生徒の中で3番目に高い得点。

4. 一時テーブルの使用

一時テーブルは MySQL の非常に便利な機能です。実行時に一時テーブルを作成し、クエリ結果をこの一時テーブルに保存して、より複雑なデータ操作を実行できます。 。一時テーブルは、CREATE TEMPORARY TABLE ステートメントを使用して作成するか、SELECT INTO ステートメントを使用して構築できます。

たとえば、長年にわたる学生の平均スコアと最高スコアをクエリしたい場合は、次のように記述できます:

CREATE TEMPORARY TABLE history_score (  
  `stu_id` INT NOT NULL,
  `avg_score` DECIMAL(5,2),
  `max_score` INT,
  PRIMARY KEY (`stu_id`)
);

INSERT INTO history_score(stu_id, avg_score, max_score)
SELECT s.id, AVG(score) AS avg_score, MAX(score) AS max_score FROM score AS sc 
INNER JOIN student AS s ON sc.stu_id = s.id
GROUP BY s.id;

SELECT st.name, sc.avg_score, sc.max_score FROM student AS st 
INNER JOIN history_score AS sc ON st.id = sc.stu_id;
ログイン後にコピー

このクエリは、一時テーブルhistory_scoreを作成します。各生徒の長年にわたる平均点と最高点が記録されます。平均点と最高点はこの一時テーブルに保存され、INNER JOIN を使用して生徒の名前とこの一時テーブルのデータが接続され、取得されます。最終的なクエリ結果。

概要

上記の手法を使用すると、MySQL で複雑なデータ クエリを実行し、クエリの効率を向上させ、クエリ結果をよりニーズに合ったものにすることができます。もちろん、複雑なクエリを実行する前に、これらの高度なクエリ技術をより適切に使用できるように、SQL 構文と MySQL のデータ構造と特性を完全に理解する必要があります。

以上がMySQL での複雑なクエリ手法の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

不正な日時値: 'datetime_value' - MySQL エラーの解決方法: 日時値が正しくありません 不正な日時値: 'datetime_value' - MySQL エラーの解決方法: 日時値が正しくありません Oct 05, 2023 pm 12:22 PM

MySQL エラーを解決する方法: 日付と時刻の値が正しくありません MySQL は、強力なデータ ストレージとクエリ機能を提供する一般的に使用されるリレーショナル データベース管理システムです。 MySQL を使用する過程で、いくつかのエラー メッセージが頻繁に表示されます。その 1 つは、「日付時刻値が正しくありません」(不正な日付時刻値) です。このエラーは通常、データベースに日時フィールドを挿入または更新するときに、間違った形式の値が指定されたことが原因で発生します。この問題を解決するには

MySQL で食料品ショッピング システムの注文詳細テーブルを作成する方法 MySQL で食料品ショッピング システムの注文詳細テーブルを作成する方法 Nov 01, 2023 am 08:17 AM

MySQL で食料品ショッピング システムの注文詳細テーブルを作成する方法 食料品ショッピング システムを開発する場合、注文詳細テーブルは非常に重要なデータ テーブルです。各注文の製品の詳細 (製品 ID、数量、価格、その他の情報を含む) が記録されます。この記事では、MySQL で食料品ショッピング システムの注文詳細テーブルを作成する方法を紹介し、具体的なコード例を添付します。データベースとデータ テーブルの作成 まず、MySQL で buy_vegetables という名前のデータベースを作成します。次のコマンドを使用できます: CREATEDATA

MySQL ビューの利点と制限事項 MySQL ビューの利点と制限事項 Mar 15, 2024 pm 09:09 PM

MySQL ビューの利点と制限 MySQL データベースでは、ビューはクエリ ステートメントによって定義される仮想テーブルであり、複雑なクエリ操作を簡素化し、コードの可読性と保守性を向上させることができます。この記事では、MySQL ビューの利点と制限を紹介し、具体的なコード例を示します。 1. 利点 複雑なクエリの簡素化: ビューは複雑なクエリ ロジックをカプセル化できるため、必要な場合にのみビューを呼び出す必要があり、複雑なクエリ ステートメントを繰り返し記述する必要はありません。パフォーマンスの向上: ビューを通じて、一般的に使用されるクエリの一部を実行できます。

MySQL データベースでは大文字と小文字が区別されますか? MySQL データベースでは大文字と小文字が区別されますか? Mar 16, 2024 am 08:21 AM

MySQL データベースでは大文字と小文字が区別されますか?特定のコード例が必要 MySQL データベースを使用する場合、大文字と小文字を区別する問題が発生することがあります。つまり、データのクエリ、挿入、または更新の際に、大文字と小文字の状況が異なると結果が異なる場合があります。 MySQL データベースは大文字と小文字の処理に一定の区別を持っています。具体的なコード例を使用して、MySQL データベースの大文字と小文字の区別を詳しく調べてみましょう。まず、デモの例として簡単なデータベース テーブルを作成しましょう: CREATE

MySQLとRubyを使った簡単なデータバックアップ機能の実装方法 MySQLとRubyを使った簡単なデータバックアップ機能の実装方法 Sep 21, 2023 am 10:05 AM

MySQL と Ruby を使用して簡単なデータ バックアップ機能を実装する方法 インターネットの急速な発展とテクノロジーの進歩に伴い、データのバックアップはすべての企業と個人にとって重要かつ必要なタスクになりました。 MySQL と Ruby は、データの処理と管理で広く使用されている 2 つの強力なツールです。この記事では、MySQL と Ruby を使用して簡単なデータ バックアップ機能を実装する方法と、具体的なコード例を紹介します。 1. 準備作業 データバックアップ機能の実装を開始する前に、以下の前提条件を満たす必要があります。

ステップバイステップで学習: PHP と MySQL を使用してショッピング カート機能を構築する方法 ステップバイステップで学習: PHP と MySQL を使用してショッピング カート機能を構築する方法 Mar 15, 2024 pm 03:21 PM

この記事では、PHP と MySQL を使用して簡単なショッピング カート機能を構築する方法を段階的に学習します。ショッピングカートは、購入したい商品を一時的に保管したり、商品の追加・削除・変更・確認を行うことができる、ECサイトには欠かせないアイテムです。この記事を学ぶことで、PHP を使用してロジックを処理し、MySQL を使用してデータを保存し、完全なショッピング カート機能を実装する方法を学びます。ステップ 1: データベースを作成する まず、製品情報を保存するデータベースを作成する必要があります。 OpenMySQ

MySQL データベース管理: Go 言語を使用したベスト プラクティス MySQL データベース管理: Go 言語を使用したベスト プラクティス Jun 17, 2023 pm 02:04 PM

MySQL は現在最も人気のあるリレーショナル データベースの 1 つであり、さまざまな Web アプリケーションやエンタープライズ ソフトウェアで広く使用されています。 MySQL データベースの管理はデータベースのパフォーマンスと安定性に影響を与えるため重要です。 Go 言語を使用して MySQL データベースを管理すると、多くの利点があります。したがって、この記事は、Go 言語を使用する場合の MySQL データベース管理のベスト プラクティスを探ることを目的としています。 ORM フレームワークの使用 ORM (オブジェクト リレーショナル マッピング) フレームワークは、データベース操作をプログラミング言語のオブジェクト モデルに関連付けるテクノロジです。 ○

Win11 ヒント共有: シンプルで実用的なファイル スキャン テクノロジ Win11 ヒント共有: シンプルで実用的なファイル スキャン テクノロジ Mar 09, 2024 am 08:06 AM

Win11 ヒントの共有: シンプルで実用的なファイル スキャン テクノロジー デジタル時代の到来により、写真、ドキュメント、音楽などを含む多数のファイルがコンピューターやモバイル デバイスに蓄積されました。ファイルの数が増えると、これらのファイルをより効果的に管理する方法が重要な問題になります。 Microsoft の最新オペレーティング システムである Win11 は、ファイルの管理と整理に役立つ多くの便利な機能を提供します。この記事では、ファイルをより効率的に管理するのに役立つ、いくつかのシンプルで実用的なファイル スキャン テクニックを紹介します。 1.Win1を使用する

See all articles