SELECT
est utilisée pour sélectionner ou récupérer des données dans une base de données. Les données vont être renvoyées sous forme de tableau qu’on appelle un “result-set” ou ensemble de résultats en français.
SQL SELECT
va nous permettre de récupérer des données dans une ou plusieurs colonnes d’une table d’une base de données. On va pouvoir l’utiliser avec différentes clauses et déclaration SQL comme WHERE
, GROUP BY
, HAVING
, ORDER BY
, LIMIT
, etc.
La commande SQL SELECT
va fonctionner avec toutes les bases de données relationnelles comme MySQL, PostgreSQL, etc.
Syntaxe d’une déclaration SQL SELECT basique
L’utilisation lia plus basique qu’on va pouvoir faire d’un SELECT
SQL va être de sélectionner des donnée dans une colonne d’une table sans plus de critère. Dans ce cas là, on va utiliser la syntaxe SQL SELECT nom_de_colonne FROM nom_de_table
.
Pour sélectionner des données dans plusieurs tables, on utilisera la syntaxe SELECT nom_de_colonne1, nom_de_colonne2 FROM nom_de_table
.
Finalement, pour sélectionner toutes les données d’une table, on peut utiliser le joker *
et la syntaxe suivante : SELECT * FROM nom_de_table
.
Exemple d’utilisation de SQL SELECT avec phpMyAdmin
Pour tester la commande SQL SELECT
, nous allons avoir besoin d’une base de données. Je vous invite donc à démarrer vos serveurs (en utilisant MAMP, WAMP, etc.) et à aller dans votre phpMyAdmin (accessible depuis la page de démarrage de WAMP, MAMP…).
Ensuite, je vous invite à créer une nouvelle base de données qu’on va appeler par exemple cours et à importer la table disponible en cliquant ici. Cette table users
contient 6 colonnes et huit champs comme sur l’image ci-dessous :
Nous allons enfin pouvoir effectuer nos requêtes SQL SELECT
. Pour cela, nous allons utiliser l’onglet SQL de phpMyAdmin.
Commençons déjà par récupérer les prénoms de notre table users
. Pour cela, on va écrire SELECT prenom FROM users
et cliquer sur “Go”.
Si on souhaite sélectionner / récupérer les prenom et les nom des utilisateurs dans un seul SELECT
en SQL, nous pouvons le faire en précisant les noms des deux colonnes séparés par une virgule :
Enfin, pour tout sélectionner dans une table nous pouvons également utiliser le joker *
comme cela :
Utiliser SQL SELECT avec PHP et PDO
Souvent, sélectionner des données avec SELECT
depuis phpMyAdmin n’aura pas beaucoup d’intérêt.
Ce qu’on voudra faire généralement sera d’établir une connexion avec la base de données en PHP avec l’extension PDO et récupérer des données dans la base de données pour le servir aux utilisateurs.
Pour cela, nous allons pouvoir devoir créer un fichier PHP qu’on peut appeler select.php
par exemple. Ce fichier va contenir le script PHP pour se connecter à la base de données, récupérer des données dans la table users
et les afficher sous forme de tableau.
Voici à quoi il va ressembler :
<!DOCTYPE html> <html> <head> <title>Cours PHP / MySQL</title> <meta charset='utf-8'> </head> <body> <h1>Bases de données MySQL</h1> <?php $servname = "localhost"; $dbname = "cours"; $user = "root"; $pass = "root"; try{ $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass); $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); /*Sélectionne les valeurs dans les colonnes prenom et mail de la table *users pour chaque entrée de la table*/ $sth = $dbco->prepare("SELECT prenom, mail FROM users"); $sth->execute(); /*Retourne un tableau associatif pour chaque entrée de notre table *avec le nom des colonnes sélectionnées en clefs*/ $resultat = $sth->fetchAll(PDO::FETCH_ASSOC); /*print_r permet un affichage lisible des résultats, *<pre> rend le tout un peu plus lisible*/ echo '<pre>'; print_r($resultat); echo '</pre>'; } catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } ?> </body> </html>
Et voici le résultat produit une fois le script exécuté :
Ici, on récupère les prénoms et les adresse emails dans notre table avec SQL SELECT
.
Utiliser SQL SELECT avec des critères de sélection
Nous allons pouvoir sélectionner des données très précisément en appliquant des critères de sélection / filtres / clauses dans nos requêtes SQL SELECT
.
On va pouvoir utiliser un SELECT
avec les clauses et instructions suivantes en SQL :
WHERE
;GROUP BY
;HAVING
;UNION | INTERSECT | EXCEPT
;ORDER BY
;LIMIT
;OFFSET
.
Attention ici : si vous utilisez plusieurs critères de sélection avec une requête SQL SELECT
, faites bien à utiliser les différentes clauses dans l’ordre donné ci-dessus car dans le cas contraire votre requête ne fonctionnera pas.
Tentons d’effectuer un SELECT
SQL plus complexe en ne récupérant les prénoms et âges que des utilisateurs de moins de 30 ans et en ordonnant les résultats par âge décroissant.
Notre requête SQL va donc être de la forme SELECT prenom, mail FROM users WHERE age <= 30 ORDER BY age DESC
:
<!DOCTYPE html> <html> <head> <title>Cours PHP / MySQL</title> <meta charset='utf-8'> </head> <body> <h1>Bases de données MySQL</h1> <?php $servname = "localhost"; $dbname = "cours"; $user = "root"; $pass = "root"; try{ $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass); $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); /*Sélectionne les valeurs dans les colonnes prenom et mail de la table *users pour chaque entrée de la table*/ $sth = $dbco->prepare("SELECT prenom, age FROM users WHERE age <= 30 ORDER BY age DESC"); $sth->execute(); /*Retourne un tableau associatif pour chaque entrée de notre table *avec le nom des colonnes sélectionnées en clefs*/ $resultat = $sth->fetchAll(PDO::FETCH_ASSOC); /*print_r permet un affichage lisible des résultats, *<pre> rend le tout un peu plus lisible*/ echo '<pre>'; print_r($resultat); echo '</pre>'; } catch(PDOException $e){ echo "Erreur : " . $e->getMessage(); } ?> </body> </html>
Et voici le résultat que vous devriez obtenir :
La déclaration SQL SELECT : résumé
La déclaration SQL SELECT
permet de sélectionner des données dans une table d’une base de données afin de les manipuler. SQL SELECT
peut être utilisé avec toutes les bases de données relationnelles comme MySQL, PostgreSQL, etc.
La requête SQL associée sera de la forme SELECT données FROM table
.
On va pouvoir utiliser SELECT
avec différentes clauses et instructions SQL avec d’ajouter des critères à notre sélection de départ.