ホームページ >データベース >mysql チュートリアル >MySQL は一意の制約と Null 値をどのように処理しますか?

MySQL は一意の制約と Null 値をどのように処理しますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 19:13:10158ブラウズ

How Does MySQL Handle Unique Constraints and Null Values?

MySQL の一意制約と Null 値

データベース設計では、一意制約を使用して、データベース内の特定の列または列のセットがテーブルには個別の値のみが含まれます。ただし、一意制約のある列では NULL 値を許可することが望ましい場合があります。 MySQL では、これは実際に可能です。

MySQL では、一意制約を使用して、複数の行が 1 つの列に null 値を持つことができます。これは、制約に違反せずに列に重複した null 値を含めることができることを意味します。

この動作を説明するために、次の例を考えてみましょう。

CREATE TABLE table1 (x INT NULL UNIQUE);
INSERT table1 VALUES (1);
INSERT table1 VALUES (1);   -- Duplicate entry '1' for key 'x'
INSERT table1 VALUES (NULL);
INSERT table1 VALUES (NULL);
SELECT * FROM table1;

上記のステートメントを実行すると、 MySQL はテーブルに 3 行を挿入します。 「x」の値が一意 (1) であるため、最初の挿入ステートメントは成功します。 2 番目の挿入ステートメントは、'x' (1) の値がすでに存在しており、一意性制約に違反しているため失敗します。ただし、「x」の値が null であるため、3 番目と 4 番目の挿入ステートメントは成功します。これは、MySQL の一意制約で許可されています。

SELECT ステートメントの結果には、次の行が表示されます。

x
NULL
NULL
1

この動作は MySQL に固有であることに注意することが重要です。 SQL Server 2005 以前などの他のデータベースでは、一意制約のある列に複数の null 値を含めることはできません。通常、このようなシナリオでは単一の null 値のみが許可されます。

以上がMySQL は一意の制約と Null 値をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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