Interrogation des données (SELECT FROM WHERE)

Informations[1]

Objectif

  • Savoir récupérer des données dans une table.

Mise en situation

Supposez que vous gériez une libraire, et qu'un client vous demande de consulter tous les ouvrages d'Isaac Asimov que vous avez en stock.

Or, vous gérez des dizaines de milliers d'ouvrages, et il serait très fastidieux de rechercher à la main tous les livres écrits par Asimov.

Heureusement, SQL fournit les outils pour consulter les données d'une table en fonction d'un ou plusieurs critères, comme l'égalité d'un mot ou la supériorité d'un nombre.

DéfinitionSélection

Une sélection est un type de requête du langage de manipulation de données de SQL.

Elle permet de consulter les données présentes dans les tables d'une base de données.

SyntaxeSELECT — FROM — WHERE

Une sélection se décompose comme :

1
SELECT <liste d attributs projetés>
2
FROM <liste des tables>
3
WHERE <condition de la restriction>;
  • La partie SELECT indique le sous-ensemble des attributs qui doivent apparaître dans la réponse.

  • La partie FROM décrit les tables qui sont utilisables dans la requête (c'est-à-dire l'ensemble des attributs que l'on peut utiliser).

  • La partie WHERE exprime les conditions logiques que doivent respecter les attributs d'un enregistrement pour pouvoir être dans la réponse. Cette partie est optionnelle.

Exemple

Si on dispose de la table suivante contenant les informations de personnes :

1
CREATE TABLE personne (
2
nom VARCHAR(50),
3
prenom VARCHAR(50),
4
age DECIMAL
5
);

On peut sélectionner les nom et prénom des personnes majeures ainsi :

1
SELECT nom, prenom
2
FROM personne
3
WHERE age > 18;

Cette requête sélectionne les attributs nom et prenom des tuples de la relation personne, ayant un attribut age supérieur à 18.

SyntaxeNotation préfixée

Afin de décrire un attribut d'une relation en particulier (dans le cas d'une requête portant sur plusieurs relations notamment), on utilise la notation relation.attribut.

Exemple

1
SELECT personne.nom, personne.prenom, vol.depart
2
FROM personne, vol
3
WHERE personne.vol=vol.numero;

SyntaxeSELECT *

Pour projeter l'ensemble des attributs d'une relation, on peut utiliser le caractère * à la place de la liste des attributs à projeter.

Exemple

1
SELECT *
2
FROM avion;

Cette requête sélectionne tous les attributs de la relation Avion.