Manipulation de données : SELECT , INSERT , UPDATE , DELETE
<<<
Les sous-requêtes comme opérateur scalaire Comparaisons avec les sous-requêtes
>>>

14.1.8 Sous-sélections ( SubSELECT )
14.1 Manipulation de données : SELECT , INSERT , UPDATE , DELETE
14 Syntaxe des commandes SQL
 Manuel de Référence MySQL 4.1 : Version Française

->Les sous-requêtes comme opérateur scalaire
Comparaisons avec les sous-requêtes
Sous-requêtes avec les clauses ANY , IN et SOME
Sous-requêtes avec ALL
Sous-requêtes corrélées
EXISTS et NOT EXISTS
Sous-requêtes de ligne
Sous-requêtes dans la clause FROM
Erreurs de sous-requêtes
Optimisation des sous-requêtes
Se passer des sous-requêtes avec les premières versions de MySQL

14.1.8.1 Les sous-requêtes comme opérateur scalaire

Dans dans forme la plus simple, une sous-requête scalaire , par opposition à une sous-requête de ligne ou de table qui seront présentées plus loin, est un simple opérande. Vous pouvez l'utilisez à chaque fois qu'une valeur de colonne ou qu'une valeur littérale est valide, et vous pouvez en attendre les mêmes caractéristiques : type de données, taille et indication de nullité, etc. Par exemple :

CREATE TABLE t1 (s1 INT, s2 CHAR(5) NOT NULL);
SELECT (SELECT s2 FROM t1);
La sous-requête de la commande SELECT ci-dessus est de type CHAR , de longueur 5. Son jeu de caractères et sa collation sont ceux fournis par défaut, et elle porte une marque de nullité. En fait, toutes les sous-requêtes peuvent prendre la valeur NULL , car si la table est vide, la valeur de la sous-requête sera alors NULL . Il y a quelques restrictions :

  • Une sous-requête peut être utilisée avec les commandes suivantes : SELECT , INSERT , UPDATE , DELETE , SET et DO .
  • Une sous-requête peut contenir les mots-clé et les clauses qu'une commande SELECT peut contenir : DISTINCT , GROUP BY , ORDER BY , LIMIT , jointures, UNION , commentaires, fonctions, etc.

Ainsi, lorsque vous lirez les exemples des sections suivantes qui utilisent la commande spartiate (SELECT column1 FROM t1) , imaginez que votre code pourra contenir des commandes bien plus diverses et complexes.

Par exemple, supposons que nous avons ces deux tables :

CREATE TABLE t1 (s1 INT);
INSERT INTO t1 VALUES (1);
CREATE TABLE t2 (s1 INT);
INSERT INTO t2 VALUES (2);
Puis, que vous envoyons la commande suivante SELECT :

SELECT (SELECT s1 FROM t2) FROM t1;
Le résultat sera 2 car il y a une ligne dans t2 , dont la colonne s1 a une valeur de 2.

La sous-requête peut faire partie d'une expression. Si c'est un opérande d'une fonction, n'oubliez pas les parenthèses.

Par exemple :

SELECT UPPER((SELECT s1 FROM t1)) FROM t2;

<< Les sous-requêtes comme opérateur scalaire >>
Manipulation de données : SELECT , INSERT , UPDATE , DELETE Sous-sélections ( SubSELECT ) Comparaisons avec les sous-requêtes