0Pricing
SQL Academy · Leçon

Sous-requêtes scalaires, de lignes et de tables

Utilisez des sous-requêtes qui renvoient une seule valeur, une seule ligne ou une table complète et placez-les dans les clauses SELECT, FROM et WHERE.

Sous-requêtes scalaires, de lignes et de tables est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.

Qu’est-ce qu’une sous-requête ?

Une sous-requête est un SELECT placé à l’intérieur d’une autre instruction SQL. Elle peut être :

  • Une sous-requête scalaire — renvoie une seule valeur
  • Une sous-requête de ligne — renvoie une seule ligne
  • Une sous-requête de table — renvoie une relation (utilisée dans FROM)

Sous-requête scalaire

Utilisée partout où une seule valeur est attendue :

SELECT id, total,
       total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';

Sous-requête de ligne

Renvoie une ligne comportant plusieurs colonnes. Moins courante, elle est surtout utilisée avec des constructeurs de lignes :

SELECT *
FROM orders
WHERE (status, country) = (
  SELECT status, country FROM orders WHERE id = 1
);

Sous-requête de table dans FROM

Traitez le résultat d’une requête comme une table temporaire :

SELECT country, AVG(big_order_total) AS avg_big
FROM (
  SELECT country, total AS big_order_total
  FROM orders
  WHERE total > 1000
) AS sub
GROUP BY country;

Alias des sous-requêtes dans FROM

Toute sous-requête dans FROM nécessite un alias dans PostgreSQL, même si vous ne l’utilisez pas :

SELECT * FROM (SELECT 1) sub;     -- "sub" required

Sous-requêtes dans WHERE

Filtrez à partir d’un ensemble de valeurs dérivé :

SELECT * FROM users
WHERE id IN (
  SELECT user_id FROM orders WHERE total > 100
);

EXISTS / NOT EXISTS

Vérifiez si une sous-requête renvoie au moins une ligne :

SELECT * FROM users u
WHERE EXISTS (
  SELECT 1 FROM orders o WHERE o.user_id = u.id
);

Sous-requêtes dans SELECT

Intégrez une sous-requête scalaire calculée pour chaque ligne :

SELECT id, full_name,
  (SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;

-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.

Sous-requêtes comme expressions

Une sous-requête scalaire qui renvoie plusieurs lignes provoque une erreur :

SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expression

Quand remplacer une sous-requête par JOIN

De nombreux cas de type « x IN (SELECT...) » peuvent être réécrits avec JOIN. Choisissez la forme la plus claire à la lecture ; les planificateurs modernes produisent souvent le même plan.

Sous-requêtes ou CTE

Si vous avez besoin de la même sous-requête deux fois, donnez-lui un nom avec une CTE — ce point est abordé dans la prochaine leçon.

Récapitulatif

Les sous-requêtes se présentent sous trois formes.

  • Scalaire dans SELECT/WHERE
  • De ligne dans les tests d’égalité
  • De table dans FROM
  • EXISTS pour les tests de type « correspondance quelconque »

Vérification rapide

Quelle forme de sous-requête est utilisée dans une clause FROM comme table temporaire ?

Questions Fréquemment Posées

La leçon « Sous-requêtes scalaires, de lignes et de tables » est-elle gratuite ?

Oui — le texte complet de « Sous-requêtes scalaires, de lignes et de tables » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Sous-requêtes scalaires, de lignes et de tables » ?

Utilisez des sous-requêtes qui renvoient une seule valeur, une seule ligne ou une table complète et placez-les dans les clauses SELECT, FROM et WHERE. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer SQL Academy ?

Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Sous-requêtes scalaires, de lignes et de tables » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?

Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Sous-requêtes scalaires, de lignes et de tables
  2. Sous-requêtes corrélées et non corrélées
  3. Expressions de table communes (WITH)
  4. CTE récursives pour les hiérarchies
← Retour à SQL Academy