Opérateurs de comparaison du langage T-SQL les plus courants avec des exemples.
Voici une liste avec les opérateurs de comparaison et de logique couramment utilisés en langage T-SQL, avec des exemples de requêtes. Les exemples exposés ici vont des plus simples au plus complexes. De plus le code de création des tables d’exemple, ainsi que le résultat des requêtes sont disponibles à chaque section.
Table of Contents
Préparer les tables utilisées par les opérateurs T-SQL
Les 4 tables utilisées ici sont les suivantes, elles sont volontairement basiques pour illustrer facilement les cas de figures.
- Clients
- Commandes
- Produits
- Employés
Créer la structure des tables en T-SQL
Exécuter ce code depuis une fenêtre SSMS pour ajouter les tables à votre base de données.
CREATE TABLE Clients ( IDClient INT, Nom VARCHAR(255), Pays VARCHAR(255) ); CREATE TABLE Commandes ( IDCommande INT, IDClient INT, DateCommande DATE ); CREATE TABLE Produits ( IDProduit INT, NomProduit VARCHAR(255), Prix DECIMAL(10,2), Poids DECIMAL(10,2) ); CREATE TABLE Employes ( IDEmploye INT, NomEmploye VARCHAR(255), Age INT, Departement VARCHAR(255) );
Insérer des données dans chaque table
Copier et exécuter ces lignes pour insérer quelques lignes dans chacune des 4 tables.
INSERT INTO Clients (IDClient, Nom, Pays) VALUES (1, 'John Smith', 'USA'), (2, 'Jane Doe', 'Canada'), (3, 'Bob Johnson', 'USA'); INSERT INTO Commandes (IDCommande, IDClient, DateCommande) VALUES (1, 1, '2022-01-01'), (2, 1, '2022-02-01'), (3, 2, '2022-03-01'), (4, 3, '2022-04-01'); INSERT INTO Produits (IDProduit, NomProduit, Prix, Poids) VALUES (1, 'Ordinateur', 1000, 20), (2, 'Imprimante', 500, 10), (3, 'Ecran', 300, 15); INSERT INTO Employes (IDEmploye, NomEmploye, Age, Departement) VALUES (1, 'John Smith', 35, 'IT'), (2, 'Jane Doe', 30, 'Ventes'), (3, 'Bob Johnson', 40, 'IT');
Une fois les tables créées et alimentées avec quelques données d’exemple, passons à la pratique avec des cas concrets. La liste des opérateurs de comparaison T-SQL abordés dans ce tutoriel est la suivante:
- Egal à : =
- Supérieur à : >
- Supérieur ou égal à : <=
- Inférieur : <
- Inférieur ou égal : <=
- Et : AND
- Ou : OR
- Comme : LIKE
- Contient : CONTAINS
1. Opérateur de comparaison égal à : =
L’opérateur de comparaison « = », égal en Français, permet de comparer si deux valeurs sont égales.
Exemple simple
SELECT * FROM Clients WHERE IDClient = 1;
Le résultat est une ligne unique avec le client numéro 1, soit John Smith.
IDClient | Nom | Pays |
---|---|---|
1 | John Smith | USA |
Exemple complexe
SELECT COUNT(*) FROM Commandes WHERE DateCommande = ( SELECT MAX(DateCommande) FROM Commandes );
La requête retourne 1.
Cette requête retourne le nombre de commandes qui ont la date de commande la plus récente. Elle utilise l’opérateur de comparaison « = » pour comparer la date de chaque commande avec la date de commande la plus récente, qui est retournée par la sous-requête:
SELECT MAX(DateCommande) FROM Commandes
2. Les opérateurs de comparaison SQL Server différent de : <> ou !=
L’opérateur de comparaison « <> » ou « != », appelé différent de en Français, permet de comparer si deux valeurs sont différentes.
Exemple simple
Ce premier exemple simple affiche les clients dont le pas est différent de USA.
SELECT * FROM Clients WHERE Pays <> 'USA';
Le résultat est donc le seul client avec Canada comme pays.
IDClient | Nom | Pays |
---|---|---|
2 | Jane Doe | Canada |
Exemple complexe
Cette requête retourne les clients qui sont dans un pays autre que les États-Unis et qui ont passé une commande comprenant au moins un produit dont le prix est supérieur à 500. Elle utilise l’opérateur de comparaison « <> » pour filtrer les clients qui ne sont pas dans les États-Unis.
Mais aussi l’opérateur « AND » pour combiner ce filtre avec le filtre sur les produits coûteux. De plus, une jointure T-SQL est nécessaire pour lier les tables Clients, Commandes et Produits.
SELECT * FROM Clients c JOIN Commandes o ON c.IDClient = o.IDClient JOIN Produits p ON o.IDCommande = p.IDProduit WHERE c.Pays <> 'USA' AND p.Prix > 500;
3. Opérateurs de comparaison T-SQL supérieur ou inférieur à : > ou <
L’opérateur de comparaison > ou <, c’est à dire supérieur ou inférieur, de manière stricte, permet de comparer si une valeur est supérieure à une autre.
Exemple simple
SELECT * FROM Produits WHERE Prix > 500;
Le résultat est le seul produit avec un prix supérieur à 500. soit l’ordinateur.
IDProduit | NomProduit | Prix | Poids |
---|---|---|---|
1 | Ordinateur | 1000 | 20 |
Exemple complexe
Cette requête retourne les noms des clients qui ont passé plus d’une commande. Elle utilise l’opérateur de comparaison > pour filtrer les groupes de clients ayant plus d’une commande, en utilisant la clause HAVING COUNT(*) > 1.
SELECT c.Nom, COUNT(*) as 'Nombre de commandes' FROM Clients c JOIN Commandes o ON c.IDClient = o.IDClient GROUP BY c.Nom HAVING COUNT(*) > 1;
Le résultat est le suivant, soit le client John Smith avec 2 commandes passées.
Nom | Nombre de commandes |
---|---|
John Smith | 2 |
Pour écrire une requête T-SQL et utiliser l’opérateur de comparaison inférieur à, utiliser la même logique, mais à l’envers.
4. Opérateurs de comparaison SQL Server supérieur ou égal à et inférieur ou égal à
Les opérateurs de comparaison supérieur ou égal et inférieur ou égal, soit >= ou <= permettent de comparer si une valeur est supérieure ou égale à une autre, ou inférieure ou égale à une autre, respectivement.
Exemple simple
SELECT * FROM Employes WHERE Age >= 35;
IDEmploye | NomEmploye | Age | Departement |
---|---|---|---|
1 | John Smith | 35 | IT |
3 | Bob Johnson | 40 | IT |
Exemple complexe
Cette requête retourne le prix moyen des produits qui ont un poids supérieur ou égal à 15 ou un prix supérieur ou égal à 500. Elle utilise l’opérateur de comparaison « >= » (supérieur ou égal à) pour filtrer les produits en fonction de leur poids et de leur prix, en utilisant la clause WHERE Poids >= 15 OR Prix >= 500.
SELECT AVG(Prix) as 'Prix moyen' FROM Produits WHERE Poids >= 15 OR Prix >= 500;
Le résultat est le suivant:
Prix moyen |
800 |
Pour écrire une requête avec l’opérateur de comparaison inférieur ou égal à, utiliser la même logique.
5. Opérateur T-SQL de logique AND
L’opérateur de logique AND, ET en Français, permet de combiner plusieurs conditions de filtrage dans la clause WHERE
d’une requête. Les lignes qui ne satisfont pas à toutes les conditions sont exclues du résultat.
Exemple de requête avec l’opérateur AND
SELECT * FROM Employes WHERE Age > 35 AND Departement = 'IT';
Cette requête retourne les employés qui ont plus de 35 ans et qui travaillent dans le département IT. Elle utilise l’opérateur de logique « AND » pour combiner les conditions sur l’âge et le département, en utilisant la clause WHERE Age > 35 AND Departement = ‘IT’.
IDEmploye | NomEmploye | Age | Departement |
---|---|---|---|
1 | John Smith | 35 | IT |
3 | Bob Johnson | 40 | IT |
6. Opérateur logique T-SQL OR
L’opérateur de logique « OR » permet de sélectionner les lignes qui satisfont à au moins une des conditions de filtrage dans la clause WHERE
d’une requête.
Exemple de requête simple
SELECT * FROM Produits WHERE Prix < 500 OR Poids > 15;
IDProduit | NomProduit | Prix | Poids |
---|---|---|---|
1 | Ordinateur | 1000 | 20 |
3 | Ecran | 300 | 15 |
Exemple complexe
Cette requête retourne les noms des clients qui ont passé moins de 2 commandes ou plus de 3 commandes. Elle utilise l’opérateur de logique « OR » pour combiner les conditions sur le nombre de commandes, en utilisant la clause HAVING COUNT(*) < 2 OR COUNT(*) > 3.
SELECT c.Nom, COUNT(*) as 'Nombre de commandes' FROM Clients c JOIN Commandes o ON c.IDClient = o.IDClient GROUP BY c.Nom HAVING COUNT(*) < 2 OR COUNT(*) > 3;
Nom | Nombre de commandes |
---|---|
Jane Doe | 1 |
Bob Johnson | 1 |
7. Opérateur logique pour comparer des chaînes de caractères avec LIKE
L’opérateur de chaîne de caractères « LIKE » permet de filtrer les lignes qui contiennent une chaîne de caractères spécifique. On peut utiliser des caractères génériques tels que « % » (qui correspond à n’importe quel nombre de caractères) et « _ » (qui correspond à un seul caractère) dans la chaîne de caractères à rechercher.
Il est possible d’utiliser les expressions régulières disponibles avec SQL Server dans la clause LIKE pour les recherches complexes.
Exemple simple
SELECT * FROM Clients WHERE Nom LIKE 'J%';
Cette requête retourne les clients dont le nom commence par « J ». Elle utilise l’opérateur de chaîne de caractères « LIKE » et le caractère générique « % » pour filtrer les clients en fonction de leur nom, en utilisant la clause WHERE Nom LIKE 'J%'
.
IDClient | Nom | Pays |
---|---|---|
1 | John Smith | USA |
Exemple complexe
SELECT * FROM Clients WHERE Nom LIKE 'J%' OR Pays LIKE 'C%';
Cette requête retourne les clients dont le nom commence par « J » ou qui habitent dans un pays dont le nom commence par « C ». Elle utilise l’opérateur de chaîne de caractères « LIKE » et les caractères génériques « % » et « _ » pour filtrer les clients en fonction de leur nom et de leur pays, en utilisant la clause WHERE Nom LIKE 'J%' OR Pays LIKE 'C%'
.
Le résultat est le suivant:
DClient | Nom | Pays |
---|---|---|
1 | John Smith | USA |
2 | Jane Doe | Canada |
8. Une fonction logique SQL Server pour rechercher du texte avec CONTAINS
La fonction de chaîne de caractères « CONTAINS » permet de filtrer les lignes qui contiennent un mot ou une expression spécifiques. Elle fait partie des opérateurs de comparaison T-SQL qui sont souvent utilisés avec une colonne de type « texte » indexée. Comme une colonne « Description » dans une table de produits.
Exemple simple
SELECT * FROM Produits WHERE CONTAINS(Description, 'écran');
IDProduit | NomProduit | Prix | Poids | Description |
---|---|---|---|---|
3 | Ecran | 300 | 15 | Un grand écran de qualité supérieure |
Exemple complexe
Cette requête retourne les produits qui contiennent le mot « écran » dans leur description et qui ont un prix supérieur à 500. Elle utilise la fonction de chaîne de caractères « CONTAINS » et l’opérateur de comparaison « > » pour filtrer les produits en fonction de leur description et de leur prix, en utilisant la clause WHERE CONTAINS(Description, ‘écran’) AND Prix > 500.
SELECT * FROM Produits WHERE CONTAINS(Description, 'écran') AND Prix > 500;
IDProduit | NomProduit | Prix | Poids | Description |
---|---|---|---|---|
1 | Ordinateur | 1000 | 20 | Un ordinateur performant avec un écran de qualité supérieure |
Conclusion sur les opérateurs de comparaison SQL Server
Les opérateurs de comparaison T-SQL sont des outils utiles pour filtrer les lignes d’une table en fonction de différentes conditions. Ils peuvent être utilisés avec des opérateurs de logique tels que « AND » et « OR » pour combiner plusieurs conditions de filtrage.
Il est important de bien choisir les opérateurs de comparaison et de logique pour obtenir le résultat souhaité, tout en veillant à éviter les erreurs de syntaxe. Il est également recommandé de tester la performance des requêtes en utilisant des opérateurs différents pour s’assurer que la requête s’exécute de manière efficace.
Il est aussi conseillé de créer des index sur les colonnes qui sont souvent utilisées dans les conditions de filtrage, afin d’améliorer la performance des requêtes. Cependant, il est important de ne pas surcharger la base de données avec trop d’index, car cela peut également ralentir les performances. En général, il est important de bien planifier les requêtes et de choisir les bons opérateurs pour obtenir le résultat souhaité de manière efficace.
Hello, comment avoir vos cours en pdf et tutoriels ?
Salut, les cours ne sont pas disponibles en PDF pour le moment. Des cours complets et en vidéos sur certains sujets seront bientôt disponibles (Q4 2023).
En attendant vous pouvez enregistrer la page en favori.