ホームページ >データベース >mysql チュートリアル >MySQL は一意の制約と Null 値をどのように処理しますか?
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 サイトの他の関連記事を参照してください。