1. 内部結合クエリの概要内部結合は、アプリケーションで非常に一般的な結合操作であり、通常はデフォルトの結合タイプです。内部結合は結合述語に基づいており、2 つのテーブル (A と B など) の列を組み合わせて新しい結果テーブルを生成します。内部結合クエリは、テーブル A の各行をテーブル B の各行と比較し、結合述語を満たす組み合わせを見つけます。結合述語が満たされると、A と B の一致する行が列ごとに (並べて) 結合され、結果セット内の 1 つの行になります。 内部結合クエリ操作では、結合条件に一致するデータ行がリストされ、比較演算子を使用して結合された列の列値を比較します。内部結合には、クロス結合、等価結合、自然結合の 3 種類があります。 2. クロス結合(直積)クロス結合は、「カルテシアン結合」または「積」とも呼ばれ、すべてのタイプの内部結合の基礎となります。 テーブルが行レコードのコレクションと見なされる場合、クロス結合は 2 つのコレクションの直積を返し、結果セットで返されるデータ行の数は、クエリ条件を満たす最初のテーブルのデータ行の数に、クエリ条件を満たす 2 番目のテーブルのデータ行の数を掛けたものに等しくなります。これは実際には、内部結合条件が「常に真」であるか、結合条件が存在しないのと同じです。 A と B が 2 つのセットである場合、それらの交差結合は A x B と表されます。 ルート テーブルと車両テーブルのクロス結合 (デカルト積) を定義します。 例: ルートテーブルと車両テーブルの直積を実装する 選択カウント(*) 送信元行 CROSS JOIN車両 3. 内部結合構文と例文法: SELECTフィールドリスト テーブル1から[内部]テーブル2に結合 ON テーブル1.列1=テーブル2.列2 [WHERE条件] 例1: 内部結合を使用して、車両モデルに「DD」が含まれる車両情報とドライバー情報を取得します。車両情報はすべての列が必要で、ドライバー情報は名前とIDカードのみを含める必要があります。 v.*、d.name、d.licenseNo を選択 車両からv ドライバーdに加わる オン v.driverID=d.driverID WHERE モデル LIKE '%DD%' 例2: 内部結合を使用して、35 歳以上のドライバーの情報と、ドライバーが運転する車両情報を取得します。車両情報はすべての列に必要であり、ドライバー情報には名前、生年月日、電話番号のみが含まれます。 v.*、d.name、d.licenseNo、d.phone を選択 車両vから内部結合ドライバーd オン v.driverID=d.driverID WHERE CEIL(DATEDIFF(NOW(),誕生日)/365)>35 4. 自然なつながり自然結合は、接続される 2 つのテーブルの接続基準列が同じフィールド (フィールドが同じで、フィールド属性が同じ) である必要がある特殊な内部結合です。自然結合では、2 つのテーブルにある同じ名前の列がすべて比較され、重複する列は結果セットから削除されます。2 つのテーブルにある同じ名前の列は、結果セットに 1 回だけ表示されます。通常の内部結合では重複する列は削除されません。 (saL Server などの一部のデータベースでは、自然な接続がサポートされていません。) 自然結合の構文は次のとおりです。 SELECTフィールドリスト テーブル1からテーブル2への自然結合 [WHERE条件] 例: 自然結合を使用して、車両モデルに「DD」が含まれる車両情報とドライバー情報を取得します。車両情報はすべての列である必要があり、ドライバー情報は名前とIDカードのみを含める必要があります。 v.*、d.name、d.licenseNo を選択 車両からv自然結合ドライバーd WHERE モデル LIKE '%DD%' 5. 複数テーブル結合クエリクエリ対象の情報が複数のテーブルから取得される場合、2 つのテーブルを接続することで、複数テーブル結合クエリを確立できます。 3 つのテーブルを結合するクエリの構文は次のとおりです。 SELECTフィールドリスト テーブル1からテーブル2に結合 ON テーブル1.列1=テーブル2.列2_1 テーブル3を結合 ON テーブル2.列2_2=テーブル3.列3 [WHERE条件] 例: (1)table2はtable1とtable3に接続されています。 (2)3つ以上のテーブルを結合する方法は、3つのテーブルを結合する方法と同じであり、2つのテーブルを接続することによって実現される。 例1: すべての非エアコン車両のナンバープレート番号、モデル、運転手名、ルートのルート、出発駅、終着駅の情報を取得します。 SELECT d.name、v.plateNo、v.model、l.lineNo、l.from_station、l.end_station 車両からv ドライバーdに加わる オン v.driverID=d.driverID JOIN 行 l オン v.lineID=l.lineID WHERE type = 'エアコンなし車' 例2: バス会社2のすべての運転手情報を取得します。運転者の名前、身分証明書、性別、電話番号を出力する必要があります。 d.name、d.licenseNo、d.gender、d.phone を選択してください 車両からv ドライバーdに加わる ON v.ドライバーID JOIN 行 l オン v.lineID=l.lineID WHERE company = 'バス会社2' 6. シンプルな複数テーブル結合クエリFROM 句で結合するすべてのテーブルを直接リストし、WHERE 句で結合条件を指定すると、これは単純なマルチテーブルクエリとなり、内部結合と同じ機能を持ちます。 2 つのテーブルを結合するためのクエリ構文は次のとおりです。 SELECTフィールドリスト テーブル1、テーブル2から ここで、table1.column1=table2.column2 [およびその他の条件] 3 つのテーブル結合を使用するクエリ構文の形式は次のとおりです。 SELECTフィールドリスト テーブル1、テーブル2、テーブル3から ここで、table1.column1=table2.column2_1 かつ、table2.column2_2=table3.column3 [およびその他の条件] 例: すべての非エアコン車両のナンバープレート番号、モデル、運転手名、ルートのルート、出発駅、終着駅の情報を取得します。 SELECT d.name、v.plateNo、v.model、l.lineNo、l.from_station、l.end_station 車両v、ドライバーd、ラインlから ここで、v.driverID=d.driverID かつ、v.lineID=l.lineID AND type='エアコン付き車' 要約するこれで、MySQL 接続クエリに関するこの記事は終了です。MySQL 接続クエリに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: IE のテキストモード! DOCTYPE の役割の紹介
>>: Linux ソースコードからのソケット (TCP) バインドの詳細な説明
序文最近、仕事の都合で、約 1000w の大量のデータを MySQL に挿入する必要があり、時間がか...
目次[例を見る]: 【本来の効果は以下の通り】理由は次のとおりです。 【解決】:要約するBootSt...
目次継承とプロトタイプチェーン継承されたプロパティ継承されたメソッドJavaScript でのプロト...
(?i) は大文字と小文字を区別しないことを意味します。大文字と小文字をすべて置き換えます。 htm...
1. イメージをプルするdocker pull registry.cn-hangzhou.aliyu...
目次1. 一般的な高階関数1.1、フィルター1.2、地図1.3、減らすHigher Order fu...
まず最初に、適切なブラウザを選択します。私が Chrome を選択したのは、その強力なデバッグ ツー...
目次JSIとはJSIの違いiOS で JSI を使用するiOS 設定RN側の構成jsはパラメータ付き...
Linux で新たに発見された sudo の脆弱性を悪用すると、特定のユーザーが root としてコ...
最近、hadoop テスト クラスターで spark ストリーミング プログラムを実行し、その後、n...
<br />多くのウェブサイト デザイナーが犯す最も一般的な間違いは、ウェブページが I...
解決親要素に position:relative を追加します。子要素に position:abso...
1. golang:最新のベースイメージ mkdir gotest タッチメイン.go Docker...
目次シナリオ解決してみる解決するシナリオ今日、コンポーネントの双方向データバインディングにv-mod...
目次DragEvent インターフェースデータ転送インターフェースの概要DataTransfer の...