検索

外部キーとは何ですか?

データベースでは、テーブルの列はフィールドまたはテーブルの属性と呼ばれます。たとえば、電子商取引 Web サイトのデータベースでは、ユーザーの携帯電話番号が「user」(ユーザー) という名前のテーブルに格納され、ユーザーの注文が「order」(注文) middle という名前の別のテーブルに格納されます。これら 2 つのテーブルの間には 1 対多の関係があります。つまり、1 人のユーザーが複数の注文を持つことができ、1 つの注文は 1 人のユーザーのみに属します。

外部キーはリレーショナル データベース用語で、2 つのテーブルを結合する制約です。外部キー制約により、別のテーブルのデータを参照するときに、他のテーブルの値と一致する値を使用してインスタンスを作成する必要があります。

外部キーの利点は、データ テーブル間の関係の整合性が保証されることです。これは、2 つのテーブル間に外部キー制約がある場合、主テーブルのレコードが削除または更新されると、それに依存するすべての外部キーが自動的に削除または更新されることを意味します。

外部キーを設定するにはどうすればよいですか?

外部キーを設定するには、使用している MySQL エンジンが外部キーをサポートしていることを確認する必要があります。現在、MySQL は MyISAM、InnoDB、NDB エンジンをサポートしています。このうち InnoDB は最も広く使用されているエンジンであり、外部キーをサポートする唯一の MySQL エンジンです。

外部キー制約を使用する場合は、テーブルが InnoDB エンジンを使用していることを確認してください。次のコマンドを実行して、テーブルのエンジン タイプを確認できます:

SHOW TABLE STATUS FROM database_name WHERE Name='table_name';

ここで、database_name はデータベース名、table_name はテーブルの名前です。エンジンの種類を確認したい。

テーブルで外部キー制約をサポートしないエンジンを使用している場合は、InnoDB エンジンに変更して次のコマンドを実行する必要があります。

ALTER TABLE table_name ENGINE=InnoDB;

次に、テーブルと外部キー制約を追加します。対応するコード例は次のとおりです。

CREATE TABLE order (
    order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    date_added DATETIME,
    FOREIGN KEY (user_id) REFERENCES user(user_id)
);

この例では、注文 ID (order_id)、ユーザー ID (user_id)、および日付 (date_added) フィールドを含む「order」(order) テーブルを作成します。 。次に、新しい注文を追加する前にユーザー ID が存在することを確認するために、「Orders」テーブルに外部キー制約を追加しました。

この制約式では、user_id は現在のテーブルのフィールド名、user は依存テーブルの名前、user_id は依存テーブルのフィールド名。さらに、FOREIGN KEY キーワードは外部キー制約を定義するために使用されます。

MySQL では、外部キー制約を CASCADESET NULL、または RESTRICT として定義することもできます。これらのオプションの説明は次のとおりです。

  • CASCADE: 親が指定されている場合、子も削除または更新されます。

  • SET NULL: 親項目を指定すると、子項目の値が削除または Null に更新されます。

  • RESTRICT: 親が指定されている場合、子の削除または更新を禁止します。

以下は、CASCADESET NULL、および RESTRICT を選択した完全なコード例です:

-- 创建父表
CREATE TABLE user (
    user_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL
);

-- 创建子表,并定义外键约束
CREATE TABLE order (
    order_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    date_added DATETIME,
    FOREIGN KEY (user_id) REFERENCES user(user_id)
        ON DELETE CASCADE
        ON UPDATE SET NULL
);

この例では、Orders テーブルに 2 つのオプションを追加しました。 ON DELETE CASCADE オプションは、ユーザー レコードが削除されると、そのユーザーに関連付けられているすべての注文レコードも削除されることを示します。 ON UPDATE SET NULL オプションは、ユーザー レコードを更新するときに、注文レコードのユーザー ID が Null 値に設定されることを示します。

外部キーを使用するにはどうすればよいですか?

データベース プログラミングでは、いくつかの基本的なコマンドを使用して、外部キーを含むテーブルをクエリできます。以下にサンプル コードを示します。

-- 查找所有订单
SELECT * FROM order;

-- 查找用户John的所有订单
SELECT * FROM order WHERE user_id=(SELECT user_id FROM user WHERE username='John');

どちらの例でも、外部キー制約を含む "Orders" テーブルをクエリします。 2 番目の例では、ネストされたクエリを使用して、特定のユーザーの注文レコードをエクスポートしました。

変更操作を実行するときは、その変更が外部キー制約に違反していないことを確認してください。変更された値が外部キー制約を満たさない場合、エラーが発生します。この問題が発生した場合は、外部キー制約を満たすように適切なデータを変更します。以下に例を示します。

-- 修改订单,将John的所有订单修改为Jane的订单
UPDATE order SET user_id=(SELECT user_id FROM user WHERE username='Jane') WHERE user_id=(SELECT user_id FROM user WHERE username='John');

参考までに、「John」ユーザーに属するすべての注文を「Jane」ユーザーに属する注文に変更します。これを行う前に、ユーザー「Jane」がすでに存在していることを確認してください。

以上がmysqlで外部キーを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
InnoDBバッファープールとそのパフォーマンスの重要性を説明してください。InnoDBバッファープールとそのパフォーマンスの重要性を説明してください。Apr 19, 2025 am 12:24 AM

Innodbbufferpoolは、データをキャッシュしてページをインデックス作成することにより、ディスクI/Oを削減し、データベースのパフォーマンスを改善します。その作業原則には次のものが含まれます。1。データ読み取り:Bufferpoolのデータを読む。 2。データの書き込み:データを変更した後、bufferpoolに書き込み、定期的にディスクに更新します。 3.キャッシュ管理:LRUアルゴリズムを使用して、キャッシュページを管理します。 4.読みメカニズム:隣接するデータページを事前にロードします。 BufferPoolのサイジングと複数のインスタンスを使用することにより、データベースのパフォーマンスを最適化できます。

MySQL対その他のプログラミング言語:比較MySQL対その他のプログラミング言語:比較Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

MySQLの学習:新しいユーザー向けの段階的なガイドMySQLの学習:新しいユーザー向けの段階的なガイドApr 19, 2025 am 12:19 AM

MySQLは、データストレージ、管理、分析に適した強力なオープンソースデータベース管理システムであるため、学習する価値があります。 1)MySQLは、SQLを使用してデータを操作するリレーショナルデータベースであり、構造化されたデータ管理に適しています。 2)SQL言語はMySQLと対話するための鍵であり、CRUD操作をサポートします。 3)MySQLの作業原則には、クライアント/サーバーアーキテクチャ、ストレージエンジン、クエリオプティマイザーが含まれます。 4)基本的な使用には、データベースとテーブルの作成が含まれ、高度な使用にはJoinを使用してテーブルの参加が含まれます。 5)一般的なエラーには、構文エラーと許可の問題が含まれ、デバッグスキルには、構文のチェックと説明コマンドの使用が含まれます。 6)パフォーマンスの最適化には、インデックスの使用、SQLステートメントの最適化、およびデータベースの定期的なメンテナンスが含まれます。

MySQL:初心者が習得するための必須スキルMySQL:初心者が習得するための必須スキルApr 18, 2025 am 12:24 AM

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQL:構造化データとリレーショナルデータベースMySQL:構造化データとリレーショナルデータベースApr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQL:説明されている主要な機能と機能MySQL:説明されている主要な機能と機能Apr 18, 2025 am 12:17 AM

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLの目的:MySQLデータベースとの対話SQLの目的:MySQLデータベースとの対話Apr 18, 2025 am 12:12 AM

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

初心者向けのMySQL:データベース管理を開始します初心者向けのMySQL:データベース管理を開始しますApr 18, 2025 am 12:10 AM

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

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

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境