Êtes-vous familier avec la clause WHERE SQL et comment elle peut être utilisée pour filtrer les données dans SQL Server? Si oui, vous avez peut-être rencontré l’instruction WHERE IS NOT NULL. Mais savez-vous à quel point cette instruction peut être puissante pour filtrer des données spécifiques?
Dans ce tutoriel SQL, nous plongerons dans les détails de l’opérateur WHERE IS NOT NULL dans SQL Server et explorerons quelques exemples concrets de son utilisation. Nous couvrirons son utilisation dans les instructions SELECT, INSERT, UPDATE et DELETE.
Comprendre NULL, NOT NULL, IS NULL et IS NOT NULL
Avant de nous plonger dans l’instruction WHERE IS NOT NULL, examinons rapidement les différences entre NULL, NOT NULL, IS NULL et IS NOT NULL dans SQL Server.
NULL représente l’absence de valeur dans une table de base de données. Il est différent de la valeur de chaîne “NULL” elle-même. Lorsqu’un tuple contient le mot “NULL”, il n’est plus considéré comme une valeur nulle. NULL indique qu’une cellule (tuple) est vide, mais qu’un espace est réservé pour une valeur réelle à insérer ultérieurement.
Voici un aperçu des quatre paramètres NULL:
- La condition SQL NULL est utilisée pour tester une valeur NULL. Elle renvoie TRUE si une valeur NULL est trouvée et FALSE sinon.
- La condition SQL NOT NULL est utilisée pour tester une valeur non NULL. Elle renvoie TRUE si une valeur non NULL est trouvée et FALSE sinon.
- La condition SQL IS NULL est utilisée pour tester une valeur NULL. Elle renvoie TRUE si une valeur NULL est trouvée et FALSE sinon.
- La condition SQL IS NOT NULL est utilisée pour tester une valeur non NULL. Elle renvoie TRUE si une valeur non NULL est trouvée et FALSE sinon.
Utilisation de WHERE IS NOT NULL dans SQL Server
Maintenant, explorons comment utiliser l’instruction WHERE IS NOT NULL dans SQL Server.
Prérequis
Pour exécuter les exemples de code ci-dessous, nous devons créer une base de données et une table d’exemple avec lesquelles travailler. Si vous avez déjà une base de données d’exemple, vous pouvez passer à la partie 2.
Partie 1: Création d’une base de données d’exemple
Voici la syntaxe SQL de base pour créer une base de données d’exemple:
USE master;
GO
CREATE DATABASE MaBaseDeTest;
GO
Exécutez le script ci-dessus pour créer une base de données de test si vous n’en avez pas déjà une.
Partie 2: Création d’une table de test
Créons une table de test appelée “MaTableEmployé” avec des données d’exemple:
USE MaBaseDeTest;
GO
IF OBJECT_ID('MaTableEmployé') IS NOT NULL
DROP TABLE MaTableEmployé;
GO
CREATE TABLE MaTableEmployé (
colID INT IDENTITY NOT NULL,
prénom VARCHAR(20),
nom VARCHAR(20),
dateEmbauche DATE,
email VARCHAR(50),
promouvoir VARCHAR(10)
);
GO
Ensuite, nous insérerons des données SQL génériques dans la table, en définissant intentionnellement certains tuples comme NULL:
INSERT INTO MaTableEmployé (prénom, nom, dateEmbauche, email, promouvoir)
VALUES
('Anne', 'Rubio', '2011-08-05', '[email protected]', NULL),
('Jordyn', 'Russell', '2014-04-14', NULL, NULL),
('Brandi', 'Martin', '2013-09-06', '[email protected]', NULL),
('Whitney', 'Sara', '2014-05-25', NULL, NULL),
('Philip', 'Sanz', '2014-03-02', '[email protected]', NULL),
('Maria', 'Barnes', '2013-12-29', '[email protected]', NULL),
('Lydia', 'Weber', '2013-11-29', '[email protected]', NULL),
('Kayla', 'Alexander', '2012-04-25', NULL, NULL),
('Troy', 'Raman', '2014-01-07', NULL, NULL),
('George', 'Patel', '2013-07-09', '[email protected]', NULL);
GO
Maintenant, vérifions que la table est correctement remplie:
SELECT * FROM MaTableEmployé;
GO
Remarquez que certaines lignes ont des valeurs NULL dans la colonne email, ce qui indique que l’employé n’a pas fourni d’adresse e-mail.
Utilisation de WHERE IS NOT NULL dans l’instruction SELECT
Si vous souhaitez sélectionner toutes les lignes d’une table où une colonne spécifique n’est pas NULL, vous pouvez utiliser la contrainte WHERE IS NOT NULL avec l’instruction SELECT. Par exemple, pour récupérer toutes les lignes de MaTableEmployé où la colonne email n’est pas NULL, vous pouvez utiliser la requête SQL suivante:
SELECT * FROM MaTableEmployé
WHERE email IS NOT NULL;
GO
Cela renverra toutes les lignes de MaTableEmployé où la colonne email n’est pas NULL.
Vous pouvez également utiliser plusieurs contraintes dans une seule requête. Par exemple, la requête suivante renvoie toutes les lignes avec une date d’embauche antérieure à 2013 et la colonne email n’est pas NULL:
SELECT * FROM MaTableEmployé
WHERE email IS NOT NULL
AND dateEmbauche < '2013';
GO
Utilisation de WHERE IS NOT NULL dans l’instruction UPDATE
La contrainte WHERE IS NOT NULL peut être utilisée avec l’instruction UPDATE pour mettre à jour uniquement les enregistrements qui ne sont pas NULL. Par exemple, mettons à jour la colonne “promouvoir” à “Oui” pour tous les employés qui ont fourni leur adresse e-mail:
UPDATE MaTableEmployé
SET promouvoir = 'Oui'
WHERE email IS NOT NULL;
GO
Maintenant, interrogeons la table des employés pour voir quelles lignes ont été mises à jour:
SELECT * FROM MaTableEmployé;
GO
Utilisation de WHERE IS NOT NULL dans l’instruction INSERT
Lors de l’insertion de données dans une table, la contrainte WHERE IS NOT NULL peut être utilisée pour s’assurer que tous les champs requis sont renseignés. Copions toutes les lignes et colonnes de MaTableEmployé vers une nouvelle table appelée “empEmail” en utilisant l’instruction WHERE IS NOT NULL:
IF OBJECT_ID('empEmail') IS NOT NULL
DROP TABLE empEmail;
GO
SELECT prénom, nom, dateEmbauche, email, promouvoir
INTO empEmail
FROM MaTableEmployé
WHERE email IS NOT NULL;
GO
Une requête SELECT permettra de vérifier que la nouvelle table a été remplie uniquement avec les lignes où l’adresse e-mail de l’employé n’est pas NULL:
SELECT * FROM empEmail;
GO
Utilisation de WHERE IS NOT NULL dans l’instruction DELETE
La contrainte WHERE IS NOT NULL peut également être utilisée avec l’instruction DELETE pour supprimer uniquement les enregistrements qui ne contiennent pas de valeur dans une colonne spécifiée. Par exemple, supprimons les enregistrements de MaTableEmployé où la colonne email n’est pas NULL:
DELETE FROM MaTableEmployé
WHERE email IS NOT NULL;
GO
Une requête SELECT sur MaTableEmployé montrera les résultats mis à jour:
SELECT * FROM MaTableEmployé;
GO
Conclusion
La clause WHERE dans SQL Server est un outil puissant pour filtrer les données d’une table de base de données. En utilisant l’instruction WHERE IS NOT NULL, vous pouvez affiner davantage vos requêtes pour exclure les lignes avec des valeurs NULL dans des colonnes spécifiques. Cela peut être utile dans divers scénarios, tels que la sélection, la mise à jour, l’insertion ou la suppression de données en fonction de l’absence de valeurs NULL.
Maintenant que vous avez une meilleure compréhension de l’instruction WHERE IS NOT NULL, vous pouvez exploiter sa puissance pour manipuler les données de manière plus efficace dans SQL Server.
Article Dernière mise à jour: 2023-03-13