MySQL の一意制約と Null 値
データベース設計では、テーブル内のすべての行に必ず固有の制約が含まれるようにするために、一意制約がよく使用されます。特定の列または列セットの個別の値。ただし、次のような疑問が生じます: これらの制約を適用するとき、MySQL は null 値を異なる方法で処理しますか?
MySQL の Null 値と一意の制約
他のリレーショナル データベース管理システムとは異なります ( RDBMS)、MySQL では、一意制約のあるカラム内で複数の null 値を許可します。これは、一意制約が適用されても、MySQL は、指定されたカラムの複数の行に null 値が含まれることを妨げないことを意味します。
この動作を説明するために、次の MySQL ステートメントを考えてみましょう。
CREATE TABLE table1 (x INT NULL UNIQUE);
この例では、「x」列が null 値を受け入れる整数として宣言され、一意制約が列に適用されます。次の挿入ステートメントを実行すると:
INSERT INTO table1 VALUES (1); INSERT INTO table1 VALUES (1); -- Duplicate entry '1' for key 'x' INSERT INTO table1 VALUES (NULL); INSERT INTO table1 VALUES (NULL);
は次の結果を生成します:
SELECT * FROM table1;
x NULL NULL 1
ご覧のとおり、MySQL では、一意の制約。この動作は、一意の制約で列内の複数の null 値を制限する SQL Server 2005 以前などの他の RDBMS とは異なります。
以上がMySQL は固有の制約を持つ Null 値をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。