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
Libérer: 2024-12-22 19:13:10
original
212 Les gens l'ont consulté

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;
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal