MySQL MariaDB

Sous-requêtes MySQL

Sous-requêtes MySQL
Une sous-requête est une requête SQL dans une requête plus grande qui est récursive, ou une sous-requête est considérée comme une requête interne. En revanche, une requête externe est appelée requête qui inclut la sous-requête. Une sous-requête MySQL peut être intégrée dans les requêtes, y compris SELECT, INSERT, UPDATE ou DELETE. De plus, dans une autre sous-requête, une sous-requête peut être imbriquée. L'expression sous-requête doit être fermée entre parenthèses partout où elle est utilisée. Nous vous apprendrons comment et quand utiliser la sous-requête MySQL pour composer des requêtes compliquées et décrire l'idée de la sous-requête associée. Ouvrez le shell de ligne de commande depuis votre bureau et écrivez votre mot de passe pour commencer à l'utiliser. Appuyez sur Entrée et continuez.

Sous-requête dans les enregistrements de table unique :

Créez une table nommée 'animaux' dans la base de données 'data.' Ajoutez l'enregistrement ci-dessous de différents animaux avec différentes propriétés comme affiché. Récupérez cet enregistrement à l'aide de la requête SELECT comme suit :

>> SÉLECTIONNER * À PARTIR des données.animaux;

Exemple 01 :

Récupérons les enregistrements limités de cette table à l'aide des sous-requêtes. En utilisant la requête ci-dessous, nous savons que la sous-requête sera exécutée en premier et sa sortie sera utilisée dans la requête principale comme entrée. Une sous-requête récupère simplement l'âge où le prix de l'animal est de 2500. L'âge d'un animal dont le prix est de 2500 est 4 dans le tableau. La requête principale sélectionnera tous les enregistrements de table où l'âge est supérieur à 4, et la sortie est donnée ci-dessous.

>> SÉLECTIONNER * À PARTIR des données.animaux WHERE Age > ( SELECT Age FROM data.animaux O Prix='2500' );

Exemple 02 :

Utilisons la même table dans différentes situations. Dans cet exemple, nous utiliserons une fonction au lieu de la clause WHERE dans la sous-requête. Nous avons pris la moyenne de tous les prix donnés pour les animaux. Le prix moyen sera de 3189. La requête principale sélectionnera tous les enregistrements d'animaux ayant un prix supérieur à 3189. Vous obtiendrez la sortie ci-dessous.

>> SÉLECTIONNER * À PARTIR des données.animaux O Prix > ( SÉLECTIONNER MOYENNE(Prix) À PARTIR des données.animaux);

Exemple 03 :

Utilisons la clause IN dans la requête SELECT principale. Tout d'abord, la sous-requête récupérera des prix supérieurs à 2500. Après cela, la requête principale sélectionnera tous les enregistrements de la table 'animaux' où le prix se trouve dans le résultat de la sous-requête.

>> SÉLECTIONNER * À PARTIR des données.animaux O Prix IN ( SÉLECTIONNER le prix À PARTIR des données.animaux O Prix > 2500 );

Exemple 04 :

Nous avons utilisé la sous-requête pour récupérer le nom de l'animal dont le prix est de 7000. Comme cet animal est une vache, c'est pourquoi le nom 'vache' sera renvoyé à la requête principale. Dans la requête principale, tous les enregistrements seront extraits de la table où le nom de l'animal est « vache.' Comme nous n'avons que deux enregistrements pour l'animal 'vache', c'est pourquoi nous avons la sortie ci-dessous.

>> SÉLECTIONNER * À PARTIR des données.animaux WHERE Nom = ( SELECT Nom FROM données.animaux O Prix='7000' );

Sous-requête dans plusieurs enregistrements de table :

Supposons les deux tables ci-dessous, « étudiant » et « enseignant », dans votre base de données. Essayons quelques exemples de sous-requêtes utilisant ces deux tables.

>> SÉLECTIONNER * À PARTIR des données.élève;
>> SÉLECTIONNER * À PARTIR des données.prof;

Exemple 01 :

Nous allons récupérer les données d'une table à l'aide de la sous-requête et les utiliser comme entrée pour la requête principale. Cela signifie que ces deux tableaux peuvent être liés d'une certaine manière. Dans l'exemple ci-dessous, nous avons utilisé la sous-requête pour récupérer le nom de l'élève dans la table « élève » où le nom de l'enseignant est « Samina.' Cette requête renverra 'Samina' à la table de requête principale 'enseignant.' La requête principale sélectionnera alors tous les enregistrements liés au nom de l'enseignant 'Samina.' Comme nous avons deux enregistrements pour ce nom, nous avons donc ce résultat.

>> SÉLECTIONNER * À PARTIR des données.professeur WHERE TeachName = ( SELECT TeachName FROM data.étudiant WHERE TeachName = 'Samina' );

Exemple 02 :

Pour élaborer la sous-requête dans le cas de tables différentes, essayez cet exemple. Nous avons une sous-requête qui récupère le nom de l'enseignant dans la table student. Le nom doit avoir 'i' à n'importe quelle position dans sa valeur. Cela signifie que tous les noms de la colonne TeachName ayant 'i' dans leur valeur seront sélectionnés et renvoyés à la requête principale. La requête principale sélectionnera tous les enregistrements de la table « enseignant » où le nom de l'enseignant figure dans la sortie renvoyée par la sous-requête. Comme la sous-requête a renvoyé 4 noms d'enseignants, c'est pourquoi nous aurons un enregistrement de tous ces noms résidant dans la table 'enseignant.'

>> SÉLECTIONNER * À PARTIR des données.professeur WHERE TeachName IN ( SELECT TeachName FROM data.étudiant WHERE TeachName LIKE '%i%' );

Exemple 03 :

Considérez les deux tableaux ci-dessous, 'order' et 'order1'.

>> SÉLECTIONNER * À PARTIR des données.ordre;
>> SÉLECTIONNER * À PARTIR des données.commande1;

Essayons une clause ANY dans cet exemple pour élaborer une sous-requête. La sous-requête sélectionnera l''id' dans la table 'order1', où la colonne 'Status' a la valeur 'Unpaid.' Le 'id' peut être supérieur à 1. Cela signifie que plus d'une valeur serait renvoyée à la requête principale pour obtenir les résultats de l'ordre de la table. Dans ce cas, n'importe quel 'id' peut être utilisé. Nous avons la sortie ci-dessous pour cette requête.

>> SÉLECTIONNER l'article, les ventes, l'identifiant À PARTIR des données.commande WHERE id= ANY ( SELECT id FROM data.order1 WHERE Status= 'Non payé' );

Exemple 04 :

Supposons que vous ayez les données ci-dessous dans la table 'order1' avant d'appliquer une requête.

>> SÉLECTIONNER * À PARTIR des données.commande1;

Appliquons la requête dans une requête pour supprimer certains enregistrements de la table 'order1'. Tout d'abord, la sous-requête sélectionnera la valeur 'Status' dans la table 'order' où l'article est 'Book.' La sous-requête renvoie 'Payé' comme valeur. Maintenant, la requête principale supprimera les lignes de la table 'order1' où la valeur de la colonne 'Status' est 'Payé.'

>> SUPPRIMER DES données.order1 WHERE Status= ( SELECT Status FROM data.commande WHERE Article = 'Livre' );

Après vérification, nous avons maintenant les enregistrements ci-dessous restés dans la table 'order1' après l'exécution de la requête.

>> SÉLECTIONNER * À PARTIR des données.commande1;

Conclusion:

Vous avez travaillé efficacement avec de nombreuses sous-requêtes dans tous les exemples ci-dessus. Nous espérons que tout est clair et propre maintenant.

Meilleurs émulateurs de console de jeu pour Linux
Cet article répertorie les logiciels d'émulation de console de jeu populaires disponibles pour Linux. L'émulation est une couche de compatibilité logi...
Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...
Comment capturer et diffuser votre session de jeu sur Linux
Dans le passé, jouer à des jeux n'était considéré qu'un passe-temps, mais avec le temps, l'industrie du jeu a connu une croissance énorme en termes de...