キーテイクアウト
- この記事では、左の結合、右結合、内側結合、および外部の結合の使用について説明します。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>ここでWhere句が含まれています。 Where句があるときはいつでも、
データを除外するか、それをフィルタリングして、ほとんど検索のようです。では、なぜ私たちは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>id
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 サイトの他の関連記事を参照してください。

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

PHPは死んでいません。 1)PHPコミュニティは、パフォーマンスとセキュリティの問題を積極的に解決し、PHP7.xはパフォーマンスを向上させます。 2)PHPは最新のWeb開発に適しており、大規模なWebサイトで広く使用されています。 3)PHPは学習しやすく、サーバーはうまく機能しますが、タイプシステムは静的言語ほど厳格ではありません。 4)PHPは、コンテンツ管理とeコマースの分野で依然として重要であり、エコシステムは進化し続けています。 5)OpcacheとAPCを介してパフォーマンスを最適化し、OOPと設計パターンを使用してコードの品質を向上させます。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトの要件に依存します。 1)PHPは、Web開発に適しており、学習しやすく、豊富なコミュニティリソースですが、構文は十分に近代的ではなく、パフォーマンスとセキュリティに注意を払う必要があります。 2)Pythonは、簡潔な構文と学習が簡単なデータサイエンスと機械学習に適していますが、実行速度とメモリ管理にはボトルネックがあります。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。
