Les requêtes SQL sont la viande et les pommes de terre de RDBMS CRUD (créer, lire, mettre à jour, supprimer). Mais lorsque votre application ou votre base de données d'entreprise se développe, le besoin de requêtes intelligentes pour récupérer des données conditionnelles et spécifiques aux exigences devient un incontournable.

SQL est relativement complet, englobant de nombreuses fonctionnalités, chacune étant bien adaptée à diverses utilisations professionnelles. L'une de ces fonctionnalités comprend l'utilisation de sous-requêtes.

Pour rendre vos codes efficaces et efficaces, vous pouvez utiliser des sous-requêtes dans vos codes SQL pour extraire des données, manipuler des variables existantes et atteindre plusieurs objectifs en une seule fois.

Que sont les sous-requêtes SQL ?

Une sous-requête est une requête imbriquée, qui fonctionne comme un paramètre dans une autre requête principale. La sous-requête est une requête intérieure, alors que la requête principale est la requête externe.

La sous-requête renvoie supposément les données sous la forme d'un argument entre parenthèses pour la requête principale, tandis que la requête principale récupère davantage le résultat final.

instagram viewer

Les sous-requêtes sont intégrées dans le Sélectionner déclaration ou dans le clause. Une telle structure permet à la sous-requête de se comporter comme une condition de filtrage de données bien décrite. Malheureusement, les sous-requêtes ne peuvent utiliser que le Par groupe commandes et non Commandé par commandes, car celles-ci ne sont autorisées que dans la requête principale.

En rapport: Tout ce que vous devez savoir sur l'instruction SQL GROUP BY

Habituellement, chaque sous-requête comprend une seule colonne avec la Sélectionner clause. Cependant, il existe des scénarios où la requête principale comporte plusieurs colonnes. Une sous-requête peut être imbriquée dans une autre sous-requête, ce qui en fait une sous-requête imbriquée.

La structure d'une sous-requête est la suivante :

Sélectionnez nom_colonne dans la table où condition= 
(SELECT conditional_column FROM table) comme alias ;

Par exemple, supposons que vous disposiez du tableau suivant :

identifiant Prénom Nom de famille Frais d'agence
1 Jean Mèche 5000
2 robert Graham 4000
3 Étienne Hicks 8000
4 Bob Marley 1000
5 Marie Ellen 9000

Dans ce tableau, pour extraire les noms des personnes qui gagnent au-dessus des frais d'agence moyens, vous pouvez écrire une sous-requête, au lieu d'écrire plusieurs lignes de code.

En rapport: Comment créer une table en SQL

Voici à quoi ressemble la requête :

Sélectionnez * parmi les détails de l'agent
où Agency_Fee > (sélectionnez avg (Agency_Fee) dans agent_details );

La commande avant le > signe est la requête externe, alors que tout ce qui suit le > sign est la requête interne.

La requête interne calculera les frais d'agence moyens dans la sous-requête, et la requête externe affichera toutes les valeurs supérieures à la valeur moyenne calculée.

Comment utiliser les sous-requêtes en SQL ?

Il existe plusieurs façons d'utiliser des sous-requêtes en SQL.

Sous-requêtes avec la clause Where

L'une des structures les plus élémentaires d'une sous-requête en SQL se trouve dans la clause Where. C'est le moyen le plus simple de définir ce que vous recherchez. L'instruction select renvoie des valeurs selon la ou les conditions de sous-requête et les utilise comme paramètre pour la requête principale.

Structure de la requête :

sélectionnez * à partir de nom_table
où nom_colonne = (sélectionnez nom_colonne à partir de nom_table);

Expliquons cela avec un exemple.

Supposons que vous vouliez trouver les deuxièmes frais d'agence les plus élevés dans la table agency_details. Pour ce faire, il existe des fonctions alternatives dans SQL; néanmoins, la meilleure méthode consiste à utiliser une sous-requête.

Voici comment définir la sous-requête :

sélectionnez *, max (Agency_fee)
de détails_agent
où Agency_fee < (sélectionnez max (Agency_fee) dans les détails de l'agent );

La déclaration résultante vous montrera 8000, qui est le deuxième frais le plus élevé dans le tableau donné. Lorsque la requête s'exécute, la sous-requête calcule la valeur maximale à partir de la liste des frais. Le montant des frais les plus élevés (9000) est stocké en mémoire.

Une fois cette partie calculée, la deuxième partie de la requête est calculée, qui trouve le deuxième frais le plus élevé de la table (puisque le < signe est utilisé). Le résultat final est 8000, qui est le deuxième frais le plus élevé du tableau.

Sous-requêtes dans la clause From

Une autre variation dans les sous-requêtes consiste à transmettre la condition dans la à partir de clause. En tant que concept similaire, la requête interne est traitée en premier, et la requête externe est traitée ensuite. La requête interne filtrera sur les données et affichera les résultats où ID = 3.

Voici la requête pour référence :

sélectionnez un.* parmi (
sélectionnez agency_fee dans agent_details
où ID= 3) comme a ;

C'est une structure très basique; cependant, plus vos tableaux de données sont complexes, plus vous obtiendrez de lignes de données correspondant à vos conditions.

Utilisation de sous-requêtes avec insertion dans l'instruction

Si vous souhaitez mettre à jour une table existante avec de nouvelles lignes de données, vous pouvez utiliser le Insérer dans déclaration. Une sous-requête peut s'avérer très bénéfique si vous souhaitez ajouter des valeurs en fonction d'une ou plusieurs conditions spécifiques.

Structure de la requête :

insérer dans table_name 
sélectionnez * à partir de nom_table
où nom_colonne = conditions ;
sélectionnez * à partir de nom_table ;

Voici un exemple d'utilisation de l'instruction insert into avec la sous-requête :

insérer dans agent_details
sélectionnez * parmi les détails de l'agent
où commission_agence dans (1000, 5000);
sélectionnez * dans les détails de l'agent ;

Une fois la requête exécutée, les valeurs correspondant à la condition seront à nouveau insérées dans la table existante. le sélectionnez * reference récupère toutes les colonnes ensemble et les insère telles quelles dans la table agent_details. le dans L'instruction est utilisée pour définir plusieurs conditions de filtre à la fois.

Utilisation de sous-requêtes avec l'instruction de mise à jour

Il existe des situations dans lesquelles vous souhaitez mettre à jour les tables sous-jacentes lors de l'exécution des requêtes. Pour ce faire, vous pouvez utiliser le mettre à jour avec les commandes d'interrogation.

Voici comment vous écrirez la sous-requête pour mettre à jour les informations de la table en une seule instance :

mettre à jour table_name 
définir nom_colonne = nouvelle_valeur
où nom_colonne =
(sélectionnez nom_colonne à partir de nom_table où = );

Voici un exemple illustrant l'utilisation de l'instruction update :

METTRE À JOUR les détails de l'agent 
SET agency_fee = 35000
WHERE frais_agence =
(SELECT agency_fee FROM agent_details WHERE First_name='John');
sélectionnez * dans les détails de l'agent ;

La sous-requête filtrera sur la colonne agency_fee et sélectionnera la ou les lignes où First_Name correspond Jean. La requête externe est exécutée ensuite, dans laquelle les frais d'agence sont mis à jour à 35 000 pour John Wick.

Vous pouvez passer un sélectionnez * déclaration pour vérifier les résultats finaux; vous remarquerez que les frais d'agence pour John Wick sont mis à jour à 35 000, car il n'y a qu'une seule instance correspondant aux conditions définies dans la requête.

Utilisation de sous-requêtes avec l'instruction de suppression

Tout comme l'instruction de mise à jour, dans laquelle vous mettez à jour les lignes de données d'une table existante, la effacer L'instruction supprime les lignes de données en fonction d'une condition.

La structure de l'instruction de suppression est :

supprimer de nom_table où nom de variable/colonne = 
(sélectionnez nom_colonne à partir de nom_table où = condition);

Voici un exemple :

Supprimer des détails de l'agent 
où Prénom IN
(sélectionnez First_name from agent_details where agency_fee = 9000);
sélectionnez * dans les détails de l'agent;

Utilisation de sous-requêtes dans SQL

Les sous-requêtes sont une excellente fonctionnalité dans SQL, qui peut vous éviter d'écrire des lignes de code inutiles sans fin. Lorsque vous êtes en mesure d'utiliser les fonctionnalités de base des sous-requêtes pour faire vos enchères, vous ne voudriez jamais vous soucier d'entrer dans les complexités du codage SQL.

Il est toujours préférable d'améliorer vos connaissances SQL existantes pour vous assurer d'être toujours au top de votre forme. Rassurez-vous, les feuilles de triche SQL peuvent vous donner une bonne idée de la façon de rafraîchir vos bases en un seul coup d'œil.

La feuille de triche des commandes SQL essentielles pour les débutants

Vous voulez en savoir plus sur SQL? Maîtriser les différentes commandes de requête SQL est un excellent moyen d'aller de l'avant.

Lire la suite

PartagerTweeterE-mail
Rubriques connexes
  • La programmation
  • La programmation
  • SQL
  • Outils de programmation
A propos de l'auteur
Gaurav Sial (35 articles publiés)

Gaurav Siyal a deux ans d'expérience en écriture, écrivant pour une série d'entreprises de marketing numérique et de documents sur le cycle de vie des logiciels.

Plus de Gaurav Siyal

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner