Maison >base de données >tutoriel mysql >Comment MySQL gère-t-il les contraintes uniques et les valeurs nulles ?

Comment MySQL gère-t-il les contraintes uniques et les valeurs nulles ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 19:13:10206parcourir

How Does MySQL Handle Unique Constraints and Null Values?

Contraintes uniques et valeurs nulles dans MySQL

Dans la conception de bases de données, des contraintes uniques sont utilisées pour garantir qu'une certaine colonne ou un certain ensemble de colonnes dans un tableau ne contient que des valeurs distinctes. Cependant, il est parfois souhaitable d'autoriser les valeurs nulles dans une colonne ayant une contrainte unique. Dans MySQL, cela est en effet possible.

MySQL permet à plusieurs lignes d'avoir des valeurs nulles dans une colonne avec une contrainte unique. Cela signifie qu'il est possible d'avoir des valeurs nulles en double dans la colonne sans violer la contrainte.

Pour illustrer ce comportement, considérons l'exemple suivant :

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;

Lorsque vous exécutez les instructions ci-dessus, MySQL insère trois lignes dans le tableau. La première instruction d'insertion réussit car la valeur de « x » est unique (1). La deuxième instruction d'insertion échoue car la valeur de « x » (1) existe déjà et viole la contrainte d'unicité. Cependant, les troisième et quatrième instructions d'insertion réussissent car la valeur de « x » est nulle, ce qui est autorisé sous une contrainte unique dans MySQL.

Le résultat de l'instruction SELECT affichera les lignes suivantes :

x
NULL
NULL
1

Il est important de noter que ce comportement est spécifique à MySQL. D'autres bases de données, telles que SQL Server 2005 ou version antérieure, n'autorisent pas plusieurs valeurs nulles dans une colonne avec une contrainte unique. Ils n'autorisent généralement qu'une seule valeur nulle dans de tels scénarios.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn