Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

Requêtes élémentaires

Icône Présentation
1 / 1

Requêtes élémentaires

Une requête simple consiste à demander l’affichage des valeurs de certaines colonnes A des lignes d’une table R

Equivalence en algèbre relationnelle : la projection notée R[A] ou π A (R)


Une première requête

SELECT numero, nom, ville FROM Clients ;

Cette requête SQL sélectionne les valeurs numero, nom, ville des lignes de la table Clients.

Clients
numeronomville
1 Lebreton Meylan
2 Vasseur Grenoble
3 Da Costa Paris
4 Rey Vizille
5 Weiss Lille
6 Berlioz Paris
7 Lefevre Lyon
9 Barda Paris
8 Jacques Paris

L’astérisque

Si on souhaite sélectionner toutes les colonnes d’une table, plutôt que de les énumérer, on peut utiliser l’astérisque *

SELECT * FROM Clients ;

Résultat :

Clients
numeronomprenomruecodePostalvilletelephonecategoriecompte
1 Lebreton Éléonore 6 avenue Françoise Olivier 38240 Meylan 0776059929 A1 10000
2 Vasseur Georges 54, avenue Jean 38000 Grenoble +33 1 44 68 49 74 B2 1903
3 Da Costa Léon 18, boulevard Brigitte Faivre 75000 Paris 0568740044 C3 -1500
4 Rey Michel 49, avenue de Adam 38220 Vizille B1 3251
5 Weiss Dominique 98, boulevard Remy 59000 Lille B2 0
6 Berlioz Diane 27 avenue de la Chartreuse 75000 Paris 123094
7 Lefevre Jean 12, rue de la République 69000 Lyon C1 -1000
9 Barda Jérôme 128 rue de la Paix 75000 Paris C1 -2000
8 Jacques Chaoui 1240 rue des Ateliers 75001 Paris C1 -1750

Requête minimale

À minima, une requête SQL de sélection doit :

  • cibler des attributs (spécifiques ou bien en utilisant le caractère * pour tous les sélectionner) après le mot clé SELECT
  • cibler une ou plusieurs tables après le mot FROM
  • se terminer par un point virgule (attention, le saut de ligne n’est pas pris en compte comme une nouvelle requête)
SELECT * FROM nom_table ;

Sélection

  • La sélection consiste à extraire les lignes d’une table respectant une certaine propriété
  • Equivalence en algèbre relationnelle : La sélection notée R : C ou σ C (R)
  • La condition de sélection utilise les opérateurs de comparaison suivants :
    • = : l’égalité
    • > : plus grand que
    • < : plus petit que
    • <>, != ou NOT = : différent de
    • >= : plus grand ou égal
    • <= : plus petit ou égal
  • Remarques
    • L’ordre naturel est utilisé dans les comparaisons
    • Les chaînes de caractère doivent être entourées d’apostrophes ' et '
    • Un des formats de dates utilisés est : '2013-09-01'

Exemple

Soit la requête :

SELECT numero, nom, ville
FROM Clients
WHERE ville = 'Paris' ;

Cette requête SQL sélectionne les valeurs numero, nom, ville des lignes de la table Clients et ne conserve que les lignes qui vérifient la condition ville = 'Paris' .

Clients
numeronomville
3 Da Costa Paris
6 Berlioz Paris
9 Barda Paris
8 Jacques Paris

Problème

  • Une requête mono table peut contenir autant de lignes qu’il y a de ligne vérifiant la condition dans la table
  • Il se peut, si la sélection ne contient aucune clé, que le résultat possède plusieurs lignes identiques
  • Pour éviter cela, on peut utiliser le mot clé DISTINCT qui permet de ne pas afficher les lignes identiques

Exemple avec duplication

SELECT ville
FROM Clients
WHERE ville = 'Paris' ;
Clients
ville
Paris
Paris
Paris
Paris

Exemple sans duplication

SELECT DISTINCT ville
FROM Clients WHERE ville = 'Paris' ;
Clients
ville
Paris

Autre exemple

  • Supposons que l’on veuille la liste des numéros de clients ayant passé au moins une commande. On écrirait la requête suivante :
SELECT numeroClient FROM Commandes;
Commandes
numeroClient
1
1
3
4
5
5
4

Le nombre d’éléments du résultat de cette requête n’est pas égal à celui des clients qui ont passé une commande. Les numéros clients sont dupliqués autant de fois qu’ils ont passé de commandes. Il faut donc mieux écrire :

SELECT DISTINCT numeroClient FROM Commandes;
Commandes
numeroClient
1
3
4
5

Remarque

Si la clause SELECT cite tous les composants d’un identifiant de la table, l’unicité des lignes résultats est garantie.

Il est donc inutile d’utiliser DISTINCT dans ce cas.

Exemple :

SELECT numeroCommande, numeroProduit FROM Details;
Details
numeroCommandenumeroProduit
1 1
1 2
1 3
2 4
2 5

Ayant selectionné tous les composants de la clé primaire de la table Details, les lignes sont uniques.

Conclusion

  • Les requêtes de sélection SQL SELECT FROM WHERE (SFW) permettent d’extraire des données d’une table en fonciton d’une condition
  • On peut sélectionner toutes les colonnes d’une table avec l’astérisque *
  • On peut éviter les doublons avec le mot clé DISTINCT