mysqlのマルチテーブルクエリの詳しい説明

王林
リリース: 2019-08-23 15:48:41
転載
3707 人が閲覧しました

まず、問題の説明をわかりやすくするために、emp (従業員情報) と dept (従業員の部門情報) という 2 つのテーブルを作成します。データは次のとおりです。では、単一のテーブル クエリ メソッドを共有しましたが、実際のアプリケーションでは、クエリするデータが同じテーブル内にあるのではなく、異なるテーブルから取得される可能性があります。複数テーブルのクエリに条件が追加されていない場合、得られる結果はデカルト積と呼ばれます。たとえば、従業員名、従業員の給与、部門名を検索します。

mysqlのマルチテーブルクエリの詳しい説明

結果は次のようになることがわかります。最初のテーブルから最初のレコードを選択し、それを 2 番目のテーブルのすべてのレコードと結合してから、次のようにします。最初のテーブルの 2 番目のレコードを取得し、2 番目のテーブルのすべてのレコードと結合しますが、この結果には意味がありません。必要なのは、emp.deptno = dept.deptno フィールドを持つレコードです。 mysqlのマルチテーブルクエリの詳しい説明

mysqlのマルチテーブルクエリの詳しい説明自己結合

自己結合とは、同じテーブル内でクエリを結合することを指します

表示従業員の上司 FORD リーダーの名前

mysqlのマルチテーブルクエリの詳しい説明サブクエリ

サブクエリとは、他の SQL ステートメントに埋め込まれた選択ステートメントを指し、ネストされた Inquire とも呼ばれます。 。

単一行サブクエリ: サブクエリのクエリ結果は 1 行のみです。

SMITH と同じ部門の従業員を表示します

mysqlのマルチテーブルクエリの詳しい説明複数行のサブクエリ (in、all、any)

: 複数のレコードを返すサブクエリ

同じ職に就いている役人の名前、仕事、給与、部門をクエリします。 10の最高の部門番号としてのジョブですが、No。10の情報は含まれていません

mysqlのマルチテーブルクエリの詳しい説明

#給与が給与よりも高い名前、給与、部門数を表示します部門番号 30 のすべての従業員

mysqlのマルチテーブルクエリの詳しい説明

部門番号 30 の従業員の給与よりも高い給与を持つ従業員の名前、給与、部門番号を表示します

#

複数列サブクエリ: クエリは、複数列のデータのサブクエリ ステートメントを返します。

SMITH 自身を除く、SMITH と同じ部門および役職を持つ従業員をクエリします

mysqlのマルチテーブルクエリの詳しい説明

from 句でサブクエリを使用する

#所属部門の平均給与よりも高い従業員情報を表示する

mysqlのマルチテーブルクエリの詳しい説明各部門で最も給与が高い人の名前、役職、給与を検索

#各部門の情報(部門名、番号、住所)と従業員数を表示mysqlのマルチテーブルクエリの詳しい説明

mysqlのマルチテーブルクエリの詳しい説明#ここで使用できる方法は 2 つありますが、データが多い場合、マルチテーブルよりも from サブクエリの効率が高いことが確認されています。クエリ。

テーブル内の重複レコードを削除します

テーブル tt に重複データがあることがわかっています

空のテーブル tmp_tt を作成します。空のテーブルの構造はテーブル tt と同じです; テーブル tmp_tt を tt のように作成します;

tt テーブルを区別して空のテーブルにデータをインポートします; tmp_tt に挿入 select unique * from tt ;

元のテーブル ttdrop table tt を削除します;

tmp_tt の名前を ttalter テーブル tmp_tt に変更します tt の名前を変更します;

クエリをマージします

実際のアプリケーションでは、複数の選択をマージするために、結果を実行するには、union および Union all set 演算子

1 を使用できます。union 演算子は、2 つの結果の和集合を取得し、重複を自動的に削除するために使用されます。

mysqlのマルチテーブルクエリの詳しい説明2. Union all は Union と似ていますが、重複を自動的に削除しません。例: or に類似


mysqlのマルチテーブルクエリの詳しい説明外部キー

外部キーは、マスター テーブルとスレーブ テーブル間の関係を定義します。制約は主にスレーブ テーブルに定義され、マスター テーブルには主キーまたは一意のキーが必要です。外部キーが定義されている場合、外部キー列のデータはメイン テーブルの列に存在するか、NULL である必要があります。 例: メイン テーブル クラス、スレーブ テーブル stu を作成します。


mysqlのマルチテーブルクエリの詳しい説明

上記の図から、プライマリ クラスがkey を null にすることはできませんが、外部キーは null にすることができ、外部キー内のデータはメイン テーブルに存在しない限り存在できません。 mysqlのマルチテーブルクエリの詳しい説明

その他の関連する質問については、PHP 中国語 Web サイトを参照してください:

mysql ビデオ チュートリアル

以上がmysqlのマルチテーブルクエリの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート