検索

導入

内部に入れ子になった本が入った本を含む膨大な図書館を検索することを想像してみてください。特定の情報を見つけるには、最初に小さな情報を参照してから、その情報を使用して大きな本を見つけます。これは、SQLのネストされたクエリの概念を示しています。これらのクエリは、別のものに埋め込まれており、複雑なデータの抽出を簡素化します。このガイドでは、ネストされたクエリ機能を調査し、効率的なデータベース管理のためのアプリケーションを実証します。

SQLのネストされたクエリ

主要な学習目標

  • SQLのネストされたクエリ(サブQueries)の概念を把握します。
  • さまざまなSQLステートメント内にネストされたクエリを構築および実装します。
  • 相関関係と非相関のネストされたクエリを区別します。
  • ネストされた構造を使用してSQLクエリを最適化してパフォーマンスを向上させます。

目次

  • SQLでネストされたクエリを理解する
  • SQLでネストされたクエリタイプを探索します
  • ネストされたクエリの実用的なアプリケーション
  • 一般的なネストされたクエリの落とし穴を避けます
  • よくある質問

SQLでネストされたクエリを理解する

サブクエリとも呼ばれるネストされたクエリは、別のものに埋め込まれたSQLクエリです。内部クエリの出力は、外部クエリに通知し、複雑なデータ取得を可能にします。これは、内側クエリの結果が外部クエリのデータに依存する場合に特に価値があります。

基本的な構文

column_name(s)を選択します  
Table_nameから  
ここで、column_name =(table_nameからcolumn_nameを選択しますcolumn_name where condition);

SQLでネストされたクエリタイプを探索します

ネストされたクエリ(サブクエリ)は、1つのSQLクエリを別のSQLクエリに埋め込むことにより、複雑なデータ取得を促進します。これは、効率的で洗練されたSQLコードを作成するために重要です。このセクションでは、さまざまなネストされたクエリタイプと、例と予想される出力を記載しています。

SQLのシングルローサブQueries

単一列のサブクエリは、1つの行に1つ以上の列を生成します。比較演算子(=、>、 =、

単列サブ征服の特性の定義

  • 単一行の出力:単一の行のデータを生成します。
  • 比較演算子:通常、比較演算子で使用されます。
  • 可能な複数の列:その単一行内の複数の列を返すことができます。

例:平均以上の給与を獲得している従業員の識別

表:従業員

従業員_id ファーストネーム 苗字 給料 department_id
1 ジョン うーん 90000 1
2 ジェーン スミス 95000 1
3 アリス ジョンソン 60000 2
4 ボブ 茶色 65000 2
5 チャーリー デイビス 40000 3
6 イブ アダムス 75000 3

表:部門

department_id department_name location_id
1 販売 1700
2 マーケティング 1700
3 それ 1800
4 HR 1900
 first_name、last_name、給与を選択します
従業員から
給与>(従業員から平均(給与)を選択);

出力:

 <code>| first_name | last_name | salary | |------------|-----------|--------| | John | Doe | 90000 | | Jane | Smith | 95000 |</code>

内部クエリは、平均給与を計算します。外側のクエリは、この平均を超える獲得を選択する従業員を選択します。

SQLのマルチローサブQueries

マルチローサブQueriesは複数の行を返します。通常、列を値と比較するために、 INANY 、またはALL演算子で使用されます。

例:特定の部門から従業員を取得します

first_name、last_nameを選択します
従業員から
where department_id in(location_id = 1700から部門から部門_idを選択);

出力:

 <code>| first_name | last_name | |------------|-----------| | John | Doe | | Jane | Smith |</code>

内側クエリは、特定の場所から部門IDを選択します。外部クエリは、それらの部門で作業する従業員を取得します。

SQLの相関サブ征服

相関したサブクエリは、その値の外側クエリに依存します。独立したサブQueriesとは異なり、外部クエリで処理された各行ごとに動的に実行されます。

相関サブ征服の特性

  • 外部クエリへの依存:内側クエリは、外側クエリの列を参照します。
  • 行ごとの実行:内側クエリは、外側クエリで行ごとに1回、繰り返し実行されます。
  • パフォーマンスへの影響:繰り返し実行すると、大規模なデータセットのパフォーマンスに影響を与える可能性があります。

例:部門の平均以上を稼いでいる従業員を特定します

first_name、給与を選択します
従業員E1から
給与>(従業員E2からAVG(給与)を選択しますe2 e2.department_id = e2.department_id);

出力:(出力はemployeesテーブルのデータに依存します)

内部クエリは、外部クエリによって処理されている従業員と比較して、各部門の平均給与を計算します。

SQLのネストされたサブ征服

ネストされたサブ征服には、1つのサブクエリを別のサブクエリに埋め込み、層状構造を作成します。これにより、複雑なデータ操作とフィルタリングが可能になります。

ネストされたサブ征服の構造

  • 外側クエリ:ネストされたサブ征服を含むメインクエリ。
  • 内部クエリ(IES):外側クエリ内に埋め込まれたサブQueries。

例:平均以上を稼ぐ従業員との部門を特定します

department_id、department_nameを選択します
部門から
where department_id in(
    department_idを選択します
    従業員から
    WHERE SALARY>(従業員からAVG(給与)を選択)
);

出力:(出力はemployeesdepartmentsテーブルのデータに依存します)

スカラーサブQueries

Scalar Subqueryは、単一の値(1行、1列)を返します。メインクエリで単一の値が必要な場合はどこでも便利です。

スカラーサブ征服の特性

  • 単一の値リターン: 1つの値のみを返します。
  • さまざまな節の使用: SELECTWHERE 、およびHAVINGで使用できます。
  • 効率的な比較:単一の派生値との比較に役立ちます。

例:平均と比較した従業員の給与

first_name、last_name、salary-(従業員からavg(給与)を選択)salary_differenceを選択します
従業員から;

出力:(出力はemployeesテーブルのデータに依存します)

ネストされたクエリの実用的なアプリケーション

ネストされたクエリは、さまざまな複雑なデータ検索シナリオにとって価値があります。

派生値に基づくデータフィルタリング

ネストされたクエリは、別のテーブルから計算された値に基づいてデータを効率的にフィルタリングします。

集約計算

ネストされたクエリで計算された集合体(例えば、AVG、Sum、Count)は、条件付きフィルタリングのために外部クエリで使用できます。

条件付きロジック実装

ネストされたクエリは、SQLステートメントに条件付きロジックを組み込むメカニズムを提供します。

相関サブ征服による行レベルの計算

相関サブ征服は、外部クエリの現在の行に基づいて行レベルの計算を有効にします。

一般的なネストされたクエリの落とし穴を避けます

強力で、ネストされたクエリは問題を導入できます。

スカラーサブ征服の複数の行が戻ります

スカラーサブクエリは単一の値を返す必要があります。複数の行がエラーを引き起こします。

パフォーマンスの劣化

ネストされたクエリ、特に相関したクエリは、特に大きなデータセットでパフォーマンスに大きな影響を与える可能性があります。参加などの代替アプローチを検討してください。

括弧の誤った配置

誤った括弧は、論理的なエラーや予期しない結果につながる可能性があります。

ヌル値処理

意図しないフィルタリングを避けるために、ヌル値がどのように処理されるかを慎重に検討してください。

結論

SQLネストされたクエリ(サブQueries)は、効率的な複雑なデータ検索のための強力なツールです。効果的なデータベース管理には、さまざまなタイプ(シングル列、マルチロー、相関、およびスカラー)を理解することが重要です。ベストプラクティスに従い、一般的な落とし穴を避けることで、ネストされたクエリを活用してSQLスキルを向上させ、データベースのパフォーマンスを最適化できます。

よくある質問

Q1。 SQLのネストされたクエリとは何ですか?

ネストされたクエリ、またはサブクエリは、別のクエリ内に埋め込まれたSQLクエリです。内部クエリの結果は、複雑なデータ検索を実行するために外部クエリによって使用されます。

Q2。ネストされたクエリの種類は何ですか?

主なタイプは、それぞれ異なるタスクに適した、シングルロー、マルチロー、相関、およびスカラーサブ征服です。

Q3。相関サブクエリをいつ使用する必要がありますか?

内部クエリが外部クエリから列を参照する必要がある場合は、動的、行ごとの処理のために列を参照する必要がある場合に、相関サブクエリを使用します。

Q4。ネストされたクエリはパフォーマンスに影響を与える可能性がありますか?

はい、ネストされたクエリ、特に相関したクエリは、パフォーマンスに大きな影響を与える可能性があります。クエリ計画を分析し、参加などの代替案を検討することにより、最適化します。

以上がSQLのネストされたクエリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
LM Studioを使用してLLMをローカルに実行する方法は? - 分析VidhyaLM Studioを使用してLLMをローカルに実行する方法は? - 分析VidhyaApr 19, 2025 am 11:38 AM

自宅で大規模な言語モデルを簡単に実行する:LM Studioユーザーガイド 近年、ソフトウェアとハ​​ードウェアの進歩により、パーソナルコンピューターで大きな言語モデル(LLM)を実行することが可能になりました。 LM Studioは、このプロセスを簡単かつ便利にするための優れたツールです。この記事では、LM Studioを使用してLLMをローカルに実行する方法に飛び込み、重要なステップ、潜在的な課題、LLMをローカルに配置することの利点をカバーします。あなたが技術愛好家であろうと、最新のAIテクノロジーに興味があるかどうかにかかわらず、このガイドは貴重な洞察と実用的なヒントを提供します。始めましょう! 概要 LLMをローカルに実行するための基本的な要件を理解してください。 コンピューターにLM Studiをセットアップします

Guy Periは、データ変換を通じてMcCormickの未来のフレーバーを支援しますGuy Periは、データ変換を通じてMcCormickの未来のフレーバーを支援しますApr 19, 2025 am 11:35 AM

Guy Periは、McCormickの最高情報およびデジタルオフィサーです。彼の役割からわずか7か月後ですが、ペリは同社のデジタル能力の包括的な変革を急速に進めています。データと分析に焦点を当てている彼のキャリアに焦点が当てられています

迅速なエンジニアリングの感情の連鎖は何ですか? - 分析Vidhya迅速なエンジニアリングの感情の連鎖は何ですか? - 分析VidhyaApr 19, 2025 am 11:33 AM

導入 人工知能(AI)は、言葉だけでなく感情も理解し、人間のタッチで反応するように進化しています。 この洗練された相互作用は、AIおよび自然言語処理の急速に進む分野で重要です。 th

データサイエンスワークフローのための12のベストAIツール-AnalyticsVidhyaデータサイエンスワークフローのための12のベストAIツール-AnalyticsVidhyaApr 19, 2025 am 11:31 AM

導入 今日のデータ中心の世界では、競争力と効率の向上を求める企業にとって、高度なAIテクノロジーを活用することが重要です。 さまざまな強力なツールにより、データサイエンティスト、アナリスト、開発者が構築、Deplを作成することができます。

AV BYTE:OpenAIのGPT-4O MINIおよびその他のAIイノベーションAV BYTE:OpenAIのGPT-4O MINIおよびその他のAIイノベーションApr 19, 2025 am 11:30 AM

今週のAIの風景は、Openai、Mistral AI、Nvidia、Deepseek、Hugging Faceなどの業界の巨人からの画期的なリリースで爆発しました。 これらの新しいモデルは、TRの進歩によって促進された電力、手頃な価格、アクセシビリティの向上を約束します

PerplexityのAndroidアプリにはセキュリティの欠陥が感染しているとレポートPerplexityのAndroidアプリにはセキュリティの欠陥が感染しているとレポートApr 19, 2025 am 11:24 AM

しかし、検索機能を提供するだけでなくAIアシスタントとしても機能する同社のAndroidアプリは、ユーザーをデータの盗難、アカウントの買収、および悪意のある攻撃にさらす可能性のある多くのセキュリティ問題に悩まされています。

誰もがAIの使用が上手になっています:バイブコーディングに関する考え誰もがAIの使用が上手になっています:バイブコーディングに関する考えApr 19, 2025 am 11:17 AM

会議や展示会で何が起こっているのかを見ることができます。エンジニアに何をしているのか尋ねたり、CEOに相談したりできます。 あなたが見ているところはどこでも、物事は猛烈な速度で変化しています。 エンジニア、および非エンジニア 違いは何ですか

Rocketpyを使用したロケットの起動シミュレーションと分析-AnalyticsVidhyaRocketpyを使用したロケットの起動シミュレーションと分析-AnalyticsVidhyaApr 19, 2025 am 11:12 AM

Rocketpy:A包括的なガイドでロケット発売をシミュレートします この記事では、強力なPythonライブラリであるRocketpyを使用して、高出力ロケット発売をシミュレートすることをガイドします。 ロケットコンポーネントの定義からシミュラの分析まで、すべてをカバーします

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。