MySQLはなります知っている必要があります - テーブルの結合します

リンク

最も強力なSQL機能の一つは、データ検索クエリ内のリンク(参加)する機能である
テーブル。LinkはSQL SELECT操作の最も重要な使用を行うことができるで、カップリングの十分な理解
とその構文はSQLを学習の非常に重要な部分であります

外部キー(外部キー)はテーブルの外部キーであり、含む別のテーブル
の主キーの値は、2つのテーブル間の関係を定義します

リレーショナルデータベースのスケーラビリティは、非リレーショナルデータベースよりも優れています

スケーラビリティ(スケール)は必ず増え続けるワークロードに適応することができます。提供
優れたスケーラビリティと呼ばれる、よく設計されたアプリケーションやデータベースを(スケールウェル)

なぜ使用リンク

説明したように、より効果的に記憶された分解データテーブルの複数、より容易に処理され、
そしてより高いスケーラビリティを有します。しかし、これらの利点は価格で来ます。
データが複数のテーブルに格納されている場合、どのようにデータを取得するために、単一のSELECT文を使用するには?
答えは、リンクを使用することです。簡単に言えば、カップリングには、選択するために使用するメカニズムです
ので、リンクと呼ばれる関連テーブルの文を、。特別な構文を使用して、複数のテーブルをリンクすることができ返す
出力の設定に戻って、正しい行の実行時間対応テーブルにリンク

参照整合性を維持することが、リンクは物理的な実体ではありません理解することが重要です。別の言い方をすれば
単語を、それが実際のデータベースのテーブルに存在しません。MySQLのに合わせて作られているリンク
の中でクエリの実行中にその存在を確立します

リンクの作成

リンクを作成することは、非常に簡単で、すべてのテーブルのリンクを提供し、彼らがどのように関連しますか

今、FROM句を見てください。この文からの前のSELECT文とは異なり
句リスト2のテーブル、それぞれ、ベンダーと製品。彼らはSELECTということである
の二つのテーブルの名前が声明に参加します。句は句、正しい接合を持つ2つのテーブル
のテーブルに一致するようにMySQLを指示ベンダーや製品テーブルvend_idがvend_id
2列がvendors.vend_idと製品が一致して見ることができます。
Vend_idは、指定されました。のみ与えられたvend_id場合、ので、それは、このの完全修飾列名でなければなりません
MySQLはを指しているか分からない(彼らは2、各テーブルに1つを持っています)

完全修飾された列名の曖昧さを完了しなければならない基準列に表示される場合があり
、完全修飾列名を(ポイントテーブルと列名によって分離されます)。参照が場合
、テーブル名、列名によって限定されるものではなく、あいまいな持って、MySQLはエラーを返します

WHERE句の重要性

句は、関係を確立リンクを使用すると奇妙に思えるが、実際には、非常に充填があることが
理由ポイントは。SELECT文で複数のテーブルをリンクするときに、対応関係がされて、覚えておいてください
ランニングで構築しました。MySQLはデータベーステーブルの定義にどのようにテーブルを示すことができますが存在しません
東西接合。あなたはそれをこの事を自分で行う必要があります。2つのテーブルを結合するときは、実際に行う
最初のテーブルの各行の各ラインと第2のテーブルをペアリングすることです。WHERE句
フィルタ、それだけ行の所定の条件(ここでは、結合条件)に一致するものを含んでいます。いいえ
WHERE句にかかわらず、テーブルと第二テーブルの各行の対の第一の行のそれぞれ、
その論理的に一緒にフィットするかどうか。

テーブル関係から直積(デカルト積)をしない連結状態返される
結果は、デカルト積です。乗じた最初のテーブルの行数になります取り出される行の数
の第二のテーブル内の行数

デカルト積は、私たちが望むものではありません

句がいるかどうか、すべてのリンクは、WHERE句を持つべきであることを保証するために、WHEREを忘れないでください
、MySQLが必要なデータよりもはるかに多くのデータが返されます。同様に、保証すべき
WHERE句の証明書の有効性を。誤ったフィルタは、MySQLのリターンになります
誤ったデータを

時々 、クロスカップリング、クロスカップリングは、デカルトのリターン(クロス結合)と呼ばれて聞く
タイプの子供たちの製品に参加します

内部リンク

我々は2つのテーブル間に基づいて、これまでと呼ばれる同等のカップリングリンク(等価結合)、使用されるように
平等のテストを。このリンクは、内部リンクとして知られています。実際には、そのようなリンクのためにあなたは少し使用することができ
、明示的にリンクの種類を指定するには、マイクロ異なる構文を

前のSELECT文でこのSELECT文で、FROM句ではなく、
同じ。ここでは、2つのテーブル間の関係は、INNERにFROM句の一部である
指定登録しよう。この構文を使用する場合、特定の条件の代わりに、ON句と結合
句が与えられています。WHERE ONに渡されたのと同じ実用的な条件に渡されます。

これはANSI SQL構文を使用すると、INNER JOIN構文を優先しました。また、
句は、リンクを定義するWHEREの使用にもかかわらず、実際に簡単ですが、明示的に使用して
、時々そうすることが影響を与えることができ、結合条件を忘れていないことを確認するために結合構文を
パフォーマンスを。

複数のテーブルを結合

SQLのSELECT文にテーブルの数は無制限に参加することはできません。作成リンク
の基本的なルールは同じです。まず、リストのすべてのテーブルは、テーブル間の関係を定義します


この例では20005の順にアイテムの数を示します。保存されている順序項目
のOrderItemsテーブル。その製品IDによって各製品が格納され、それは製品を意味する
製品のリスト。これらの製品はによって各ベンダーテーブルベンダー、ベンダーIDに結合されている
ベンダIDに格納された各製品を記録します。FROM句ここで表3に記載されており、
WHERE句は、2つの結合条件、およびライン出力フィルタに使用される第3のカップリング条件定義
記事で20005を

ハンドルリンクに、実行時に指定したに関連付けられている各テーブルのMySQLのパフォーマンスの考慮事項。
このプロセスは、非常に資源集約することができ、そのためにリンクしないように注意する必要があり
、不要なテーブルを。より多くのリンクされたテーブル、より深刻なパフォーマンスの低下

サブクエリの実行は、常に複雑なSELECTの最も効率的な操作ではない
方法で、以下のリンクを使用して、同じクエリです

このクエリは、3つのテーブルの使用を必要とするデータを返します。しかし、ここで
私たちは、ネストされたサブクエリでそれらを使用しますが、二つのリンクを使用していません。その
3つのWHERE句の条件があります。カップリング、ポストフィルタ製品TNT2の関連付けられた最初の二つのテーブル
のデータ。

任意のSQL操作を実行するために、実験を行うわかるように、一般的に存在している
複数の方法。いくつかの絶対的に正しいか、絶対に間違ったアプローチ。性能ができる
操作の種類、テーブル内のデータの量によって影響される、または索引キー、およびその他があるかどうか
インパクト条件は。したがって、見つけるために実験を異なるメカニズムを選択する必要がある
最良の特定の状況に適した方法を

联结是SQL中最重要最强大的特性,有效地使用联结需要对关系数据
库设计有基本的了解。本章随着对联结的介绍讲述了关系数据库设计的
一些基本知识,包括等值联结(也称为内部联结)这种最经常使用的联
结形式。

おすすめ

転載: www.cnblogs.com/ygjzs/p/12244244.html