logo

SQL | Sous-requête

En SQL, une sous-requête peut être simplement définie comme une requête dans une autre requête. En d’autres termes, nous pouvons dire qu’une sous-requête est une requête intégrée dans la clause WHERE d’une autre requête SQL. Règles importantes pour les sous-requêtes :

Mo contre Go
  • Vous pouvez placer la sous-requête dans un certain nombre de clauses SQL : clause HAVING, clause FROM. Les sous-requêtes peuvent être utilisées avec les instructions SELECT, UPDATE, INSERT, DELETE ainsi que l'opérateur d'expression. Il peut s'agir d'un opérateur d'égalité ou d'un opérateur de comparaison tel que l'opérateur =,>, =, <= et Like.
  • Une sous-requête est une requête au sein d’une autre requête. La requête externe est appelée comme requête principale et la requête interne est appelée comme sous-requête .
  • La sous-requête s'exécute généralement en premier lorsqu'elle n'a aucun corrélation avec le requête principale , lorsqu'il y a une co-relation, l'analyseur prend la décision à la volée sur quelle requête exécuter priorité et utilise la sortie de la sous-requête en conséquence.
  • La sous-requête doit être placée entre parenthèses.
  • Les sous-requêtes se trouvent sur le côté droit de l'opérateur de comparaison.
  • COMMANDÉ PAR commande ne peut pas être utilisé dans une sous-requête. PAR GROUPE La commande peut être utilisée pour exécuter la même fonction que la commande ORDER BY.
  • Utilisez des opérateurs à une seule ligne avec des sous-requêtes à une seule ligne. Utilisez des opérateurs à plusieurs lignes avec des sous-requêtes à plusieurs lignes.

Syntaxe: Il n'existe pas de syntaxe générale pour les sous-requêtes. Cependant, les sous-requêtes sont utilisées le plus fréquemment avec l'instruction SELECT, comme indiqué ci-dessous :



SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>

Exemple de tableau :

BASE DE DONNÉES

NOM ROLL_NO EMPLACEMENT NUMÉRO DE TÉLÉPHONE
RAM 101 Chennai 9988775566
Raj 102 Coimbatore 8877665544
Sassi 103 Maduraï 7766553344
Traitement 104 Salem 8989898989
Sumathi 105 Kanchipuram 8989856868

ÉTUDIANT



NOM ROLL_NO SECTION
Traitement 104 UN
Sumathi 105 B
Raj 102 UN

Exemples de requêtes

:

  • Pour afficher le NOM, LOCATION, PHONE_NUMBER des étudiants de la table DATABASE dont la section est A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
    Explication : La première sous-requête exécute SELECT ROLL_NO de STUDENT où SECTION='A' renvoie ROLL_NO de la table STUDENT dont SECTION est 'A'. Ensuite, la requête externe l'exécute et renvoie le NOM, l'LOCATION et le NUMÉRO DE TÉLÉPHONE de la table DATABASE de l'étudiant dont ROLL_NO est renvoyé par la sous-requête interne. Sortir:
NOM ROLL_NO EMPLACEMENT NUMÉRO DE TÉLÉPHONE
Traitement 104 Salem 8989898989
Raj 102 Coimbatore 8877665544
  • Exemple de requête d'insertion :

Tableau 1 : Étudiant 1



NOM ROLL_NO EMPLACEMENT NUMÉRO DE TÉLÉPHONE
RAM 101 Chennai 9988773344
Raju 102 Coimbatore 9090909090
Traitement 103 Salem 8989898989

Tableau2 : Étudiant2

NOM ROLL_NO EMPLACEMENT NUMÉRO DE TÉLÉPHONE
Raj 111 Chennai 8787878787
Jusqu'à 112 Bombay 6565656565
Sri 113 Coimbatore 7878787878
  • Pour insérer Student2 dans la table Student1 :
INSERT INTO Student1 SELECT * FROM Student2;>
  • Sortir:
NOM ROLL_NO EMPLACEMENT NUMÉRO DE TÉLÉPHONE
RAM 101 Chennai 9988773344
Raju 102 Coimbatore 9090909090
Traitement 103 Salem 8989898989
Raj 111 Chennai 8787878787
Jusqu'à 112 Bombay 6565656565
Sri 113 Coimbatore 7878787878
  • Pour supprimer les étudiants de la table Student2 dont le numéro de rôle est le même que celui de la table Student1 et dont l'emplacement est Chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
  • Sortir:
1 row delete successfully.>
    Afficher le tableau Étudiant2 :
NOM ROLL_NO EMPLACEMENT NUMÉRO DE TÉLÉPHONE
Jusqu'à 112 Bombay 6565656565
Sri 113 Coimbatore 7878787878
  • Pour mettre à jour le nom des étudiants en geeks dans la table Student2 dont l'emplacement est le même que Raju, Ravi dans la table Student1
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
  • Sortir:
1 row updated successfully.>
    Afficher le tableau Étudiant2 :
NOM ROLL_NO EMPLACEMENT NUMÉRO DE TÉLÉPHONE
Jusqu'à 112 Bombay 6565656565
les geeks 113 Coimbatore 7878787878