Projection (SELECT)

Informations[1]

Objectifs

  • Savoir récupérer les valeurs d'attributs spécifiques.

  • Savoir ajouter des résultats de fonction aux résultats d'une sélection.

Mise en situation

Souvent, les informations que vous voulez consulter dans une base de données sont spécifiques. Par exemple, si vous avez créé une table qui répertorie les animaux, vous aurez un attribut pour le nom commun, un pour le nom scientifique, un pour la taille moyenne, un pour le nombre de pattes, etc.

Cette table pourrait contenir des dizaines d'attributs : si vous voulez récupérer tous les animaux à six pattes, il serait pertinent de n'afficher que leur nom.

SQL fournit la syntaxe pour restreindre les résultats d'une requête de sélection aux valeurs des attributs qui vous intéressent, et permet même d'enrichir le résultat avec des valeurs extérieures à la table, comme la date du jour.

DéfinitionProjection

Une projection est un type de sélection où seulement une partie des attributs des tables choisies est retenue pour le résultat.

SyntaxeClause SELECT

Supposons que l'on ait la table suivante définie comme :

1
CREATE TABLE R(
2
p1 INTEGER,
3
p2 INTEGER,
4
--- d'autres attributs ...
5
pn INTEGER);

On peut projeter sur les trois premiers attributs de cette table en utilisant :

1
SELECT p1, p2, p3
2
FROM R;

ExempleIllustration d'un projection

Exemple de projection (SQL et Algèbre)

Ici, on ne garde que les attributs A et C de la table R1.

Exemple

1
CREATE TABLE parent (
2
id INTEGER PRIMARY KEY,
3
nom VARCHAR(255),
4
prenom VARCHAR(255), 
5
age INTEGER CHECK (age > 0)
6
);
7
8
INSERT INTO parent VALUES (1, 'Brasseur', 'Alexandre', 91);
9
INSERT INTO parent VALUES (2, 'Brasseur', 'Pierre', 67);
1
SELECT prenom, nom
2
FROM parent;
1
  prenom   |   nom    
2
-----------+----------
3
 Alexandre | Brasseur
4
 Pierre    | Brasseur

SyntaxeAlias de table

Il est possible de redéfinir le nom des relations au sein de la requête afin d'en simplifier la syntaxe.

1
SELECT t1.attribut1
2
FROM table1 t1

Exemple

1
SELECT p.prenom, p.nom
2
FROM parent p;
1
  prenom   |   nom    
2
-----------+----------
3
 Alexandre | Brasseur
4
 Pierre    | Brasseur

SyntaxeAlias d'attribut (AS)

Il est possible de redéfinir le nom des propriétés de la relation résultat.

1
SELECT attribut1 AS a1, attribut2 AS a2 
2
FROM table;

Exemple

1
SELECT p.prenom AS prenom_parent, p.nom AS nom_parent
2
FROM parent p;
1
 prenom_parent | nom_parent 
2
---------------+------------
3
 Alexandre     | Brasseur
4
 Pierre        | Brasseur

ComplémentProjection de constante

Il est possible de projeter directement des constantes (on utilisera généralement un alias d'attribut pour nommer la colonne).

1
SELECT constante AS nom;

Cette requête renverra une table avec une seule ligne et une seule colonne à la valeur de constante.

Exemple

1
SELECT p.prenom AS prenom_parent, p.nom AS nom_parent, 'parent' AS statut
2
FROM parent p;
1
 prenom_parent | nom_parent | statut 
2
---------------+------------+--------
3
 Alexandre     | Brasseur   | parent
4
 Pierre        | Brasseur   | parent