ホームページ データベース mysql チュートリアル mysql テーブルの接続クエリとは何ですか?

mysql テーブルの接続クエリとは何ですか?

Oct 19, 2020 pm 05:35 PM
mysql

mysql テーブルの接続クエリには次のものが含まれます: 1. 相互接続 (通常、接続されたテーブルのデカルト積を返すために使用されます); 2. 内部結合 (主に接続を設定することでクエリ結果の特定の部分を削除します)条件. データ行の相互接続; 3. 外部接続では、まず接続されたテーブルを実テーブルと参照テーブルに分割し、次に実テーブルに基づいて条件を満たすレコードと満たさないレコードを返します。

mysql テーブルの接続クエリとは何ですか?

(推奨チュートリアル: mysql ビデオ チュートリアル)

リレーショナル データベースでは、テーブル間の関係は次のようになります。関係であるため、実際のアプリケーションでは、複数テーブルのクエリがよく使用されます。マルチテーブル クエリは、2 つ以上のテーブルを同時にクエリします。

MySQL では、複数テーブルのクエリには主にクロス結合、内部結合、外部結合が含まれます。

クロス結合

クロス結合 (CROSS JOIN) は、通常、結合テーブルのデカルト積を返すために使用されます。

クロスコネクトの構文形式は次のとおりです。

SELECT <字段名> FROM <表1> CROSS JOIN <表2> [WHERE子句]
ログイン後にコピー

または

SELECT <字段名> FROM <表1>, <表2> [WHERE子句]
ログイン後にコピー

構文の説明は次のとおりです。

  • # #フィールド名: 何を照会する必要があるか フィールド名。

  • <テーブル 1><テーブル 2>: 相互接続が必要なテーブルの名前。

  • WHERE 句: 相互接続のクエリ条件を設定するために使用されます。

注: 複数のテーブルが相互接続されている場合、FROM の後に CROSS JOIN または を連続して使用できます。上記 2 つの構文の戻り結果は同じですが、最初の構文が公式に推奨されている標準的な記述方法です。

接続したテーブル間に関係がない場合は、WHERE句を省略しますが、このとき返される結果は2つのテーブルのデカルト積となり、返される結果の数はその乗算になります。 2 つのテーブルのデータ行。各テーブルが 1000 行ある場合、返される結果の数は 1000×1000 = 1000000 行となり、データ量が非常に膨大になることに注意してください。

内部結合

内部結合は主に、相互接続の接続条件を設定することにより、クエリ結果から特定のデータ行を削除します。簡単に言うと、条件式はクロスコネクト内の特定のデータ行を削除するために使用されます。

内部結合では、INNER JOIN キーワードを使用して 2 つのテーブルを接続し、ON 句を使用して接続条件を設定します。結合条件がなければ、INNER JOIN と CROSS JOIN は構文的に同等であり、交換可能です。

内部接続の構文形式は次のとおりです。

SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]
ログイン後にコピー

構文の説明は次のとおりです。

  • フィールド名: クエリ対象のフィールドの名前。

  • <テーブル 1><テーブル 2>: 内部結合が必要なテーブルの名前。

  • INNER JOIN: INNER キーワードは内部結合では省略でき、JOIN キーワードのみが使用されます。

  • ON 句: 内部結合の接続条件を設定するために使用されます。

  • INNER JOIN WHERE 句を使用して接続条件を指定することもできますが、INNER JOIN ... ON 構文が公式の標準記述方法であり、WHERE 句はクエリに影響します。ある時点でのパフォーマンス。

複数のテーブルを接続する場合は、FROM の後に INNER JOIN または JOIN を続けて使用します。

外部結合

内部結合のクエリ結果は、接続条件を満たすすべてのレコードであり、外部結合は最初にレコードを分割します。接続されたテーブルを実表と参照表に変換し、実表に基づいて条件を満たすレコードと満たさないレコードを返します。

外部結合は左外部結合と右外部結合に分けられますが、以下ではそれぞれ左外部結合と右外部結合について例に基づいて説明します。

左結合

左外部結合 (左結合とも呼ばれる) は、LEFT OUTER JOIN キーワードを使用して 2 つのテーブルを接続し、ON 句を使用して接続を設定します。条件。

左結合の構文形式は次のとおりです。

SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>
ログイン後にコピー

構文の説明は次のとおりです。

フィールド名: クエリ対象のフィールドの名前。

  • <テーブル 1><テーブル 2>: 左結合が必要なテーブルの名前。

  • LEFT OUTER JOIN: OUTER キーワードは左結合では省略でき、キーワード LEFT JOIN のみが使用されます。

  • ON 句: 左結合の接続条件を設定するために使用され、省略できません。

上記の構文では、「テーブル 1」がベース テーブル、「テーブル 2」が参照テーブルです。左結合でクエリを実行する場合、「テーブル 1」のすべてのレコードと、「テーブル 2」の結合条件に一致するレコードをクエリできます。 「テーブル 1」の行に「テーブル 2」の一致する行がない場合、返される結果では、「テーブル 2」のフィールド値は null (NULL) になります。

例 1

左結合クエリを実行する前に、まず tb_course テーブルと tb_students_info テーブルのデータを確認します。 SQL文と実行結果は以下のとおりです。

mysql> SELECT * FROM tb_course;
+----+-------------+
| id | course_name |
+----+-------------+
|  1 | Java        |
|  2 | MySQL       |
|  3 | Python      |
|  4 | Go          |
|  5 | C++         |
|  6 | HTML        |
+----+-------------+
6 rows in set (0.00 sec)
mysql> SELECT * FROM tb_students_info;
+----+--------+------+------+--------+-----------+
| id | name   | age  | sex  | height | course_id |
+----+--------+------+------+--------+-----------+
|  1 | Dany   |   25 | 男   |    160 |         1 |
|  2 | Green  |   23 | 男   |    158 |         2 |
|  3 | Henry  |   23 | 女   |    185 |         1 |
|  4 | Jane   |   22 | 男   |    162 |         3 |
|  5 | Jim    |   24 | 女   |    175 |         2 |
|  6 | John   |   21 | 女   |    172 |         4 |
|  7 | Lily   |   22 | 男   |    165 |         4 |
|  8 | Susan  |   23 | 男   |    170 |         5 |
|  9 | Thomas |   22 | 女   |    178 |         5 |
| 10 | Tom    |   23 | 女   |    165 |         5 |
| 11 | LiMing |   22 | 男   |    180 |         7 |
+----+--------+------+------+--------+-----------+
11 rows in set (0.00 sec)
ログイン後にコピー

コースのない学生も含め、tb_students_info テーブルと tb_course テーブル内のすべての学生名と対応するコース名をクエリします。SQL ステートメントと実行結果は次のとおりです。

mysql> SELECT s.name,c.course_name FROM tb_students_info s LEFT OUTER JOIN tb_course c 
    -> ON s.`course_id`=c.`id`;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Henry  | Java        |
| NULL   | Java        |
| Green  | MySQL       |
| Jim    | MySQL       |
| Jane   | Python      |
| John   | Go          |
| Lily   | Go          |
| Susan  | C++         |
| Thomas | C++         |
| Tom    | C++         |
| LiMing | NULL        |
+--------+-------------+
12 rows in set (0.00 sec)
ログイン後にコピー

ご覧のとおり、実行結果には 12 件のレコードが表示されます。LiMing という名前の学生には現在コースがありません。対応する tb_course テーブルには学生のコース情報がないため、このレコードはtb_students_info テーブル。tb_course テーブルの対応する値は NULL です。

右连接

右外连接又称为右连接,右连接是左连接的反向连接。使用 RIGHT OUTER JOIN 关键字连接两个表,并使用 ON 子句来设置连接条件。

右连接的语法格式如下:

SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>
ログイン後にコピー

语法说明如下。

  • 字段名:需要查询的字段名称。

  • <表1><表2>:需要右连接的表名。

  • RIGHT OUTER JOIN:右连接中可以省略 OUTER 关键字,只使用关键字 RIGHT JOIN。

  • ON 子句:用来设置右连接的连接条件,不能省略。

与左连接相反,右连接以“表2”为基表,“表1”为参考表。右连接查询时,可以查询出“表2”中的所有记录和“表1”中匹配连接条件的记录。如果“表2”的某行在“表1”中没有匹配行,那么在返回结果中,“表1”的字段值均为空值(NULL)。

例 2

在 tb_students_info 表和 tb_course 表中查询所有课程,包括没有学生的课程,SQL 语句和运行结果如下。
mysql> SELECT s.name,c.course_name FROM tb_students_info s RIGHT OUTER JOIN tb_course c 
    -> ON s.`course_id`=c.`id`;
+--------+-------------+
| name   | course_name |
+--------+-------------+
| Dany   | Java        |
| Green  | MySQL       |
| Henry  | Java        |
| Jane   | Python      |
| Jim    | MySQL       |
| John   | Go          |
| Lily   | Go          |
| Susan  | C++         |
| Thomas | C++         |
| Tom    | C++         |
| NULL   | HTML        |
+--------+-------------+
11 rows in set (0.00 sec)
ログイン後にコピー

可以看到,结果显示了 11 条记录,名称为 HTML 的课程目前没有学生,因为对应的 tb_students_info 表中并没有该学生的信息,所以该条记录只取出了 tb_course 表中相应的值,而从 tb_students_info 表中取出的值为 NULL。

多个表左/右连接时,在 ON 子句后连续使用 LEFT/RIGHT OUTER JOIN 或 LEFT/RIGHT JOIN 即可。

使用外连接查询时,一定要分清需要查询的结果,是需要显示左表的全部记录还是右表的全部记录,然后选择相应的左连接和右连接。

以上が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)

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

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

NAVICATでデータベースパスワードを取得できますか? NAVICATでデータベースパスワードを取得できますか? Apr 08, 2025 pm 09:51 PM

NAVICAT自体はデータベースパスワードを保存せず、暗号化されたパスワードのみを取得できます。解決策:1。パスワードマネージャーを確認します。 2。NAVICATの「パスワードを記憶する」機能を確認します。 3.データベースパスワードをリセットします。 4.データベース管理者に連絡してください。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

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

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

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

MariadBのNAVICATでデータベースパスワードを表示する方法は? MariadBのNAVICATでデータベースパスワードを表示する方法は? Apr 08, 2025 pm 09:18 PM

Passwordが暗号化された形式で保存されているため、MariadbのNavicatはデータベースパスワードを直接表示できません。データベースのセキュリティを確保するには、パスワードをリセットするには3つの方法があります。NAVICATを介してパスワードをリセットし、複雑なパスワードを設定します。構成ファイルを表示します(推奨されていない、高リスク)。システムコマンドラインツールを使用します(推奨されません。コマンドラインツールに習熟する必要があります)。

NAVICATでSQLを実行する方法 NAVICATでSQLを実行する方法 Apr 08, 2025 pm 11:42 PM

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

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

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

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

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

See all articles