ホームページ データベース mysql チュートリアル MySQLデータベースのマルチテーブル操作

MySQLデータベースのマルチテーブル操作

Jun 11, 2018 pm 11:15 PM
mysql

1. 外部キー

1. 外部キーとは: 参照される列には、主キー制約または一意制約が必要です。外部キーは、2 つのテーブル内のデータ間の接続を確立および強化するために使用されます。


Student テーブルの gid は生徒のクラス ID であり、成績テーブルの主キー ID です。その後、gid をテーブル Student への外部キーとして使用できます。参照されるテーブル、つまりテーブル Grade がマスター テーブル、外部キーを参照するテーブル、つまり Student テーブルがスレーブ テーブルであり、2 つのテーブルはマスターとスレーブの関係にあります。 Student テーブルは GID を使用して成績テーブルの情報を接続することができ、これにより 2 つのテーブルのデータ間の接続が確立されます。

外部キー列は参照列に存在する値のみを挿入でき、参照列の参照値は削除できません。これにより、データの 参照整合性 が保証されます。

2. テーブルに外部キー制約を追加します

2 つのテーブルのデータを実際に接続したい場合は、テーブルに外部キー制約を追加する必要があります。テーブルに外部キー制約を追加するための構文形式は次のとおりです。 alter table テーブル名 add constraint FK_ID 外部キー (外部キー フィールド名) 参照 外部キー テーブル名 (主キー フィールド名)

追加テーブルへの外部キー 制約する場合、次のような注意が必要な点があります:

(1) 外部キーの確立に使用されるテーブルは InnoDB タイプである必要があり、一時テーブルであってはなりません。 MySQL では InnoDB タイプのテーブルのみが外部キーをサポートしているため、

(2) 外部キー名を定義するときに、制約 'FK_ID' や制約 'FK_ID' などの引用符を追加することはできませんが、どちらも間違っています。

メインテーブルのデータを削除するときは、スレーブテーブルのデータも削除する必要があります。そうしないと、大量の無意味なジャンクデータがパラメータ化されてしまいます。 Mysql は、外部キーを作成するときに on delete 句または on update 句を追加して、ガベージ データの生成を回避する方法をデータベースに指示できます。具体的な構文形式は次のとおりです。

Alter table テーブル名 addconstraint 外部キー (外部キー フィールド名) は、外部テーブル名 (主キー フィールド名) を参照します。 }]

[on update{cascade | set null |strict}]

ステートメント内の各パラメーターの具体的な説明は次の表のとおりです。

機能説明カスケード削除されたキー値との参照関係を含むすべてのレコードを削除nullを設定削除されたキー値との参照関係を含むすべてのレコードを変更し、 null 値に置き換えます (null ではないとマークされているフィールドには使用できません) アクションなしアクションなし制限メインテーブルの削除を拒否または、外部キー関連の列を変更します。 (これはデフォルト設定であり、on delete 句と on update 句が定義されていない場合の最も安全な設定です)

3. 外部キー制約の削除: テーブルテーブル名の変更 外部キーの削除


2. アソシエーションテーブルの操作

(1) 多対-one :

many

対1のテーブル関係では、外部キーはmany側で構築される必要があります。そうしないと、データの冗長性が発生します。 (2) 多対多: 生徒テーブルやコーススケジュールなど。通常、この関係を実現するには、中間テーブル (結合テーブルと呼ばれる) を定義する必要があります。このテーブルには、コース スケジュールと学生テーブルをそれぞれ参照する 2 つの外部キーがあります。多対多のリレーションシップでは、テーブルを接続する 2 つの外部キーは反復可能ですが、2 つの外部キー間の関係は反復できないため、2 つの外部キーはテーブルの外部キーと同じであることに注意してください。ユニオンの主キー。

(3) 1 対 1: まず、マスターとスレーブの関係を区別する必要があります。たとえば、人間はマスター テーブル、ID カードはマスター テーブルの存在を意味します。スレーブ テーブルと外部キーがスレーブ テーブルに確立されます。この方法で保存された情報は通常テーブルに配置されるため、この関係はデータベースでは一般的ではないことに注意してください。実際の開発では、1 対 1 の対応関係は次のような場面で適用できます。

Ø 多くの列を含むテーブルを分割します。

Ø セキュリティ上の理由からテーブルの一部を分離します。

Ø テーブルを削除することで簡単に削除できる一時データを保存します。

2. データの追加

上記のステートメントが正常に実行されると、2 つのテーブル間のデータが関連付けられます。ソフトウェア クラス 1 の学生をクエリする場合は、まずソフトウェア クラス 1 の ID をクエリし、次にこの ID に基づいて学生テーブル内の学生をクエリする必要があります。


3. データの削除: 成績表と生徒表の関係上、参照列の参照値は削除できません。したがって、ソフトウェア クラスを削除する場合は、必ず最初にクラス内のすべての生徒を削除してから、クラスを削除してください。

(1) ソフトウェア クラス 1 の生徒をすべて削除します

(2) 成績表で、ソフトウェア クラス 1 を削除します

ソフトウェア クラス 2 を直接削除すると、エラーが発生します:

必須 実際の状況では、「ソフトウェア クラス 1」を削除する場合、「ソフトウェア クラス 1 の学生」を削除する必要はないことに注意してください。学生テーブルの gid=1 を gid から null に変更できます。メインテーブルのカラムは削除されていないため、テーブルを参照することで削除できます。ただし、テーブルの作成時に gid フィールドに非 null 制約があるため、この例では学生のみを削除できます。

3. 接続クエリ: 2 つ以上のテーブルに同じ意味を持つフィールドがある場合、これらのフィールドを使用して、異なるテーブルに対して接続クエリを実行できます。

1. 相互接続: 返される結果は、接続されている 2 つのテーブルのすべてのデータ行のデカルト積です。つまり、クエリ条件を満たす最初のテーブルのデータ行の数にデータの数を乗算して返されます。クエリ条件を満たす 2 番目のテーブルの行数。構文形式は次のとおりです。

Select * from Table 1 クロス結合 Table 2;

からわかるように、実際の研究開発では、この要件はまれであり、代わりに特定の条件が使用されることに注意してください。目的に応じてデータをクエリします。

2. 内部接続: 単純接続または自然接続とも呼ばれます。比較演算子を使用して 2 つのテーブルのデータを比較し、結合条件に一致するデータ行をリストし、それらを結合して新しいレコードを作成します。構文形式は次のとおりです:

テーブル 1 からクエリ フィールドを選択 [内部] テーブル 1 でテーブル 2 を結合します。リレーショナル フィールド = テーブル 2。リレーショナル フィールド

where 条件ステートメントを使用して同じ機能を実現することもできます。

これら 2 つのメソッドのクエリ結果は同じですが、inner join は内部結合ステートメントであり、where は条件判定ステートメントであり、where の直後に他の条件を追加できますが、inner join ステートメントは追加できません。

#結合クエリ内で、関係する 2 つのテーブルが同じテーブルである場合、この種のクエリは自己結合クエリと呼ばれます。自己結合は、相互に接続されているテーブルが物理的には同じテーブルですが、論理的には 2 つのテーブルに分割されることを意味します。たとえば、Wang Hon の部門にどの従業員がいるかをクエリする場合、次のようになります。自己結合クエリを使用します。

3. 外部結合: キーワードの左側のテーブルを座標、右側の単語を右テーブルと呼びます

テーブル 1 からチェックするフィールドを選択します left|right [outer ] テーブル 2 を結合

テーブル 1 上。リレーショナル フィールド = テーブル 2。リレーショナル フィールド where 条件

(1) 左結合 (左結合): 結合条件を満たす左テーブルのすべてのレコードと右テーブルのレコードを返します。 。

左のテーブルのレコードが右のテーブルに存在しない場合、右のテーブルでは空として表示されます。

(2) 右結合: 右テーブルのすべてのレコードと、結合条件を満たす左テーブルのレコードを返します。

4. 複合条件結合クエリ

4. サブクエリ: 別のクエリ ステートメント内にネストされたクエリを指します。これは、select、select...into ステートメント、insert...into およびその他のステートメントにネストできます。クエリ ステートメントを実行するときは、最初にサブクエリ内のステートメントが実行され、次に返された結果が外側のクエリのフィルター条件として使用されます。通常、サブクエリでは、in、exists、any、および all 演算子を使用できます。

(1) With in Keyword サブクエリ: 内側のクエリ ステートメントは 1 つのデータ列のみを返し、このデータ列の値は外側のクエリ ステートメントによる比較演算に使用されます。

例: 年齢が20歳の従業員がいる部署をクエリします。

(2) キーワードが存在するサブクエリ: キーワードの後のパラメータは、テストとして機能し、戻り値が の場合にのみ True または False を返します。 True の場合、外側のクエリが実行されます。

次の例では、サブクエリの戻り結果が True であるため、外側のクエリ ステートメントが実行されます。つまり、すべての部門情報がクエリされます。なお、in キーワードよりもexists キーワードの方が効率が良いため、実際の開発では、特にデータ量が多い場合にはexists キーワードを使用することをお勧めします。

(3) 任意のキーワードを含むサブクエリ: any は、内部サブクエリのいずれか 1 つが存在する限り、サブクエリの戻り値リストを比較する式を作成できることを意味します。条件を比較し、結果を外部クエリ条件として返します。

(4) all キーワードを使用したサブクエリ: all キーワードを使用したサブクエリによって返される結果がすべての内部クエリ条件を同時に満たさなければならない点を除けば、any と似ています。

(5) 比較演算子を使用したサブクエリ

この記事では、MySQL データベースの複数テーブルの操作について説明します。さらに関連する内容については、PHP 中国語 Web サイトを参照してください。

関連する推奨事項:

$ セレクター - DOM を jquery オブジェクトにカプセル化する方法

ネイティブ JS コンポーネント開発 シンプルなカルーセル チャートのサンプル コード

css3 アニメーション ナビゲーション バー 3D

以上がMySQLデータベースのマルチテーブル操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

SQLが行を削除した後にデータを回復する方法 SQLが行を削除した後にデータを回復する方法 Apr 09, 2025 pm 12:21 PM

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。

See all articles