ホームページ  >  記事  >  データベース  >  MySQL で外部キーを使用してデータの整合性を維持するにはどうすればよいですか?

MySQL で外部キーを使用してデータの整合性を維持するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-08-02 08:09:091388ブラウズ

MySQL で外部キーを使用してデータの整合性を維持するにはどうすればよいですか?

はじめに:
データベースでは、データの整合性が非常に重要です。外部キーを使用すると、データベース内の関連テーブル間のデータの一貫性と整合性を確保できます。この記事では、外部キーを使用して MySQL でデータの整合性を維持する方法を紹介します。

  1. テーブルと関連付けの作成:

まず、2 つのテーブルを作成し、それらを関連付ける必要があります。 2 つのテーブルがあり、1 つは「orders」テーブル、もう 1 つは「customers」テーブルであるとします。各注文を顧客に関連付ける必要があり、この関連付けを維持するために外部キーを使用します。

「customers」テーブルを作成する SQL ステートメントは次のとおりです。

CREATE TABLE customers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    email VARCHAR(100)
);

「orders」テーブルを作成する SQL ステートメントは次のとおりです。

CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    order_date DATE,
    amount DECIMAL(10,2),
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

「orders」テーブルの上に「customer_id」という列を追加し、外部キー制約で「customers」テーブルの「id」列を使用しました。

  1. データの挿入:

次に、「customers」テーブルと「orders」テーブルにデータを挿入します。いくつかのサンプル データの SQL ステートメントを次に示します。

-- 插入customers表格的数据 --
INSERT INTO customers (name, email) VALUES ('张三', 'zhangsan@example.com');
INSERT INTO customers (name, email) VALUES ('李四', 'lisi@example.com');
INSERT INTO customers (name, email) VALUES ('王五', 'wangwu@example.com');

-- 插入orders表格的数据 --
INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-01', 100.00, 1);
INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-02', 200.00, 2);
INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-03', 300.00, 3);

上記の SQL ステートメントでは、外部キーに関連付けられた "customers" テーブルの "id" 値を使用して注文データを挿入しています。

  1. 外部キーの制約と保守:

次に、外部キーの制約と保守をテストしましょう。次のステートメントを実行しようとします:

-- 尝试在orders表格中插入无效的customer_id值 --
INSERT INTO orders (order_date, amount, customer_id) VALUES ('2021-01-04', 400.00, 4);

外部キー制約が存在するため、この挿入操作は失敗し、エラー メッセージが表示されます。

MySQL では、外部キーを「ON DELETE」および「ON UPDATE」オプションで定義して、関連付けられたテーブルの行が削除または更新されたときに実行するアクションを指定することもできます。以下に例を示します。

-- 创建orders表格时定义外键的ON DELETE和ON UPDATE选项 --
CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    order_date DATE,
    amount DECIMAL(10,2),
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE ON UPDATE CASCADE
);

上の例では、外部キーの「ON DELETE CASCADE」オプションと「ON UPDATE CASCADE」オプションを設定しています。これは、「customers」テーブルの行が削除または更新されると、それに関連付けられている「orders」テーブル内のすべての行もそれに応じて削除または更新されます。

概要:

外部キーを使用すると、データベース内の関連テーブル間のデータの一貫性と整合性を確保できます。 MySQL では、「FOREIGN KEY」キーワードを使用して外部キーを作成し、データの挿入または更新時に制約を受けることができます。さらに、「ON DELETE」および「ON UPDATE」オプションを使用して、外部キーによって関連付けられた行が関連テーブル内で削除または更新されたときに実行するアクションを定義できます。

上記は、MySQL で外部キーを使用してデータの整合性を維持する方法についての紹介です。読んでくれてありがとう!

以上がMySQL で外部キーを使用してデータの整合性を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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