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. データの追加
(1) ソフトウェア クラス 1 の生徒をすべて削除します
3. 接続クエリ: 2 つ以上のテーブルに同じ意味を持つフィールドがある場合、これらのフィールドを使用して、異なるテーブルに対して接続クエリを実行できます。 1. 相互接続: 返される結果は、接続されている 2 つのテーブルのすべてのデータ行のデカルト積です。つまり、クエリ条件を満たす最初のテーブルのデータ行の数にデータの数を乗算して返されます。クエリ条件を満たす 2 番目のテーブルの行数。構文形式は次のとおりです。 Select * from Table 1 クロス結合 Table 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 オブジェクトにカプセル化する方法 |
以上がMySQLデータベースのマルチテーブル操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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

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