- La clause SQL nous aide à récupérer un ensemble ou des groupes d'enregistrements de la table.
- La clause SQL nous aide à spécifier une condition sur les colonnes ou les enregistrements d'une table.
Les différentes clauses disponibles dans le langage de requête structuré sont les suivantes :
- CLAUSE OÙ
- GROUPER PAR CLAUSE
- CLAUSE D'AVOIR
- COMMANDE PAR CLAUSE
Voyons chaque clause une par une avec un exemple. Nous utiliserons la base de données MySQL pour écrire les requêtes dans les exemples.
1. CLAUSE OÙ
Une clause WHERE dans SQL est utilisée avec la requête SELECT, qui est l'une des commandes du langage de manipulation de données. Les clauses WHERE peuvent être utilisées pour limiter le nombre de lignes à afficher dans le jeu de résultats, elles aident généralement à filtrer les enregistrements. Il renvoie uniquement les requêtes qui remplissent les conditions spécifiques de la clause WHERE. La clause WHERE est utilisée dans les instructions SELECT, UPDATE, DELETE, etc.
Clause WHERE avec requête SELECT
Le symbole astérisque est utilisé avec une clause WHERE dans une requête SELECT pour récupérer toutes les valeurs de colonne pour chaque enregistrement d'une table.
Syntaxe de la clause Where avec une requête de sélection pour récupérer toutes les valeurs de colonne pour chaque enregistrement d'une table :
SELECT * FROM TABLENAME WHERE CONDITION;
Si, selon les exigences, nous souhaitons uniquement récupérer des colonnes sélectives, nous utiliserons la syntaxe ci-dessous :
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Considérons la table des employés avec les données suivantes :
E_ID | Nom | Salaire | Ville | Désignation | Date d'adhésion | Âge |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombay | Chef de projet | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Ingénieur système | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaïpur | Directeur | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombay | Testeurs de logiciels | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Chef de projet | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Directeur | 2019-07-17 | 26 |
7 | La voix de Baviskar | 55000 | Jaïpur | Ingénieur système | 2021-10-10 | 24 |
8 | Il y a Sheik | 45000 | Puné | Ingénieur logiciel | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Puné | Testeurs de logiciels | 2021-01-01 | 25 |
dix | Mayuri Patel | 60000 | Bombay | Chef de projet | 2020-10-02 | 24 |
onze | Simran Khanna | 45500 | Kolhapur | HEURE | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Développeur de logiciels | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HEURE | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Chef de projet | 2017-11-10 | 25 |
quinze | Mohini Shah | 38000 | Puné | Développeur de logiciels | 2019-03-05 | vingt |
Exemple 1:
Écrivez une requête pour récupérer tous les enregistrements d'un employé dont le salaire est supérieur à 50 000.
int en chaîne en java
Requête:
mysql> SELECT * FROM employees WHERE Salary > 50000;
La requête ci-dessus affichera tous les enregistrements d'un employé dont le salaire est supérieur à 50 000. Un salaire inférieur à 50 000 ne sera pas affiché selon les conditions.
Vous obtiendrez le résultat suivant :
Conformément au résultat attendu, seuls les enregistrements sont affichés lorsque le salaire d'un employé est supérieur à 50 000. Il y a six enregistrements dans la table de l'employé qui satisfont à la condition donnée.
Exemple 2 :
Écrivez une requête pour mettre à jour le dossier de l'employé et définissez le nom mis à jour comme « Harshada Sharma », où le nom de la ville de l'employé est Jaipur.
Requête:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
La requête ci-dessus mettra à jour le nom de l'employé en « Harshada Sharma », où la ville de l'employé est Jaipur.
Pour vérifier si les enregistrements sont mis à jour ou non, nous exécuterons une requête de sélection.
mysql> SELECT * FROM employees;
Il n'y a qu'un seul enregistrement dans la table de l'employé dont la ville est « Jaipur ». L'identifiant de l'enregistrement est 3, ce qui satisfait à la condition donnée. Par conséquent, selon la condition donnée, le nom de l'employé avec l'identifiant d'employé 3 est désormais remplacé par « Harshada Sharma ».
Exemple 3 :
Écrivez une requête pour supprimer l'enregistrement d'un employé dont la date d'adhésion est le « 2013-12-12 ».
Requête:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
La requête ci-dessus supprimera les détails de l'employé dont la date d'adhésion est le « 2013-12-12 ».
Pour vérifier les résultats de la requête ci-dessus, nous exécuterons la requête de sélection.
mysql> SELECT *FROM employees;
Il n'y a qu'un seul enregistrement dans la table de l'employé dont la date d'adhésion est le « 2013-12-12 ». L'identifiant de l'enregistrement est 13, ce qui satisfait à la condition donnée. Par conséquent, selon la condition donnée, l'employé avec l'identifiant d'employé 13 est désormais supprimé de la table des employés.
2. GROUPEMENT PAR CLAUSE
La clause Group By est utilisée pour organiser des types d'enregistrements similaires dans les groupes du langage de requête structuré. La clause Group by du langage de requête structuré est utilisée avec l'instruction Select. La clause Group by est placée après la clause Where dans l'instruction SQL. La clause Group By est spécialement utilisée avec la fonction d'agrégation, c'est-à-dire max (), min (), avg (), sum (), count () pour regrouper le résultat en fonction d'une ou plusieurs colonnes.
La syntaxe de la clause Group By :
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
La syntaxe ci-dessus sélectionnera toutes les données ou enregistrements de la table, mais elle organisera toutes ces données ou enregistrements dans des groupes en fonction du nom de colonne donné dans la requête.
La syntaxe de la clause Group By avec les fonctions d'agrégation :
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Comprenons la clause Group By à l'aide d'exemples.
Considérez le tableau des employés avec les données suivantes :
E_ID | Nom | Salaire | Ville | Désignation | Date d'adhésion | Âge |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombay | Chef de projet | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Ingénieur système | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaïpur | Directeur | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombay | Testeurs de logiciels | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Chef de projet | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Directeur | 2019-07-17 | 26 |
7 | La voix de Baviskar | 55000 | Jaïpur | Ingénieur système | 2021-10-10 | 24 |
8 | Il y a Sheik | 45000 | Puné | Ingénieur logiciel | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Puné | Testeurs de logiciels | 2021-01-01 | 25 |
dix | Mayuri Patel | 60000 | Bombay | Chef de projet | 2020-10-02 | 24 |
onze | Simran Khanna | 45500 | Kolhapur | HEURE | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Développeur de logiciels | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HEURE | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Chef de projet | 2017-11-10 | 25 |
quinze | Mohini Shah | 38000 | Puné | Développeur de logiciels | 2019-03-05 | vingt |
Exemple 1:
Écrivez une requête pour afficher tous les enregistrements de la table des employés mais regroupez les résultats en fonction de la colonne d'âge.
Requête:
mysql> SELECT * FROM employees GROUP BY Age;
La requête ci-dessus affichera tous les enregistrements de la table des employés mais regroupés par colonne d'âge.
Vous obtiendrez le résultat suivant :
Exemple 2 :
Écrivez une requête pour afficher tous les enregistrements de la table des employés regroupés par désignation et salaire.
Requête:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
La requête ci-dessus affichera tous les enregistrements de la table des employés mais regroupés par colonne salaire et désignation.
Vous obtiendrez le résultat suivant :
Exemples de clause Group By utilisant des fonctions d'agrégation
Exemple 1:
Rédigez une requête pour répertorier le nombre d'employés travaillant sur une désignation particulière et regroupez les résultats par désignation de l'employé.
tableau d'octets pour chaîne java
Requête:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
La requête ci-dessus affichera la désignation avec le nombre respectif d'employés travaillant sur cette désignation. Tous ces résultats seront regroupés par colonne de désignation.
Vous obtiendrez le résultat suivant :
Conformément au résultat attendu, la désignation avec le nombre d'employés respectif est affichée.
Exemple 2 :
Écrivez une requête pour afficher la somme du salaire d'un employé selon la ville regroupée par âge d'un employé.
Requête:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
La requête ci-dessus calculera d'abord la somme des salaires travaillant dans chaque ville, puis affichera la somme des salaires avec le salaire respectif mais regroupée par colonne d'âge.
Vous obtiendrez le résultat suivant :
Conformément au résultat attendu, la somme du salaire de l'employé en fonction de la ville à laquelle appartient l'employé est affichée. Si deux employés appartiennent à la même ville, ils formeront alors un seul groupe.
3. CLAUSE AVOIR :
Lorsque nous devons placer des conditions sur la colonne de la table, nous utilisons la clause WHERE dans SQL. Mais si nous voulons utiliser une condition sur une colonne dans la clause Group By à ce moment-là, nous utiliserons la clause HAVING avec la clause Group By pour les conditions de colonne.
Syntaxe:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Considérez le tableau des employés avec les données suivantes :
E_ID | Nom | Salaire | Ville | Désignation | Date d'adhésion | Âge |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombay | Chef de projet | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Ingénieur système | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaïpur | Directeur | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombay | Testeurs de logiciels | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Chef de projet | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Directeur | 2019-07-17 | 26 |
7 | La voix de Baviskar | 55000 | Jaïpur | Ingénieur système | 2021-10-10 | 24 |
8 | Il y a Sheik | 45000 | Puné | Ingénieur logiciel | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Puné | Testeurs de logiciels | 2021-01-01 | 25 |
dix | Mayuri Patel | 60000 | Bombay | Chef de projet | 2020-10-02 | 24 |
onze | Simran Khanna | 45500 | Kolhapur | HEURE | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Développeur de logiciels | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HEURE | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Chef de projet | 2017-11-10 | 25 |
quinze | Mohini Shah | 38000 | Puné | Développeur de logiciels | 2019-03-05 | vingt |
Exemple 1:
Écrivez une requête pour afficher le nom des employés, le salaire et la ville où le salaire maximum de l'employé est supérieur à 40 000 et regroupez les résultats par désignation.
Requête:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
Vous obtiendrez le résultat suivant :
Le résultat ci-dessus montre que le nom, le salaire et la ville d'un employé dont le salaire est supérieur à 40 000 sont regroupés par désignation. (Les employés ayant une désignation similaire sont placés dans un groupe et ceux ayant une autre désignation sont placés séparément).
Exemple 2 :
Écrivez une requête pour afficher le nom des employés et leur désignation lorsque la somme du salaire d'un employé est supérieure à 45 000 et regroupez les résultats par ville.
Requête:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
Vous obtiendrez le résultat suivant :
Le résultat ci-dessus montre le nom, la désignation et le salaire d'un employé. La somme des salaires est supérieure à 45 000 regroupés par ville. (Les employés dont les villes sont similaires sont placés dans un groupe et ceux dont les villes sont différentes ne sont pas similaires sont placés séparément).
4. COMMANDE PAR CLAUSE
Chaque fois que nous voulons trier quelque chose en SQL, nous utilisons la clause ORDER BY. La clause ORDER BY dans SQL nous aidera à trier les données en fonction de la colonne spécifique d'une table. Cela signifie que toutes les données stockées dans la colonne spécifique sur laquelle nous exécutons la clause ORDER BY seront triées. Les valeurs de colonne correspondantes seront affichées dans l'ordre dans lequel nous avons obtenu les valeurs à l'étape précédente.
Comme nous le savons tous, le tri signifie soit par ORDRE ASCENDANT, soit par ORDRE DESCENDANT. De la même manière, ORDER BY CLAUSE trie les données par ordre croissant ou décroissant selon nos besoins. Les données seront triées par ordre croissant chaque fois que Mot-clé ASC est utilisé avec la clause ORDER by, et le Mot-clé DESC triera les enregistrements par ordre décroissant.
Par défaut, le tri dans le SQL se fera à l'aide de la clause ORDER BY dans l'ordre ASCENDING si nous n'avons pas mentionné l'ordre de tri.
Avant de passer à l'exemple de la clause ORDER BY pour trier les enregistrements, nous allons d'abord examiner la syntaxe afin qu'il nous soit facile de parcourir l'exemple.
Syntaxe de la clause ORDER BY sans mot-clé asc et desc :
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Syntaxe de la clause ORDER BY pour trier par ordre croissant :
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Syntaxe de la clause ORDER BY pour trier par ordre décroissant :
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Considérons que nous avons une table d'employés avec les données suivantes :
E_ID | Nom | Salaire | Ville | Désignation | Date d'adhésion | Âge |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombay | Chef de projet | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Ingénieur système | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaïpur | Directeur | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombay | Testeurs de logiciels | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Chef de projet | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Directeur | 2019-07-17 | 26 |
7 | La voix de Baviskar | 55000 | Jaïpur | Ingénieur système | 2021-10-10 | 24 |
8 | Il y a Sheik | 45000 | Puné | Ingénieur logiciel | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Puné | Testeurs de logiciels | 2021-01-01 | 25 |
dix | Mayuri Patel | 60000 | Bombay | Chef de projet | 2020-10-02 | 24 |
onze | Simran Khanna | 45500 | Kolhapur | HEURE | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Développeur de logiciels | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HEURE | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Chef de projet | 2017-11-10 | 25 |
quinze | Mohini Shah | 38000 | Puné | Développeur de logiciels | 2019-03-05 | vingt |
Exemple 1:
Écrivez une requête pour trier les enregistrements dans l'ordre croissant de la désignation de l'employé de la table des employés.
Requête:
mysql> SELECT * FROM employees ORDER BY Designation;
Ici, dans une requête SELECT, une clause ORDER BY est appliquée sur la colonne 'Désignation' pour trier les enregistrements, mais nous n'avons pas utilisé le mot-clé ASC après la clause ORDER BY pour trier par ordre croissant. Ainsi, par défaut, les données seront triées par ordre croissant si nous ne spécifions pas le mot-clé asc.
Vous obtiendrez le résultat suivant :
Conformément au résultat attendu, les enregistrements sont affichés par ordre croissant de la désignation de l'employé.
Exemple 2 :
Écrivez une requête pour afficher le nom et le salaire de l'employé dans l'ordre croissant du salaire de l'employé à partir de la table des employés.
Requête:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Ici, dans une requête SELECT, une clause ORDER BY est appliquée à la colonne « Salaire » pour trier les enregistrements. Nous avons utilisé le mot-clé ASC pour trier le salaire du salarié par ordre croissant.
Vous obtiendrez le résultat suivant :
java mvc
Tous les enregistrements sont affichés par ordre croissant du salaire de l'employé.
Exemple 3 :
Écrivez une requête pour trier les données par ordre décroissant du nom de l'employé stocké dans la table des employés.
Requête:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Ici, nous avons utilisé la clause ORDER BY avec la requête SELECT appliquée sur la colonne Nom pour trier les données. Nous avons utilisé le mot-clé DESC après la clause ORDER BY pour trier les données par ordre décroissant.
Vous obtiendrez le résultat suivant :
Tous les enregistrements sont affichés par ordre décroissant du nom de l'employé.