あなたがよく知っているはずの3つの参加
キーテイクアウト
- この記事では、左の結合、右結合、内側結合、および外部の結合の使用について説明します。2つの表を備えたブックローンデータベースの簡単な例を使用して、顧客と本。 SQL結合の「左」と「右」の概念は、ソース順序以外に何も明確にされていません。結合キーワードの前に言及されたテーブルは、「左」のテーブルであり、その後のテーブルは「右」のテーブルです。
- この記事では、除外で結合するという概念を紹介します。これは、「not」または「not」という言葉を含むクエリに役立ちます。これらの結合は、特にNULL値を探すときに、where句を使用してデータを除外します。 除外を伴う外側の結合は、MySQLではサポートされていませんが、テーブル間の接続のないデータを選択するのに役立つと説明されています。
- 実際の値としてnullを持たないフィールドに対して常に句を使用する必要があることが強調されています。また、Cross Joinは、テーブルAのすべての行Aと表Bのすべての行に一致するユニークな結合であることに注意してください。
- 2つのデータベーステーブルからデータを結合し、必要な情報をフィルタリングする方法はたくさんあります。クレイグ・バックラーは、理解の参加について人気のある部分を書きました。すなわち、内側、左、右、完全な外側。この記事は、その1つの延長です これらを本当に素早く要約しましょう。 2つのテーブル、1つは顧客向け、もう1つは本ローンデータベースを確立するための本用です。
- 顧客のテーブル
id
firstName
lastName
book_id1 スターウォーズ 2 ジュラシックパーク 3 小さな女性 4 トム・ソーヤー
本のテーブルには、すべての本に1つの行があります。」
画像では、左円またはテーブルのすべてのデータが結果セットに含まれていることがわかります。書籍テーブルから重複するデータのみが右のテーブルから含まれています。これは、左結合がある場合、右のテーブルの一部のデータが除外される可能性があることを意味します。
右の結合は、「私の図書館内のすべての本を、借りた顧客と一緒に尋ねるようなものです。
この画像では、右のテーブル内のすべてのデータが結果セットに含まれていることがわかります。顧客テーブルから重複するデータのみが含まれています。これは、右結合で、左のテーブルの一部のデータが除外される可能性があることを意味します。
外側の結合は、それらの間のつながりに関係なく、「
すべてのローンとすべての本を見せてください。」この画像では、データが重複するかどうかに関係なく、両方のテーブルのすべてのデータが含まれることがわかります。このようなクエリが完了すると、結果に重複しないデータがあり、それらのフィールドはnullに設定されます。
内側の結合は、ローンを持つ顧客のみを尋ねるようなものです。
ここでは、左と右のテーブルの両方からデータが除外される可能性があることがわかります。顧客が本を出していない場合は顧客が表示されず、貸し出されていない場合は本が表示されません!
これは最も一般的なタイプのデータであり、キーワード結合自体を使用する場合のデフォルトの動作です。追加された「内側」という単語は通常必要ありません。とにかく「左」と「右」とはどういう意味ですか? 「左」と「右」をソースの順序に過ぎないと考えることができます。このクエリを見てください:
Joinキーワードを使用する前に、テーブルの顧客に言及したことに注意してください。これは、顧客が私の「左」のテーブルであることを意味します。それについての別の考え方は、参加キーワードの残りのテーブルと、それが右側にあるものを尋ねることです。
1つのテーブルが「左」のテーブルであるという理由だけで、すべてのレコードを選択しているという意味ではありません。これは、ソースオーダーではなく、左結合または右結合の機能です!
左側のテーブルには、選択セクションで列を具体的に選択しない限り、結果セットに最初に列がリストされます。
>
オンキーワードの後のテーブルの順序は重要ではありません。交換すると同じ結果が返されます。十分なレビュー。これらの新しい結合は何ですか?
<span>SELECT * </span><span>FROM customers </span><span>LEFT JOIN books </span><span>ON customers.book_id = books.id </span>
まあ、彼らは「新しい」ものではなく、追加の質問を照会する方法にすぎません。クエリに「Do n't」または「Not」という言葉がある質問に対する答えをどのように見つけますか?
貸し出しの本を持っていないすべての顧客を見せてください。
- 貸し出されていないすべての本を見せてください。
- exclusion を左に結合します
- このグラフィックを見てください。上記の違いが日陰のエリアに結合されていることに注意してください。
これは左結合のように見えますが、「オーバーラップ」データが含まれていません。なぜ?これは、貸し出しの本がない顧客を尋ねるのと同じです。」とは、本なしですべての顧客を選択して、特別割引でニュースレターを送信したいですか?
賢い場合は、同じことをするために、顧客テーブルを0のbook_idを検索するだけであると思うかもしれません。それはこの例では機能しますが、ほとんどの場合はそうではありません。テーブルの設計方法に依存します。クエリは次のようになります:
<span>SELECT * </span><span>FROM customers </span><span>LEFT JOIN books </span><span>ON customers.book_id = books.id </span>
データを除外するか、それをフィルタリングして、ほとんど検索のようです。では、なぜ私たちはbooks.idがヌルであることを探しているのですか?なぜそれはヌルでしょうか?標準の左結合を実行して、返品するデータを確認しましょう。答えがあります: 左に結合してreturn data
id
を含むすべての顧客を見せてください」と尋ねると、ジェフリーはローンの本を持っているかどうかに関係なく顧客であるため、上記のデータが必要になります。これは、この場合の左結合の機能です。 「
ローンに関する本がない顧客を見せてください」という質問をすると、何を探すべきかは完全に理にかなっています。 books.id列にnullが表示される場所で顧客を選択する必要があります(結合すると、「id」という名前の2つの列があるため、id1とラベル付けされます)。 books.idがnullである場所を追加する場合、条項でこれを行います。これで、結果はこれだけにフィルタリングされます:
idexclusion
を右に結合します右結合で同じことをしましょう。誰にも貸し出されていないすべての本を見つけましょう。
通常の右の結合は、貸し出されているかどうかに関係なくすべての本を返します。結果セットは次のようになります。
id
firstName
lastName
book_id
id1
タイトル
1
ジョー
吹く
1
1
スターウォーズ
2
ジェーン
うーん
2
2
ジュラシックパーク
3
ハリー
カラス
2
2
ジュラシックパーク
ヌル
ヌル
ヌル
ヌル
3
小さな女性
ヌル
ヌル
ヌル
ヌル
4
トム・ソーヤー
これは少し違って見えます。まず、ジュラシックパークが2回リストされていることに気付くかもしれません。これは、2人が貸し出しの本を持っているため、データベースが各試合の行を返しているからです。
顧客テーブルからのすべての対応する列は、小さな女性とトム・ソーヤーにとってヌルであることに注意してください。貸し出されていないすべての本を選択したい場合は、where句を使用してcustomers.id列に「null」を見つけるだけです。
結果は予測可能である必要があります。貸し出されていない本のみを入手します
<span>SELECT * </span><span>FROM customers </span><span>LEFT JOIN books </span><span>ON customers.book_id = books.id </span>
firstName
この結合はあまり役に立たないが、本質的にローンのない両方の顧客と、同時に貸し出されていない本のリストを提供する。 このような奇妙な結合は、テーブル間に接続せずに文字通りデータを選択する必要がある場合に役立つ場合があります。おそらく、あなたは孤児のデータを探しているか、あなたが変換したいくつかの古いデータベースで矛盾を探しているでしょう。
実際、この種の結合は非常に奇妙であるため、mysqlでもできないので、外側の結合をサポートしていません。通常のSQLはそうであり、クエリは次のようになります(mysqlではなくmssql):
このクエリの結果は、次のように見えるデータを返します:
id
firstName
<span>SELECT *
</span><span>FROM customers
</span><span>LEFT JOIN books
</span><span>ON customers.book_id = books.id
</span>WHERE books.id IS NULL
lastName
book_id他の考え
実際の値としてnullを持つことができないフィールドに対するWhere句を常に使用する必要があります!値としてnullを持つことができないIDフィールドに対して常にテストしました。私たちの本のテーブルに、nullを許可するISBNフィールドがあると想像してください。そのそのフィールドを使用してnullをテストした場合、それは私たちが望まないかもしれない行を含むでしょう!
Cross Joinと呼ばれる別の結合がありますが、これも奇妙でユニークです。 1人のユーザーを1冊の本に一致させるだけでなく、すべてのユーザーがすべての本と一致したと想像してください!はい、これは、20冊の本と30人の顧客がある場合、クロス参加すると30列のデータが生じることを意味します。これがどのように役立つかの例については、この記事をチェックしてください。MySQLでは、結合、内部結合、およびクロスジャンが構文等価であり、互いに交換できることに注意してください。これは、JoinとInner Joinが同じことを行い、オンキーワードを使用して列を一致させる必要があるためです。クロス結合を使用する場合、テーブルAのすべての行Aを表Bのすべての行に一致させるため、キーワードにはありません。
結論
これらの数人の参加者があなたに理にかなっていることを願っています。何かが他のものと一致しないテーブル間でデータを求めているときはいつでもそれらを使用することを考えてください。
「以前に注文したことのないすべての顧客を見つけてください」
「ブラックリストに載っていないすべての顧客を見つける」- 「販売されていないすべての製品を見つけます」 「本を借りるのではなく、すべての顧客を見つける」
- 「最近歩いていないすべての犬を見つける」。
- 「サポートチケットを送ったことがない従業員を見つける」
- 要約すると、データベースとテーブルの定義方法に応じて、Where句を使用してnull値をチェックする必要がある場合があります。通常の結合動作を使用します。
- だから…クロス結合が必要だったことはありますか?あなたが私たちに伝えたい、または私たちにカバーしたい他の特定のユースケースはありますか?お知らせください!
- SQLが結合することについてよくある質問(FAQ)
SQL結合は、それらの間の関連列に基づいて、2つ以上のテーブルから行を組み合わせるために使用されます。 SQL結合には4つの基本的なタイプがあります。インナー結合、左結合、右結合、フル参加。 Inner Joinは、両方のテーブルに一致する値を持つレコードを返します。左の結合は、左のテーブルからすべてのレコードを返し、右のテーブルから一致したレコードを返します。右の結合は、右のテーブルからすべてのレコードを返し、左のテーブルから一致したレコードを返します。左のテーブルまたは右のテーブルのいずれかにマッチがある場合、完全な結合はすべてのレコードを返します。
以上があなたがよく知っているはずの3つの参加の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

Restapiの設計原則には、リソース定義、URI設計、HTTPメソッドの使用、ステータスコードの使用、バージョンコントロール、およびHATEOASが含まれます。 1。リソースは名詞で表され、階層で維持される必要があります。 2。HTTPメソッドは、GETを使用してリソースを取得するなど、セマンティクスに準拠する必要があります。 3.ステータスコードは、404など、リソースが存在しないことを意味します。 4。バージョン制御は、URIまたはヘッダーを介して実装できます。 5。それに応じてリンクを介してhateoasブーツクライアント操作をブーツします。

PHPでは、Try、Catch、最後にキーワードをスローすることにより、例外処理が達成されます。 1)TRYブロックは、例外をスローする可能性のあるコードを囲みます。 2)キャッチブロックは例外を処理します。 3)最後にブロックは、コードが常に実行されることを保証します。 4)スローは、例外を手動でスローするために使用されます。これらのメカニズムは、コードの堅牢性と保守性を向上させるのに役立ちます。

PHPの匿名クラスの主な機能は、1回限りのオブジェクトを作成することです。 1.匿名クラスでは、名前のないクラスをコードで直接定義することができます。これは、一時的な要件に適しています。 2。クラスを継承したり、インターフェイスを実装して柔軟性を高めることができます。 3.使用時にパフォーマンスとコードの読みやすさに注意し、同じ匿名のクラスを繰り返し定義しないようにします。
