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 DISTINCT avant au début de la requête ne retournera que des valeur distinctes de ce qui est demandé.
    Par exemple, la requête
    SEL\(\!\)ECT DISTINCT nom, prenom FROM Auteurs;
    ne retournera qu'une seule fois le résultat Dupond, Jean, même s'îl existe plusieurs "Jean Dupond" dans la table Auteurs.
  • l'option ORDER BY <champs> indique comment il faut classer les résultats
    Par exemple, la requête
    SEL\(\!\)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ête
    SEL\(\!\)ECT * FROM Auteurs LIMIT 3;
    retournera uniquement les 3 premières entrées de la table Auteurs, 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ête
    SEL\(\!\)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éen AND / 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.