Contraintes uniques et valeurs nulles dans MySQL
Dans la conception de bases de données, des contraintes uniques sont souvent utilisées pour garantir que chaque ligne d'une table a un valeur distincte pour une colonne ou un ensemble de colonnes spécifique. Cependant, la question se pose : MySQL gère-t-il les valeurs nulles différemment lors de l'application de ces contraintes ?
Valeurs nulles et contraintes uniques dans MySQL
Contrairement à certains autres systèmes de gestion de bases de données relationnelles ( SGBDR), MySQL autorise plusieurs valeurs nulles dans une colonne qui a une contrainte unique. Cela signifie que, même si la contrainte d'unicité s'applique, MySQL n'empêchera pas plusieurs lignes de contenir des valeurs nulles pour la colonne spécifiée.
Pour illustrer ce comportement, considérons l'instruction MySQL suivante :
CREATE TABLE table1 (x INT NULL UNIQUE);
Dans cet exemple, la colonne « x » est déclarée comme un entier qui accepte les valeurs nulles, et une contrainte unique est appliquée à la colonne. L'exécution des instructions d'insertion suivantes :
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);
produira le résultat suivant :
SELECT * FROM table1;
x NULL NULL 1
Comme vous pouvez le voir, MySQL autorise plusieurs valeurs nulles dans la colonne « x » malgré la contrainte unique. Ce comportement diffère de certains autres SGBDR, tels que SQL Server 2005 et versions antérieures, qui restreignent plusieurs valeurs nulles dans les colonnes avec des contraintes uniques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!