Sélection, projection et doublon (select, distinct, count)

Sélection en SQL : SELECT

On a maintenant une table remplie de données et optimisée de façon à ce que l'on puisse manipuler les données de façon simple. Profitons alors du fait que notre fameux langage SQL soit aussi un langage de manipulation de données (LMD).

Le plus souvent, c'est la manipulation de données qui intervient au niveau des scripts de programmation comme PHP. C'est à partir d'ici que l'application du langage SQL commence vraiment à entrer en jeu.

La commande SQL SELECT

La commande principale pour la manipulation de données est la clause SELECT. Cette dernière nous permet d'interroger la base pour qu'elle nous retourne un résultat. On peut lui soumettre certaines conditions à partir de différents critères que l'on définit nous-mêmes. Cela est possible grâce à plusieurs options de la commande SELECT.

Afin de comprendre rapidement, voyons tout de suite un exemple simple de sélection de données :

Requête SQL

SELECT * FROM etudiant;

 

Résultat de la requête SELECT
id_etudiant nom prenom moyenne domicile
1 Duchesse Valérie 17 St Rambert
2 Malaga Rita 12 Roussillon
3 Bertrand Adrien 11 Grenoble
4 Rossiny Daniel 17 Beaurepaire
5 Suza Alvaro 19 St Vallier
6 Alarson Marinah 14 Beaurepaire
7 Lambertini Paco 19 St Rambert
8 Dupon Jean 10 Grenoble
9 Maillet Daniel 18 Lyon
10 Barose Diane 16 Grenoble
11 Carlo Monica 11 Roussillon
12 Maillet Serge 13 Lyon
13 Malaga Rita 15 Grenoble

Cette requête sélectionne toutes les données se trouvant dans la table "etudiant". Il est possible de limiter le nombre de résultats en utilisant le mot clé LIMIT.

Requête SQL

SELECT * FROM etudiant LIMIT 3;

 

Résultat

Résultat de la requête SELECT avec LIMIT
id_etudiant nom prenom moyenne domicile
1 Duchesse Valérie 17 St Rambert
2 Malaga Rita 12 Roussillon
3 Bertrand Adrien 11 Grenoble

Toujours avec le mot clé LIMIT, on peut avoir une vue du style page par page du résultat. Il suffit de préciser une deuxième valeur dans la clause LIMIT. Voici comment on fait pour afficher les 3 résultats à partir de la 5ème ligne.

Requête SQL

SELECT * FROM etudiant LIMIT 5, 3;

 

Résultat

Résultat de la requête SELECT avec LIMIT
id_etudiant nom prenom moyenne domicile
6 Alarson Marinah 14 Beaurepaire
7 Lambertini Paco 19 St Rambert
8 Dupon Jean 10 Grenoble

Une projection en SQL

Rappelons que la structure de la table enseignant possède 5 champs (id_etudiant, nom, prenom, moyenne, domicile). Le symbole * dans les requêtes ci-dessus veut dire qu'il faut inclure tous les champs.

Mais il est aussi possible de n'inclure que quelques colonnes seulement (prenom,moyenne,domicile). Il suffit de lister les colonnes et de séparer par des virgules.

Requête SQL

SELECT prenom, moyenne, domicile FROM etudiant LIMIT 3 ;

 

Résultat

Résultat d'une projection
prenom moyenne domicile
Valérie 17 St Rambert
Adrien 11 Grenoble

Gérer les doublons : DISTINCT

 

L'option DISTINCT permet d'éliminer les doublons c'est-à-dire de ne pas les prendre en compte pendant la sélection. Tandis que l'option ALL permet de tout prendre en compte.

Résultat de la requête SELECT avec DISTINCT
Avec doublons (ALL) Sans doublons (DISTINCT)
Voici un exemple de sélection en incluant tous les doublons
Requête :
SELECT ALL domicile FROM etudiant ;
En utilisant distinct à la place de la clause ALL on élimine les doublons
Requête
SELECT DISTINCT domicile FROM etudiant;
Résultat :
domicile
St Rambert
Roussillon
Grenoble
Beaurepaire
St Vallier
Beaurepaire
St Rambert
Grenoble
Lyon
Grenoble
Roussillon
Lyon
Grenoble
Résultat
domicile
St Rambert
Roussillon
Grenoble
Beaurepaire
St Vallier
Lyon

Nombre de lignes de résultats : COUNT

La clause COUNT nous donne le nombre de résultats. Par exemple, essayons de compter le nombre d'étudiants dans la table etudiant et mettons le nombre obtenu dans une colonne que l'on nommera "nbetudiant"

Requête SQL

SELECT COUNT( * ) AS nbetudiant FROM etudiant ;

 

Résultat

Résultat de la requête SELECT avec COUNT
nbetudiant
13

Au total, la table "etudiant" contient donc 13 résultats. Ces différents critères ne sont pas valables que pour la sélection. Mais on les utilise aussi pour la modification et suppression de ligne comme nous allons le voir dans un prochain tutoriel.

A propos de l'auteur

Nicolas Galle

Nicolas Galle est développeur web sénior pour l'agence SEO Aseox.