Introduction au langage SQL
3. Obtenir des données à partir d'une table
La syntaxe générale de la requête SELECT, qui permet d'obtenir des données à partir d'une ou plusieurs tables, ressemble à:
SEL\(\!\)ECT [pre-options] <champs> FROM <table> [post-options];
Dans le cas le plus simple, on n'a aucune option. Si on veut par exemple obtenir toutes les valeurs des champs champ1 et champ2 de la table MaTable, on pourra les obtenir avec la requête
SEL\(\!\)ECT champ1, champ2 FROM MaTable;
Si on indique le caractère * à la place des noms de champs, on obtiendra les valeurs de tous les champs.
De plus, des options peuvent être fournies au début (pour la première option ci-dessous) et à la fin de la requête (pour les autres) afin de préciser celle-ci.
- l'option
DISTINCTavant au début de la requête ne retournera que des valeur distinctes de ce qui est demandé.
Par exemple, la requêteSEL\(\!\)ECT DISTINCT nom, prenom FROM Auteurs;
ne retournera qu'une seule fois le résultatDupond, Jean, même s'îl existe plusieurs "Jean Dupond" dans la tableAuteurs. - l'option
ORDER BY <champs>indique comment il faut classer les résultats
Par exemple, la requêteSEL\(\!\)ECT * FROM Auteurs ORDER BY nom, prenom;
retournera les valeurs de tous les champs pour toutes les entrées, classés d'abord d'après le nom puis d'après le prénom, - l'option
LIMIT <nombre>donne une limite maximale au nombre d'entrées qui seront retournées dans la réponse
Par exemple, la requêteSEL\(\!\)ECT * FROM Auteurs LIMIT 3;
retournera uniquement les 3 premières entrées de la tableAuteurs, ou moins s'il y en a moins que 3. - l'option
WHERE <condition>permet de ne choisir que les entrées qui satisfont la condition donnée. Ainsi, la requêteSEL\(\!\)ECT * FROM Auteurs WHERE nom = "Dupond";
retournera le nom et le prénom de toutes les entrées dont le nom est"Dupond". Notez qu'on utilise le simple=, contrairement au==de comparaison dans la plupart des langages de programmation. On peut également utiliser les comparateurs <, >, <=, >=, même pour les textes. C'est alors l'ordre alphabétique qui compte.
Si on a plusieurs conditions, on les sépare par un opérateur booléenAND / OR.
Dernière remarque: pour plus de lisibilité, nous avons indiqué tous les mots-clés du langage SQL en majuscules, mais en fait ce langage est indifférent à la casse, donc les mêmes mots-clés peuvent être employés en minuscules ou en casse mixte.