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;
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
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
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
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.
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
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.