ホームページ データベース mysql チュートリアル Oracle DB 使用子查询来解决查询

Oracle DB 使用子查询来解决查询

Jun 07, 2016 pm 05:32 PM
オラクルクエリ

子查询是一个SELECT语句,它嵌入到另一个SELECT语句的子句中。通过使用子查询,可以用简单的语句构建功能强大的语句。当需要从表

 定义子查询

• 描述子查询可以解决的问题类型

• 列出子查询的类型

• 编写单行和多行子查询

 

• 子查询:类型、语法和准则

• 单行子查询:

– 子查询中的组函数

– 带有子查询的HAVING子句

• 多行子查询

– 使用ALL或ANY运算符

• 使用EXISTS运算符

• 子查询中的空值

 

  • 使用子查询解决问题
  • 谁的薪金高于Abel 的薪金?

    子查询:

    Abel 的薪金是多少?

    查询:

    哪些雇员的薪金高于Abel 的薪金?

     

    使用子查询解决问题

    假设要编写一个查询来找出谁的薪金高于Abel 的薪金。

    要解决此问题,需要使用两个查询:一个查询用于查找Abel 的薪金,另一个查询用于查找薪金超过该金额的人员。

    通过组合这两个查询,即将一个查询放在另一个查询中,可以解决此问题。

    内部查询(即子查询)会返回一个外部查询(即主查询)要使用的值。使用子查询等同于执行两个连续的查询,而且将第一个查询的结果用作第二个查询中的搜索值。

     

  • 子查询语法
  • • 先执行子查询(内部查询),再执行主查询(外部查询)。

    • 主查询会使用子查询的结果。

    SELECT select_list FROM table WHERE expr operator

    (SELECT select_list FROM table);

     

     

    子查询是一个SELECT语句,它嵌入到另一个SELECT语句的子句中。通过使用子查询,可以用简单的语句构建功能强大的语句。当需要从表中选择行,而选择条件却取决于该表自身中的数据时,子查询非常有用。

    可以在许多SQL 子句中使用子查询,其中包括以下子句:

    • WHERE子句

    • HAVING子句

    • FROM子句

    在该语法中:

    operator包括比较条件,,例如>、=或IN

    注:比较条件分为以下两类:单行运算符(>、=、>=、、ANY、ALL、EXISTS)。

    子查询通常被称为嵌套SELECT语句、子SELECT语句或内部SELECT语句。通常先执行子查询,然后使用其输出来完善主查询(即外部查询)的查询条件。

     

  • 使用子查询
  • SELECT last_name, salary FROM employees

    WHERE salary >

    (SELECT salary FROM employees WHERE last_name = 'Abel');

     

    在示例中,内部查询确定了雇员Abel 的薪金。外部查询会采用内部查询的结果并根据此结果显示薪金超过雇员Abel 的所有雇员。

     

  • 使用子查询的准则
  • • 子查询必须放在括号中。

    • 子查询放在比较条件的右侧可增加可读性。但是,子查询可出现在比较运算符的任意一侧。

    • 在子查询中可以使用两类比较条件:单行运算符和多行运算符。对单行子查询使用单行运算符,对多行子查询使用多行运算符。

     

  • 子查询的类型
  • • 单行子查询:从内部SELECT语句中仅返回一行的查询

    • 多行子查询:从内部SELECT语句中返回多行的查询

    注:此外,还有多列子查询,此类查询从内部SELECT语句中返回多个列。

     

  • 单行子查询
  • 仅返回一行

    使用单行比较运算符

     

    单行子查询是从内部SELECT语句中返回一行的一种查询。此类子查询使用单行运算符。

    上图给出了单行运算符的列表。

    示例:

    显示其职务ID 与雇员141 的职务ID 相同的雇员:

    SELECT last_name, job_id FROM employees

    WHERE job_id =

    (SELECT job_id FROM employees WHERE employee_id = 141);

     

  • 执行单行子查询
  • SELECT last_name,job_id, salary FROM employees

    WHERE job_id =

    (SELECT job_id FROM employees WHERE last_name= 'Taylor')

    AND salary >

    (SELECT salary FROM employees WHERE last_name= 'Taylor');

     

    可以将SELECT语句看作一个查询块。示例显示其职务与Taylor 相同但薪金高于Taylor 的雇员。

    该示例由三个查询块组成:一个外部查询和两个内部查询。先执行内部查询块,生成的查询结果分别为SA_REP和8600。然后可以处理外部查询块,使用内部查询返回的值来完善其搜索条件。

    两个内部查询都返回单个值(分别为SA_REP和8600),因此将此SQL 语句称为单行子查询。

    注:外部查询和内部查询可以从不同的表中获得数据。

     

    更多详情见请继续阅读下一页的精彩内容

     

    推荐阅读:

    Oracle中from中子查询实例应用

    WITH子句:子查询命名

    Oracle子查询第一行与最后一行相运算

    Oracle子查询详解

    Oracle 10g数据库基础之基本查询语句-下-连接&子查询

     

    linux

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

    Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

    この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

    MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

    記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

    人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

    記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

    MySQLの大きなデータセットをどのように処理しますか? MySQLの大きなデータセットをどのように処理しますか? Mar 21, 2025 pm 12:15 PM

    記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

    INNODBフルテキスト検索機能を説明します。 INNODBフルテキスト検索機能を説明します。 Apr 02, 2025 pm 06:09 PM

    INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

    ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? ドロップテーブルステートメントを使用してMySQLにテーブルをドロップするにはどうすればよいですか? Mar 19, 2025 pm 03:52 PM

    この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

    外国の鍵を使用して関係をどのように表現しますか? 外国の鍵を使用して関係をどのように表現しますか? Mar 19, 2025 pm 03:48 PM

    記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

    JSON列にインデックスを作成するにはどうすればよいですか? JSON列にインデックスを作成するにはどうすればよいですか? Mar 21, 2025 pm 12:13 PM

    この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

    See all articles