検索
ホームページデータベースmysql チュートリアルMySQL の高度なドリフトについての深い理解 (4)

結合

クロス結合

最も単純なタイプの結合はクロス結合です。これには、テーブルを乗算してすべてを含む積を作成することが含まれます。
例:
select * from students,person;//結果は 2 つのテーブルの組み合わせです
2 つのテーブルのすべての列が結合されて、すべての可能な組み合わせを含む結果セットが生成されます。このタイプはクロス結合と呼ばれ、結合後の結果のテーブルの行数は、結合に使用された各テーブルの行数の積と同じになります。
上記の相互接続はデータベース サーバーのパフォーマンスに大きな影響を与えるため、接続で where 句を使用して一部のレコードをフィルタリングすることをお勧めします。

内部結合/外部結合

内部結合は最も一般的なタイプの結合であり、結合のすべての部分を構成するすべてのテーブルからの一致が必要であり、一致しない行は除外されるため、最も均一です。最終結果 セット外の内部結合の最も一般的な例は等価結合です。これは、結合されたテーブル内のフィールドが各テーブル内のフィールドと同じであることを意味します。この場合、最終的な結果セットには、指定されたフィールドに一致する結合テーブル内の行のみが含まれます。

外部結合は非対称であり、結合の反対側の行と一致するかどうかに関係なく、結合の片側のすべての行が最終レコードに含まれます

結合のどちら側が保持されるかに応じて、SQL は左外部結合と右外部結合。左外部結合では、結合の左側にあるテーブルの、where 句に一致するすべてのレコードが最終結果セットに表示されます。右外部結合では、結合の右側にあるテーブルの、where 句に一致するすべてのレコードが最終結果セットに表示されます。

左外部結合: 「接続の左側の部分からすべての行を選択し、選択した行ごとに右側の部分から一致する値が表示されるか、NULL 行が表示されます。」と説明されています。 このタイプの結合は、左結合または左外部結合と呼ばれます。右結合または右外部結合はその逆です。

自己結合
このタイプの結合は、通常、内部結合を含むテーブル内のレコードを取得するために使用されます。

MySQL 4.0 以降では、接続に加えて、複数の選択クエリの出力を 1 つの結果セットに結合するために使用されるユニオン演算子もサポートしています。 ほとんどの場合、この演算子は、クエリによって生成された結果セットを別のテーブルに追加し、すべての結果を含む単一のテーブルを作成するために使用されます。

ユニオン演算子を使用して、できるだけ多くの選択クエリを結合しますが、次の 2 つの基本条件を満たす必要があります:

まず、各選択クエリによって返されるフィールドの数が同じである必要があります。
次に、各選択クエリのフィールドのデータ型が互いに一致する必要があります。

Union 演算子は、結合された結果セットから重複する行を自動的に削除します。

サブクエリ

where/havingクエリ
MySQLでは、where句またはhaving句にサブクエリを含めることができます。かっこで囲まれたサブクエリは、比較演算子、論理演算子、in 演算子、exists 演算子よりも優先されます。

having 句の比較演算子の前にサブクエリを使用して、親クエリによって作成されたグループをフィルタリングすることもできます。

in/exists/from query
比較演算子は、サブクエリによって返された結果列に値が含まれている場合にのみ適用されます。サブクエリによって返される結果セットが値のリストである場合、比較演算子を in 演算子に置き換える必要があります。

in 演算子は、結果セットに特定の値が存在するかどうかを検出できます。検出が成功すると、外部クエリが実行されます。

exists 演算子は、サブクエリが結果を生成したかどうかをクエリするために使用できます。これにより、exists テストが true を返した場合にのみ外部クエリを実行できます。
サブクエリによって生成された結果は、select の from 句でも使用できます。ステートメントをテーブルとして表示します。

つまり、内部クエリによって生成された結果テーブルは、外部クエリの from 句で使用されます。このようなテーブルは、SQL ではエクスポート テーブルになります。


この方法でサブクエリの結果を使用する場合、内部クエリによって生成された結果テーブルは最初に別のテーブル名を取る必要があり、そうでないと MySQL はテーブル内のカラムを参照する方法を認識できないことに注意してください。


以上がMySQL の高度なドリフトについての深い理解 (4)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQLにユーザーを追加:完全なチュートリアルMySQLにユーザーを追加:完全なチュートリアルMay 12, 2025 am 12:14 AM

MySQLユーザーを追加する方法を習得することは、データベース管理者と開発者にとって重要です。これは、データベースのセキュリティとアクセス制御を保証するためです。 1)CreateUserコマンドを使用して新しいユーザーを作成し、2)付与コマンドを介してアクセス許可を割り当て、3)FlushPrivilegesを使用してアクセス許可を有効にすることを確認します。

MySQL文字列データ型のマスター:Varchar vs. Text vs. CharMySQL文字列データ型のマスター:Varchar vs. Text vs. CharMay 12, 2025 am 12:12 AM

choosecharforfixed-lengthdata、varcharforvariable-lengthdata、andtextforlargetextfields.1)chariseffienceforconsistent-lengthdatalikecodes.2)varcharsuitsvariaible-lengthdatalikenames、balancingflexibilityandperformance.3)Textisidealforforforforforforforforforforforidex

MySQL:文字列データ型とインデックス:ベストプラクティスMySQL:文字列データ型とインデックス:ベストプラクティスMay 12, 2025 am 12:11 AM

MySQLの文字列データ型とインデックスを処理するためのベストプラクティスには、次のものが含まれます。1)固定長のchar、可変長さのvarchar、大規模なテキストのテキストなどの適切な文字列タイプを選択します。 2)インデックス作成に慎重になり、インデックスを避け、一般的なクエリのインデックスを作成します。 3)プレフィックスインデックスとフルテキストインデックスを使用して、長い文字列検索を最適化します。 4)インデックスを定期的に監視および最適化して、インデックスを小さく効率的に保つ。これらの方法により、読み取りと書き込みのパフォーマンスをバランスさせ、データベースの効率を改善できます。

MySQL:リモートでユーザーを追加する方法MySQL:リモートでユーザーを追加する方法May 12, 2025 am 12:10 AM

toaddauserremotelytomysql、フォローステープ:1)connecttomysqlasroot、2)createanewuserwithremoteaccess、3)grantniverayprivileges、and4)flushprivileges.

MySQL文字列データ型の究極のガイド:効率的なデータストレージMySQL文字列データ型の究極のガイド:効率的なデータストレージMay 12, 2025 am 12:05 AM

tostorestringseffiedlyinmysql、choosetherightdatatypebasedonyourneadss:1)usecharforfixed-lengthstringslikecountrycodes.2)usevarforvariable-lengthstringslikenames.3)usetextfor forlong-formtextcontent.4)useblobforborikedalikeimages

mysql blob vs.テキスト:大きなオブジェクトに適したデータ型を選択するmysql blob vs.テキスト:大きなオブジェクトに適したデータ型を選択するMay 11, 2025 am 12:13 AM

MySQLのBLOBおよびテキストデータ型を選択する場合、BLOBはバイナリデータの保存に適しており、テキストはテキストデータの保存に適しています。 1)BLOBは、写真やオーディオなどのバイナリデータに適しています。2)テキストは、記事やコメントなどのテキストデータに適しています。選択するときは、データプロパティとパフォーマンスの最適化を考慮する必要があります。

MySQL:製品にルートユーザーを使用する必要がありますか?MySQL:製品にルートユーザーを使用する必要がありますか?May 11, 2025 am 12:11 AM

いいえ、Youは、usotherootuserinmysqlforyourproduct.instead、createpificusers withlimitedprivilegestoenhancesecurityandperformance:1)createanewuserwithastrongpassword、2)grantonlynlyneversearpermissionStothisuser、3)正規環境筋肉筋周辺の環境

MySQL文字列データ型説明:データに適したタイプを選択するMySQL文字列データ型説明:データに適したタイプを選択するMay 11, 2025 am 12:10 AM

mysqlstringdatatypesshouldbechosenbadedatacharacteristicsandusecases:1)usecharforfixed-lengthstringslikecountrycodes.2)usevarforvariable-lengthstringslikenames.3)usebinaryorvarniaryforbinarydatalikecryptograpograpogrationckeys.4)使用

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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

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

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版

SublimeText3 Mac版

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール