Comment la base de données MySQL gère-t-elle les requêtes de valeur non nulle ? MySQL n'est pas une instruction de sélection nulle

Base de données MySQLComment gérer les requêtes de valeur non nulle ?MySQL n'est pas null instruction select

Gestion des nulls dans MySQL

Nous savons déjà que MySQL utilise la commande SQL SELECT et la clause WHERE pour lire les données dans la table de données, mais lorsque le champ de condition de requête fourni est NULL, la commande peut ne pas fonctionner correctement.

Pour gérer cette situation, MySQL propose trois opérateurs majeurs :

  • EST NULL :Cet opérateur renvoie true lorsque la valeur de la colonne est NULL.
  • EST NON NULLE:L'opérateur renvoie true lorsque la valeur de la colonne n'est pas NULL.
  • <=> :  L'opérateur de comparaison (contrairement à l'opérateur =) renvoie vrai lorsque les deux valeurs comparées sont NULL.

Les opérations de comparaison conditionnelle sur NULL sont spéciales.Vous ne pouvez pas utiliser = NULL ou ! =NULL trouve les valeurs NULL dans la colonne.

Dans MySQL, la comparaison d'une valeur NULL avec n'importe quelle autre valeur (même NULL) renvoie toujours false, c'est-à-dire que NULL = NULL renvoie false.

NULL est géré dans MySQL à l'aide des opérateurs IS NULL et IS NOT NULL.


Utiliser la valeur NULL dans l'invite de commande

Dans l'exemple suivant, la table chenweiliang_test_tbl dans la base de données chenweiliang est définie pour contenir deux colonnes, chenweiliang_author et chenweiliang_count, et les valeurs NULL sont définies pour être insérées dans chenweiliang_count.

Exemple

Essayez les exemples suivants :

Créer une table de données chenweiliang_test_tbl

root @ host #mysql -u root -p password; 输入密码:*******
 mysql > 使用chenweiliang ;
数据库改变了mysql > create table chenweiliang_test_tbl 
 - > (
 - > chenweiliang_author varchar (40 )NOT NULL , - > chenweiliang_count INT 
 - > );
查询OK ,0 行受影响(0.05 秒)mysql >
 
 
INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' chenweiliang ' ,20 );
mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' 陈沩亮博客' ,NULL );
mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values ( ' Google ' ,NULL );
mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' FK ' ,20 );
 
mysql > SELECT * from chenweiliang_test_tbl ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | chenweiliang | 20 | | 陈沩亮博客| NULL | | Google | NULL | | FK | 20 | + --------------- + -------------- +
 4 行中集合(0.01 秒) 

Dans l'exemple suivant, vous pouvez voir = et ! L'opérateur = ne fonctionne pas :

mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count = NULL ;
空集(0.00 秒)mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count != NULL ;
空集(0.01 秒)

Pour savoir si la colonne chenweiliang_test_tbl dans la table de données est NULL, vous devez utiliserEST NULLetEST NON NULLE, l'exemple suivant :

mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count IS NULL ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | 陈沩亮博客| NULL | | Google | NULL | + --------------- + -------------- +
 2 行中的组(0.01 秒)的MySQL > SELECT * 从chenweiliang_test_tbl WHERE chenweiliang_count IS NOT 空值 
 
 ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | chenweiliang | 20 | | FK | 20 | + --------------- + -------------- +
 2 行中的组(0.01 秒) 

Gestion des valeurs NULL avec le script PHP

Dans le script PHP, vous pouvez utiliser l'instruction if...else pour déterminer si la variable est vide et générer une instruction conditionnelle correspondante.

Dans l'exemple suivant, PHP définit la variable $chenweiliang_count puis utilise cette variable pour comparer avec le champ chenweiliang_count dans la table de données :

Test ORDRE PAR MySQL :

<?
php $ dbhost = ' localhost:3306 ' ; // mysql服务器主机地址

$ dbuser = ' root ' ; // mysql用户名
$ dbpass = ' 123456 ' ; // mysql用户名密码
$ conn = mysqli_connect ($ dbhost ,$ dbuser ,$ dbpass );
如果(!$ conn ){ die (' 连接失败:' 。mysqli_error ($ conn ));
} // 设置编码,防止中文乱码

mysqli_query ($ conn ,“ set names utf8 ” );
 
if (isset ($ chenweiliang_count )){ $ sql = “ SELECT chenweiliang_author,chenweiliang_count FROM chenweiliang_test_tbl WHER chenweiliang_count = $ chenweiliang_count ” ;
} else { $ sql = “ SELECT chenweiliang_author,chenweiliang_count FROM chenweiliang_test_tbl WHER chenweiliang_count IS NULL ” ;
} mysqli_select_db ($ conn ,'


 chenweiliang ' );
$ retval = mysqli_query ($ conn ,$ sql );
if (!$ retval ){ die (' 无法读取数据:' 。mysqli_error ($ conn ));
} echo ' <h2>陈沩亮博客IS NULL测试<h2> ' ;
echo ' <table border =“1”> <tr> <td>作者</ td> <td>登陆次数</ td> </ tr> ' ;

 $ retval ,MYSQL_ASSOC )){ echo “ <tr> ” 。
 “ <td> {$ row ['chenweiliang_author']} </ td> ” 。
 “ <td> {$ row ['chenweiliang_count']} </ td> ” 。
 “ </ tr> ” ;
} echo ' </ table> ' ;
mysqli_close ($ conn );
?>

 

J'espère que le blog de Chen Weiliang ( https://www.chenweiliang.com/ ) partagé "Comment la base de données MySQL gère-t-elle les requêtes de valeur non nulle ? MySQL n'est pas une instruction de sélection nulle" pour vous aider.

Bienvenue à partager le lien de cet article :https://www.chenweiliang.com/cwl-491.html

Bienvenue sur la chaîne Telegram du blog de Chen Weiliang pour obtenir les dernières mises à jour !

🔔 Soyez le premier à obtenir le précieux « Guide d'utilisation de l'outil d'IA de marketing de contenu ChatGPT » dans le répertoire supérieur de la chaîne ! 🌟
📚 Ce guide contient une valeur énorme, 🌟C'est une opportunité rare, ne la manquez pas ! ⏰⌛💨
Partagez et likez si vous aimez !
Vos partages et likes sont notre motivation continue !

 

发表 评论

Votre adresse email ne sera pas publiée. 项 已 用 * 标注

到 顶部