MySQL/NULL
Description.
De nombreux langages de programmation ont deux valeurs logiques : codice_1 et codice_2. SQL en possède une troisième pour les valeurs inconnues : codice_3. 
codice_3 étant une absence de valeur, il peut être assigné à des colonnes codice_5, codice_6 ou autres. Toutefois une colonne déclarée codice_7 ne pourra pas en contenir.
 INSERT into Singer
 (F_Name, L_Name, Birth_place, Language) 
 values 
 ("", "Homer", NULL, "Greek"),
 ("", "Sting", NULL, "English"),
 ("Jonny", "Five", NULL, "Binary");
codice_3 ne doit pas être entouré d'apostrophes ou de guillemets, ou bien il désignera une chaine de caractères contenant son nom.
L'exemple ci-dessous peut sélectionner des chanteurs avec prénom de taille zéro (""), par exemple pour Sting et Homer. Il vérifie si la date de naissance est nulle :
 SELECT * from Singer WHERE Birth_place IS NULL;
 SELECT * from Singer WHERE Birth_place IS NOT NULL;
 SELECT * from Singer WHERE isNull(Birth_place)
codice_9 ne tient pas compte des codice_3 :
 select count(Birth_place) from Singer;
 0
Par ailleurs, SUM(NULL) renvoie NULL.
Les opérations normales (comparaisons, expressions...) renvoient codice_3 si au moins un des éléments comparés est codice_3 :
 SELECT (NULL=NULL) OR (NULL<>NULL) OR (NOT NULL) OR (1<NULL) OR (1>NULL) OR (1 + NULL) OR (1 LIKE NULL)
Deux valeurs inconnues ne sont donc pas égales (codice_3=codice_3 renvoie codice_3).
Gérer NULL.
La fonction codice_16 peut simplifier le travail avec codice_3.
Par exemple, pour éviter de montrer les valeurs nulles en les traitant comme des zéros :
 SELECT COALESCE(colname,0) from table where COALESCE(colname,0) > 1;
Dans un champ date, les traiter comme celle actuelle :
 ORDER BY (COALESCE(TO_DAYS(date),TO_DAYS(CURDATE()))-TO_DAYS(CURDATE()))
 EXP(SUM(LOG(COALESCE("*the field you want to multiply*",1))) 
La fonction codice_18 prévient des problèmes de calcul logarithmique d'une valeur nulle, et peut être optionnelle selon les circonstances.
 SELECT t4.gene_name, COALESCE(g2d.score,0), 
 COALESCE(dgp.score,0), COALESCE(pocus.score,0) 
 FROM t4 
 LEFT JOIN g2d ON t4.gene_name=g2d.gene_name 
 LEFT JOIN dgp ON t4.gene_name=dgp.gene_name 
 LEFT JOIN pocus ON t4.gene_name=pocus.gene_name;
codice_19 dans un codice_20 fait de codice_3 n'importe quelle valeur désirée.
 IFNULL(expr1,expr2)
Si "expr1" n'est pas nulle, codice_19 renvoie "expr1", sinon "expr2". 
codice_19 renvoie une chaine ou un nombre, selon le contexte :
 mysql> SELECT IFNULL(1,0);
 -> 1
 mysql> SELECT IFNULL(NULL,10);
 -> 10
 mysql> SELECT IFNULL(1/0,10);
 -> 10
 mysql> SELECT IFNULL(1/0,'yes');
 -> 'yes'
Attention aux résultats peu prévisibles, par exemple la requête suivante efface toutes les entrées :
 DELETE FROM ma_table1 WHERE field > NULL -- fonctionne aussi avec une fonction renvoyant NULL
Pour obtenir les codice_3 en dernier lors d'un codice_25 :
 SELECT * FROM ma_table1 ORDER BY ISNULL(field), field [ ASC | DESC ]
Enfin, pour déterminer les champs d'une table qui ne peuvent pas être nuls :
SELECT *
FROM `information_schema`.`COLUMNS`
WHERE IS_NULLABLE = 'NO' AND TABLE_NAME = 'ma_table1'