Sous-requêtes SQL

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!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *