formations / mysql / mysql-requete-select-from
MySql - Requête SELECT FROM
La requête SELECT est l'une des commandes SQL les plus fondamentales et puissantes. Elle est utilisée pour extraire des données d'une ou plusieurs tables d'une base de données. La requête SELECT permet de spécifier les colonnes à récupérer, les tables à interroger, les critères de filtrage et l'ordre de tri. C'est un outil essentiel pour récupérer des informations précises et personnalisées à partir d'une base de données relationnelle.
Sélection de toutes les colonnes de la table
La première requête que nous pouvons réaliser est une requête qui va sélectionner toutes les colonnes de la table et ce pour toutes les lignes présentes comme l'illustre le code ci-dessous dans lequel * signifie toutes les colonnes.
USE base_demo;
SELECT * FROM utilisateurs
Sélection de colonnes spécifiques
Bien sur, comme nous pouvons sélectionner toutes les colonnes dans une table, nous pouvons sélectionner que certaines colonnes, il suffira alors de les lister par leur nom en lieu et place de * dans la requête précédente.
SELECT email, password FROM utilisateurs
Filtrer les résultats
Les deux requêtes que nous avons utilisées jusqu'à maintenant nous renvoient la totalité des lignes présentes dans la base de données. Heureusement il est possible de spécifier une ligne précise à l'aide de la clause WHERE. Cette clause va nous permettre de spécifier le nom d'une colonne et la valeur attendue.
Généralement, cette clause WHERE est utilisée avec la colonne id qui est un identifiant unique, mais elle peut être utilisées avec n'importe quelle colonne comme par exemple le nom ou l'email.
Les deux exemples de code ci dessous illustrent ces utilisations.
USE base_demo;
SELECT nom, prenom, email FROM utilisateurs WHERE id=1;
Cette première requête renvoie dans l'interface de phpMyAdmin la ligne de données correspondant à l'id 1
USE base_demo;
SELECT * FROM utilisateurs WHERE nom = "Roy";
Cette seconde requête retourne dans l'interface de phpMyAdmin deux lignes qui contiennent la chaîne de caractères "Roy" dans la colonne nommée "nom".
Utilisation des opérateurs logiques
En plus de la clause WHERE il est possible d'utiliser l'opérateur logique AND pour affiner la recherche. Nous pouvons par exemple recherche une ou plusieurs lignes dans la table qui auraient comme valeur dans la colonne "nom" la valeur "Doucet" et dans la colonne prénom la valeur "Philippe".
Ci-dessous, la requête, n'hésitez pas à la tester avec d'autres colonnes et d'autres valeurs.
SELECT * FROM utilisateurs WHERE nom = "Doucet" AND prenom = "Philippe";
Il est également possible en complément de la clause WHERE d'utiliser l'opérateur logique OR.
SELECT * FROM utilisateurs WHERE nom = "Doucet" OR nom = "Tanguay";
Avec l'opérateur logique OR, mySql nous renvoie deux lignes qui correspondent aux deux noms recherchés. Cette requête n'aurait renvoyer qu'une ligne dans le cas ou seuleument un des deux noms ait été présent dans la table.
Trier les résultats
Il est possible d'ordonner les résultats d'après une colonne. Imaginons que nous souhaitions récupérer toutes les entrées de la table ordonnée par ordre alphabétique de nom en ascendant (ASC) ou descendant (DESC). Pour effectuer cette opération, nous utiliserons la clause ORDER BY.
SELECT * FROM utilisateurs ORDER BY nom ASC
Cette requête renvoie les entrées de la table ordonnées par le nom ascendant, c'est à dire dans l'ordre alphabétique de A à Z.
Utilisation de fonctions d'agrégation avec GROUP BY
Les fonctions d'agrégation en SQL sont des fonctions intégrées qui permettent de regrouper et de calculer des valeurs sur un ensemble de données. Ces fonctions sont souvent utilisées en conjonction avec la clause GROUP BY pour effectuer des opérations sur des groupes de lignes plutôt que sur l'ensemble de la table.
Dans l'exmple suivant, nous utilsons la fonction d'agrégation "COUNT" pour compter le nombre de fois ou une entrée dans une colonne est utilisée.
SELECT nom, COUNT(*) as nombre_utilisateurs FROM utilisateurs GROUP BY nom;
Nous voyons ici le résultat de l'exécution de la requête dans phpMyAdmin. Chaque valeur de la colonne nom a été comptée, de sorte que le nom "Roy" apparaît deux fois dans la table, que la valeur "NULL" existe trois fois, toutes les autres valeurs ne sont présentes qu'une seule fois.
Il existe plusieurs fonctions d'agrégation.
- SUM : qui fait la somme des valeurs d'une colonne donnée.
- AVG : qui calcule la moyenne des valeurs d'une colonne donnée.
- MIN : qui sort la valeur minimale contenue dans une colonne donnée.
- MAX : qui sort la valeur maximal contenue dans une colonne donnée.
- COUNT : que nous avons utilisé et qui compte le nombre de fois ou une valeur est présente dans une colonne donnée. Cette fonction d'agrégation est généralement utilisée avec la clause GROUP BY
Utiliser des fonctions SQL
SQL nous met à disposition différents fonctions permettant de manipuler les données de la base lorsqu'on les sélectionne. Les fonctions SQL font l'objet d'une leçon spéciale, mais nous allons ici illustrer l'utilisation de la fonction "UPPER".
SELECT UPPER(nom) AS nom_majuscule, prenom FROM utilisateurs;
Le retour dans phpMyAdmin est un tableau avec une "pseudo" colonne générée avec l'alias AS. On peut voir que les nom sont passés en majuscule à l'aide de la fonction SQL. Cette fonction est bien sur cummulable avec la clause ORDER BY par exemple.
SELECT UPPER(nom) AS nom_majuscule, prenom FROM utilisateurs ORDER BY nom ASC;
Limitation du nombre de lignes retournées
SQL nous offre également une possibilité de limiter le nombre de lignes retournées lors de l'exécution d'une requête. Cette limitation s'obtient avec la clause LIMIT.
SELECT * FROM utilisateurs ORDER BY nom ASC LIMIT 3
Les clauses sont à utiliser en respectant l'ordre suivant : WHERE (et les opérateurs logiques AND et OR) suivi de ORDER BY et pour finir LIMIT
Si vous êtes abonné, vous pouvez aller plus loin avec les deux tutoriels sur les fonctions SQL et les jointures de table.
Tutos du jour
Les boucles
Les boucles permettent d'automatiser des tâches répétitives et de manières itérative.
Voir le tuto