SQL SELECT – Sélection dans une table d’une base de données

La déclaration SQL 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 :

Création d'une base SQL et d'une table pour utiliser SELECT

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

Sélection simple avec SQL SELECT sous phpmyadmin

Résultat d'une sélection simple avec SQL SELECT sous phpmyadmin

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 :

Sélection de plusieurs colonnes d'une table avec SQL SELECT sous phpmyadmin

Résultat d'une sélection de plusieurs colonnes d'une table avec SQL SELECT sous phpmyadmin

Enfin, pour tout sélectionner dans une table nous pouvons également utiliser le joker * comme cela :

SQL SELECT all *

SQL SELECT all * résultat

 

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é :

Résultat SQL SELECT avec PHP PDO

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 :

Résultat SQL SELECT WHERE ORDER BY avec PHP PDO

 

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.

Laisser un commentaire

© Pierre Giraud - Toute reproduction interdite - Mentions légales