mysqlステートメントを使用して結合を作成する方法

巴扎黑
リリース: 2017-05-10 13:24:46
オリジナル
1020 人が閲覧しました

結合を使用する理由

前述したように、データを複数のテーブルに分割すると、ストレージの効率が向上し、処理が容易になり、スケーラビリティが向上します。しかし、これらの利点には代償が伴います。

データが複数のテーブルに保存されている場合、単一の SELECT ステートメントでデータを取得するにはどうすればよいですか?

その答えは、結合を使用することです。簡単に言えば、結合は SELECT ステートメントでテーブルを関連付けるために使用されるメカニズムであり、そのためその名前が付けられています。特別な構文を使用すると、複数のテーブルを結合して一連の出力を返すことができ、結合により実行時にテーブル内の正しい行が関連付けられます。

参照整合性の維持 結合は物理的なエンティティではないことを理解することが重要です。つまり、実際のデータベーステーブルには存在しません。結合は MySQL によってオンデマンドで作成され、クエリの実行中に存在します。

リレーショナル テーブルを使用する場合は、正当なデータのみをリレーショナル列に挿入することが非常に重要です。ここの例に戻ると、不正なサプライヤー ID (つまり、vendors テーブルに存在しない) を持つサプライヤーによって製造された製品を products テーブルに挿入すると、これらの製品はサプライヤーに関連付けられていないため、アクセスできなくなります。 。

これが起こらないようにするために、製品テーブルのサプライヤー ID 列 (つまり、ベンダー テーブルに表示されるサプライヤー) で正当な値のみを許可するように MySQL に指示できます。

これは参照整合性の維持であり、テーブルの定義で主キーと外部キーを指定することで実現されます。


結合を作成する

結合の作成は非常に簡単で、結合するすべてのテーブルとその関係を指定するだけです。以下の例を見てください:

入力:

select vend_name,prod_name,prod_price from vendors,products where vendors.vend_id= products.vend_id order by vend_name,prod_name;
ログイン後にコピー

出力:

mysqlステートメントを使用して結合を作成する方法

mysqlステートメントを使用して結合を作成する方法

分析: このコードを調べてみましょう。 SELECT ステートメントは、これまでのすべてのステートメントと同様に、取得する列を指定します。ここでの最大の違いは、指定された 2 つの列 ( prod_name と prod_price ) が 1 つのテーブルにあり、もう一方の列 ( Vend_name ) が別のテーブルにあることです。

それでは、FROM 句を見てみましょう。前の SELECT ステートメントとは異なり、このステートメントの FROM 句には、ベンダーと製品という 2 つのテーブルがリストされます。これらは、この SELECT ステートメントによって接続された 2 つのテーブルの名前です。 2 つのテーブルは WHERE 句で適切に結合されており、MySQL に対して、vendors テーブルの Vend_id と Products テーブルの Vend_id を照合するよう指示します。

一致する 2 つの列が、vendors.vend_id と products.vend_id によって指定されていることがわかります。ここでこの完全修飾カラム名が必要になるのは、vend_id のみが指定されている場合、MySQL はどれを参照すればよいのかわからないためです (各テーブルに 1 つずつ、合計 2 つあります)。

完全修飾列名 参照される列があいまいな場合は、完全修飾列名 (ドットで区切られたテーブル名と列名) を使用する必要があります。テーブル名で修飾されていないあいまいなカラム名を参照すると、MySQL はエラーを返します。

【関連おすすめ】

1. mysqlサブクエリとは何ですか?サブクエリを使用してフィルタリングするにはどうすればよいですか?

2.mysql はサブクエリを使用して計算フィールドを作成します

3.mysql の結合とリレーショナル テーブルとは何ですか?

4.MySQLのWHERE句の重要性と複数のテーブルを結合する方法

以上がmysqlステートメントを使用して結合を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!