Dernière mise à jour le 26 février 2020 08:07:42 (UTC / GMT +8 heures)
Quest-ce quune sous-requête en SQL?
Une sous-requête est une requête SQL imbriquée dans une requête plus grande.
- Une sous-requête peut se produire dans:
- – Une clause SELECT
- – Une clause FROM
- – Une clause WHERE
- La sous-requête peut être imbriquée dans une instruction SELECT, INSERT, UPDATE ou DELETE ou dans une autre sous-requête.
- Une sous-requête est généralement ajoutée dans la clause WHERE dune autre instruction SQL SELECT.
- Vous pouvez utiliser les opérateurs de comparaison, tels que >, < ou =. Lopérateur de comparaison peut également être un opérateur sur plusieurs lignes, tel que IN, ANY ou ALL.
- Une sous-requête est également appelée requête interne ou sélection interne, tandis que linstruction contenant une sous-requête est également appelée requête externe ou sélection externe.
- La requête interne sexécute dabord avant sa requête parent afin que les résultats dune requête interne puissent être transmis à la requête externe.
Vous peut utiliser une sous-requête dans une instruction SELECT, INSERT, DELETE ou UPDATE pour effectuer les tâches suivantes:
- Comparez une expression au résultat de la requête.
- Déterminez si une expression est incluse dans les résultats de la requête.
- Vérifiez si la requête sélectionne des lignes.
Syntaxe:
- La sous-requête (requête interne) sexécute une fois avant que la requête principale (requête externe) ne sexécute.
- La requête principale (requête externe) utilise le résultat de la sous-requête.
Exemple de sous-requêtes SQL:
Dans cette section, vous apprendrez les conditions dutilisation des sous-requêtes. Nous avons les deux tableaux suivants « student » et « marks » avec le champ commun « StudentID ».
notes des élèves
Nous voulons maintenant écrire une requête pour identifier tous les élèves qui obtiennent de meilleures notes que celles de lélève dont le StudentID est « V002 », mais nous ne connaissons pas les notes de « V002 ».
– Pour résoudre le problème, nous avons besoin de deux requêtes. Une requête renvoie les notes (stockées dans le champ Total_marks) de « V002 » et une seconde requête identifie les étudiants qui obtiennent de meilleures notes que le résultat de la première requête.
Première requête:
Résultat de la requête:
Le résultat de la requête est 80.
-En utilisant le résultat de cette requête, nous avons ici écrit une autre requête pour identifier les élèves qui obtiennent de meilleures notes que 80. Voici la requête:
Deuxième requête:
Résultat de la requête:
Au-dessus de deux requêtes les étudiants identifiés qui obtiennent t Le meilleur numéro que létudiant qui « s StudentID est » V002 « (Abhay).
Vous pouvez combiner les deux requêtes ci-dessus en plaçant une requête dans lautre. La sous-requête (également appelée «requête interne») est la requête entre parenthèses. Consultez le code et le résultat de la requête suivants:
Code SQL:
Résultat de la requête:
Présentation illustrée de la sous-requête SQL:
Sous-requêtes: règles générales
Une instruction SELECT de sous-requête est presque similaire à linstruction SELECT et il est utilisé pour commencer une requête normale ou externe. Voici la syntaxe dune sous-requête:
Syntaxe:
Sous-requêtes: Directives
Il y a quelques règles à prendre en compte lors de lutilisation de sous-requêtes:
- Une sous-requête doit être placée entre parenthèses.
- Une sous-requête doit être placée sur le côté droit de lopérateur de comparaison.
- Les sous-requêtes ne peuvent pas manipuler leurs résultats en interne, donc la clause ORDER BY ne peut pas être ajoutée dans une sous-requête. Vous pouvez utiliser une clause ORDER BY dans linstruction SELECT principale (requête externe) qui sera la dernière clause.
- Utilisez des opérateurs sur une seule ligne avec des sous-requêtes sur une seule ligne.
- Si une sous-requête (requête interne) renvoie une valeur nulle à la requête externe, la requête externe ne renverra aucune ligne lors de lutilisation de certains opérateurs de comparaison dans une clause WHERE.
Type de sous-requêtes
- Sous-requête à une seule ligne: renvoie zéro ou une ligne.
- Sous-requête sur plusieurs lignes: renvoie une ou plusieurs lignes.
- Sous-requêtes de plusieurs colonnes: renvoie une ou plusieurs colonnes.
- Sous-requêtes corrélées: référence une ou plusieurs colonnes dans linstruction SQL externe. La sous-requête est appelée sous-requête corrélée car la sous-requête est liée à linstruction SQL externe.
- Sous-requêtes imbriquées: les sous-requêtes sont placées dans une autre sous-requête.
Lors de la prochaine session, nous avons discuté en détail des sujets ci-dessus. Outre le type de sous-requêtes ci-dessus, vous pouvez utiliser une sous-requête dans les instructions INSERT, UPDATE et DELETE. Voici une brève discussion:
Les sous-requêtes avec instruction INSERT
Linstruction INSERT peut être utilisée avec des sous-requêtes.Voici la syntaxe et un exemple de sous-requêtes utilisant linstruction INSERT.
Syntaxe:
INSERT INTO table_name ) ]SELECT FROM table1 ;
Si nous voulons insérer ces commandes depuis » commandes « table qui ont lavance_amount 2000 ou 5000 dans la table » neworder « le SQL suivant peut être utilisé:
Exemple de table: orders
Code SQL:
Sortie:
Pour voir plus de détails des sous-requêtes utilisant linstruction INSERT cliquez ici.
Sous-requêtes avec instruction UPDATE
Dans une instruction UPDATE, vous pouvez définir une nouvelle valeur de colonne égale au résultat renvoyé par une sous-requête à une seule ligne. Voici la syntaxe et un exemple de sous-requêtes utilisant linstruction UPDATE.
Syntaxe:
UPDATE table SET column_name = new_value(SELECT COLUMN_NAMEFROM TABLE_NAME)
Si nous voulons mettre à jour cette ord_date dans » neworder « table avec » 15-JAN-10 « qui ont la différence de ord_amount et avance_amount est inférieure au minimum ord_amount de la table » orders « le SQL suivant peut être utilisé:
Exemple de table: neworder
Code SQL:
Sortie:
Pour voir plus de détails sur les sous-requêtes utilisant linstruction UPDATE, cliquez ici.
Sous-requêtes avec instruction DELETE
Linstruction DELETE peut être utilisée avec des sous-requêtes. Voici la syntaxe et un exemple de sous-requêtes utilisant linstruction DELETE.
Syntaxe:
DELETE FROM TABLE_NAME(SELECT COLUMN_NAME FROM TABLE_NAME)
Si nous voulons supprimer ces commandes de la table « neworder » dont le montant_avance est inférieur au montant_avance_ maximum de » commandes « , le SQL suivant peut être utilisé:
Exemple de table: neworder
Code SQL:
Résultat:
Pour voir plus de détails sur les sous-requêtes utilisant linstruction DELETE, cliquez ici.
Et ensuite?
- Sous-requêtes SQL – Présentation de diapositives
- Sous-requêtes à une seule ligne
- Sous-requêtes à plusieurs lignes et colonnes
- Sous-requêtes corrélées utilisant des alias
- Sous-requêtes imbriquées
Remarque: Les sorties de ladite instruction SQL illustrée ici sont prises en utilisant Oracle Database 10g Express Edition.
Exercices pratiques SQL
- Exercices SQL, pratique, solution
- SQL Récupérer des données à partir de tables
- Opérateurs booléens et relationnels SQL
- Caractères génériques SQL et opérateurs spéciaux
- Agrégat SQL Fonctions
- Sortie de requête de formatage SQL
- Requête SQL sur plusieurs tables
- FILTRAGE et TRI sur base de données RH
- SQL JOINS
- SQL JOINS
- SQL JOINS sur la base de données RH
- SOUS-REQUÊTES SQL
- SOUS-REQUÊTES SQL
- SOUS-REQUÊTES SQL sur la base de données RH
- Union SQL
- Vue SQL
- Gestion des comptes utilisateurs SQL
- Base de données vidéo
- Requêtes de BASE sur la base de données de films
- SUBQUERIES sur la base de données de films
- REJOINT sur la base de données de films
- Soccer Database
- Introduction
- Requêtes de BASE sur la base de données de football
- SOUS-REQUÊTES sur la base de données de football
- JOINS requêtes sur Base de données de football
- Base de données hospitalière
- Introduction
- BASIC, SUBQUERIES, and JOINS
- Base de données des employés
- Requêtes de BASE sur la base de données des employés
- SOUS-REQUÊTES sur la base de données des employés
- Plus à venir!