MySQLデータベースのサブクエリの構文規則は何ですか?
データを抽出する際には、依存関係を持つ未知のデータが多数存在するため、クエリ ステートメントにサブクエリをネストする必要があります。まずデータのセットを取得し、その結果を次のクエリのオブジェクトとして使用する必要があります。 「テーブル接続の章」で、サブクエリの効率が低いことについてお話しました。実際、すべてのサブクエリが非効率であるわけではありません。レコードを照合するときに、「WHERE」サブクエリを繰り返し実行する必要があります。これは真実ではありません。推奨されています。ただし、クエリ結果セットをテーブルとして使用し、他のテーブルと接続する場合、これは "FROM" 句のサブクエリになります。このサブクエリ方法は引き続き推奨されます。
サブクエリの概要
サブクエリは、クエリ ステートメント内にネストされたクエリです。
通常のクエリ ステートメントは、「SELECT」サブクエリと「FROM」サブクエリ、「WHERE」に分かれています。 subquery; (「'FROM' subquery」を使用することを強くお勧めします)
サブクエリの例は次のとおりです:
基本給与が会社の平均基本給与を超える従業員の情報をクエリします。この場合、以前はテーブル結合を通じて実装しましたが、今度はサブクエリを使用して実装する方法を見てみましょう。 )
SELECT empno, ename, sal FROM t_emp WHERE sal >= (SELECT AVG(sal) FROM t_emp); -- 正常情况下,将聚合函数作为 WHERE 子句的条件是不可以的,但是这里利用子查询与聚合函数先将平均底薪查询出来,这就变成具体的数据了 -- 这种情况下,作为 WHERE 子句的条件,就可以被使用了
WHERE サブクエリ
SQL ステートメントを作成する場合、WHERE サブクエリが思考ロジックに最も一致します
この種のサブクエリは最もシンプルで理解しやすいですが、非常に非効率なサブクエリです。
基本給が会社の平均基本給を超える従業員情報について、先ほど示したクエリを考えてみましょう。 「WHERE」句で各従業員レコードを「SELECT」サブクエリと比較する場合、サブクエリを再実行する必要があります。従業員テーブルに 10,000 件のレコードがある場合、サブクエリを 10,000 回実行する必要があり、何度も実行するのは非常に非効率です。
クエリ文において、繰り返しクエリされるサブクエリを「相関サブクエリ」と呼びます。ここでの「WHERE」サブクエリは「相関サブクエリ」に属します。この種のサブクエリの使用は避けてください。
FROM サブクエリ
クエリ ステートメントでは、「FROM」サブクエリは 1 回だけ実行されます。これは、「WHERE」サブクエリの逆であるため、クエリ効率が非常に高い。
同様に、基本給が会社の平均基本給を超える従業員情報のクエリを例として、「FROM」サブクエリがどのように実装されるかを見てみましょう。
SELECT e.empno, e.ename, e.sal, t.avg FROM t_emp e JOIN (SELECT deptno, AVG(sal) AS avg FROM t_emp GROUP BY deptno) t ON e.deptno = t.deptno AND e.sal >= t.avg; -- 首先,按照每一个部门编号去分组,然后统计部门标号与该部门对应的平均月薪。将这个结果集作为一张临时的表与员工的表做连接。 -- 连接的条件为 "员工表" 的 "部门编号" = "结果集" 的 "部门编号",并且员工的月薪大于部门的平均月薪
したがって、この質問は「FROM」サブクエリを使用して簡単に実装でき、「WHERE」サブクエリを使用する必要はありません。 「FROM」サブクエリは相関サブクエリではないため、一部の問題を解決する場合は、このサブクエリの種類を制限する必要があります。
SELECT サブクエリ
正直に言うと、これまで経験したプロジェクトの中で、この種のサブクエリは見たことがありません。
その理由は、「SELECT」サブクエリも相関サブクエリであり、SQL 文内で繰り返し実行されるため、クエリ効率が非常に低いためです。
ここで例を挙げます。 たとえば、各従業員の部門情報をクエリしたい場合、
SELECT e.empno, e.ename, (SELECT dname FROM t_dept WHERE deptno = e.deptno) AS 部门名称 FROM t_emp e; -- 先试用 "SELECT" 子查询查询出 "部门表" 中的部门名称,约束条件为 "部门表"中的 "部门编号" 与 "员工表"中的 "部门编号" 一致 -- 将 "SELECT" 子查询得到的 "部门名称" 作为SQL语句中的一个字段进行输出
実行結果は正しいですが、 , ただし、実行効率が低すぎるため、この「SELECT」サブクエリ方法は推奨されません。理解してください。他の人が「SELECT」サブクエリを使用しているのを見ると、親切にするのが最善です。
以上がMySQLデータベースのサブクエリの構文規則は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

NAVICATでSQLを実行する手順:データベースに接続します。 SQLエディターウィンドウを作成します。 SQLクエリまたはスクリプトを書きます。 [実行]ボタンをクリックして、クエリまたはスクリプトを実行します。結果を表示します(クエリが実行された場合)。

データベースに接続するときの一般的なエラーとソリューション:ユーザー名またはパスワード(エラー1045)ファイアウォールブロック接続(エラー2003)接続タイムアウト(エラー10060)ソケット接続を使用できません(エラー1042)SSL接続エラー(エラー10055)接続の試みが多すぎると、ホストがブロックされます(エラー1129)データベースは存在しません(エラー1049)
