Maison  >  Article  >  base de données  >  Il y a deux pièges à prendre en compte lorsque l'on traite Null dans MySQL.

Il y a deux pièges à prendre en compte lorsque l'on traite Null dans MySQL.

黄舟
黄舟original
2017-02-21 10:29:171101parcourir



Résumé : En tant qu'administrateurs de bases de données MySQL, nous devons souvent lutter contre Null. Mais il y a deux écueils majeurs auxquels vous devez prêter attention.

La base de données MySQL est une base de données open source basée sur des données structurées. Les instructions SQL constituent le langage principal de la base de données MySQL. Cependant, lors de l'exécution d'instructions SQL dans une base de données MySQL, vous devez faire attention à deux pièges.

Piège 1 : Une valeur nulle n'est pas nécessairement nulle

Une valeur nulle est un champ spécial. Dans la base de données MySQL, les valeurs nulles représentent souvent des significations différentes selon les situations. Il s'agit d'une fonctionnalité de la base de données MySQL. Par exemple, dans les champs ordinaires (données de caractères), une valeur nulle représente une valeur nulle. Mais si vous insérez une valeur nulle dans un champ de type TimesTamp, la valeur nulle n'est pas nécessairement nulle. Que se passe-t-il à ce moment-là (comme indiqué ci-dessous) ?

Il y a deux pièges à prendre en compte lorsque l'on traite Null dans MySQL.

J'ai d'abord créé un tableau. Il y a deux champs dans cette table : User_id (son type de données est int), Date (son type de données est TimesTamp). Insérez maintenant un enregistrement dans cette table, dans lequel une valeur NULL est insérée dans le champ Date. Mais lorsque nous interrogeons, le résultat affiche l’heure actuelle à laquelle l’enregistrement a été inséré. Que se passe-t-il ? En fait, c'est un piège souvent rencontré lors de l'exécution d'instructions SQL dans une base de données MySQL : une valeur nulle n'est pas forcément nulle. Lors de l'opération, il est clair qu'une valeur nulle est insérée, mais le résultat final de la requête n'est pas une valeur nulle.

Dans la base de données MySQL, NULL représente une signification particulière pour certains types spéciaux de colonnes, pas seulement une valeur nulle. Pour ces types spéciaux de colonnes, les lecteurs doivent se rappeler de deux choses principales. L'un est le type de données TimesTamp mentionné ci-dessus. Si vous insérez une valeur Null dans une colonne de ce type de données, elle représente l'heure actuelle du système. L'autre est une colonne avec l'attribut auto_increment. Si vous insérez une valeur Null dans la colonne de cet attribut, le système insérera une séquence d'entiers positifs. Et si des données nulles sont insérées dans une colonne d'autres types de données, telles que des données de caractères, une valeur nulle sera insérée.

Piège 2 : La valeur nulle n'est pas nécessairement égale au caractère nul

Dans MySQL, la valeur nulle (Null) est-elle la même que le caractère nul ('') ? . Veuillez jeter un œil à la démonstration ci-dessous.

Il y a deux pièges à prendre en compte lorsque l'on traite Null dans MySQL.

Dans la même table de base de données, insérez simultanément des données de valeur nulle et des données de caractère nul '', puis utilisez l'instruction Select pour interroger. Le résultat final affiché est présenté dans l'image ci-dessus. Évidemment, les résultats affichés sont différents. Il ressort de ce résultat que la valeur nulle n’est pas égale au caractère nul. C'est le deuxième piège rencontré lors de l'exécution d'instructions SQL dans MySQL. Dans le travail réel, les données nulles et les caractères nuls ont souvent des significations différentes. Les administrateurs de bases de données peuvent faire des choix en fonction des besoins réels.


Pour les champs tels que les numéros de téléphone, ils peuvent être définis par défaut sur une valeur nulle (indiquant que le numéro de téléphone de l'autre partie n'est pas du tout connu) ou sur un caractère vide (indiquant que le numéro a été annulé ultérieurement), etc. Puisqu’ils auront des représentations différentes dans la base de données, les administrateurs de bases de données doivent les traiter différemment. L'auteur préfère utiliser des valeurs nulles plutôt que des caractères nuls. Cela est principalement dû au fait qu'il existe plusieurs caractères d'opération spéciaux pour le type de données de valeur nulle. Si un champ contient un caractère nul, la base de données utilise à la place le nom du champ. Au contraire, si une valeur nulle est insérée, NULL est affiché directement. Ceci est également différent de la façon dont les autres bases de données sont affichées.

L’un est les mots-clés IS NULL et IS NOT NULL. Si vous souhaitez déterminer si un champ contient des données avec des valeurs nulles, vous devez utiliser des mots-clés spéciaux. Le premier signifie que ce champ est vide, et le second signifie que ce champ n'est pas vide. Ces deux mots-clés sont très utiles dans les conditions de requête de l'instruction Select. Si vous devez interroger tous les utilisateurs dont les numéros de téléphone sont vides (et qu’ils doivent compléter leurs informations de numéro de téléphone), vous pouvez ajouter le mot-clé is not null aux conditions de requête.

Il y a deux pièges à prendre en compte lorsque l'on traite Null dans MySQL.

La seconde concerne les fonctions statistiques telles que Count, qui ont également des applications spéciales sur les valeurs nulles. Si vous devez maintenant compter le nombre d'utilisateurs avec des numéros de téléphone dans le tableau d'informations sur l'utilisateur, vous pouvez utiliser la fonction de comptage et utiliser le numéro de téléphone comme paramètre. Car pendant le processus statistique, cette fonction ignorera automatiquement les données de valeur nulle. Ce qui est compté à ce moment-là, ce sont les informations utilisateur avec les numéros de téléphone. Si des données avec des caractères nuls sont utilisées, cette fonction les comptera. Comme le montre la figure ci-dessous, en comptant les deux enregistrements qui viennent d'être créés, le résultat des statistiques du système est 1 et non 2. On peut voir que le système ignore automatiquement les données de valeur nulle.

Ce qui précède sont les deux pièges auxquels il faut prêter attention lors de l'utilisation de Null dans MySQL. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


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