Requête SELECT – Faire des requêtes de sélection dans MySQL

Vous souhaitez utiliser la requête SELECT dans une base de données MySQL ? Nous allons voir les nombreuses possibilités que vous allez avoir avec cette dernière.

Cette requête permet de manipuler des données dans une table. Les manipulations de ces dernières sont une des principales fonctions que l’on utilise. En effet, la majorité des utilisateurs utilise la requête SELECT pour extraire des données.

Utiliser la requête SELECT pour faire des sélections dans MySQL
Utiliser la requête SELECT pour faire des sélections dans MySQL

Dans notre exemple, nous allons utiliser une base de données fictive. Elle représente un commerce en ligne par le biais de quatre tables. Dans celle-ci, nous aurons notamment la table « client » sur laquelle nous allons faire des manipulations pour sélectionner des données.

Lorsque vous allez entreprendre sur le web, vous allez avec le temps vous constituer une base de données avec des informations sur vos clients, les commandes… Vous souhaiterez certainement manipuler les données pour en extraire des informations et piloter votre activité. La requête SELECT dans MySQL est donc faite pour cela.

Comment utiliser une requête SELECT dans MySQL ?

La requête SELECT est basée sur l’algèbre relationnelle, elle permet de réaliser des opérations de sélection sur des données dans des tables. Sa syntaxe classique est la suivante :

SELECT [ALL] | [DISTINCT] <liste des noms de colonnes> | *
 FROM <Liste des tables>
 [WHERE <condition logique>]

Voici une explication de la syntaxe de la requête SELECT dans une base de données MySQL. Nous verrons plus en détail son fonctionnement par la suite. On pourra distinguer deux grandes méthodes pour l’utiliser. La première présente une utilisation sans condition et la seconde avec une sélection.

  • L’option ALL est, par opposition à l’option DISTINCT, l’option par défaut. Elle permet de sélectionner l’ensemble des lignes satisfaisant à la condition logique
  • L’option DISTINCT permet de ne conserver que des lignes distinctes, en éliminant les doublons
  • La liste des noms de colonnes indique la liste des colonnes choisies, séparées par des virgules. Lorsque l’on désire sélectionner l’ensemble des colonnes d’une table, il n’est pas nécessaire de saisir la liste de ses colonnes, l’option * permet de réaliser cette tâche
  • La liste des tables indique l’ensemble des tables (séparées par des virgules) sur lesquelles on opère
  • La condition logique permet d’exprimer des qualifications complexes à l’aide d’opérateurs logiques et de comparateurs arithmétiques

Il faut savoir qu’il existe également d’autres options pour compléter la requête SELECT. Voici ces dernières :

GROUP BY
HAVING
ORDER BY

Utilisation classique de la requête

Lorsque vous utilisez une requête classique dans MySQL, on dit que vous réalisez une projection. Cela consiste à envoyer une instruction qui va sélectionner un ensemble de colonnes dans une table. Prenons l’exemple de la table « clients ». Celles-ci contiennent de nombreuses colonnes. Vous pouvez télécharger la table clients servant d’exemple.

TELECHARGER TABLE CLIENTS

Dans le cadre d’une sélection de données, on peut choisir de sélectionner uniquement les colonnes « Genre », « Nom », « Prénom » et « Mail ». Par exemple, pour créer une campagne de mailing en personnalisant les mails.

Dans un premier temps, voyons la requête SELECT par défaut. Celle qui va tout afficher dans votre table :

SELECT * FROM `clients`;

Avec cette requête nous demandons à afficher toutes les colonnes de la table « clients ».

Les requêtes SELECT avec MySQL
Les requêtes SELECT avec MySQL

Maintenant, sélectionnons uniquement les colonnes « Gender », « Givenname », « Surname » et « Emailaddress ». Pour cela, vous devez les indiquer dans votre requête après l’instruction SELECT comme ci-dessous.

SELECT gender, givenname, surname, emailaddress FROM `clients`;

Dans la requête, les colonnes que vous souhaitez sélectionner doivent être séparées par des virgules. Le résultat de votre sélection va s’afficher. Voici ci-dessous le résultat.

Sélectionner des colonnes
Sélectionner des colonnes

Pour éliminer des doublons dans le résultat de votre requête, vous allez pouvoir utiliser l’instruction « DISTINCT » en plus de « SELECT ». C’est utile par exemple si un client c’est inscrit deux fois dans une liste de mailing (si vous n’aviez pas mis de filtre en place). La requête SELECT serait donc :

SELECT DISTINCT gender, givenname, surname, emailaddress FROM `clients`;

Utilisation avec une condition

Nous venons de voir comment sélectionner l’ensemble de vos données contenues dans la table, puis des colonnes précises. Enfin, comment éliminer des doublons dans ces dernières.

Maintenant, vous souhaitez peut-être sélectionner dans vos colonnes des données plus précises. Par exemple, que les hommes ou que les femmes ? Les e-mails provenant uniquement de Gmail ? Nous allons voir comment faire ces sélections dans notre table « Clients ».

Pour faire cela, on va ajouter une instruction complémentaire à notre requête. Il s’agit de « WHERE ». Cette instruction doit être complétée par une des conditions que vous pouvez retrouver ci-dessous. Il s’agit d’opérateurs. Nous allons voir comment les utiliser par la suite.

Les opérateurs de sélection dans MySQL
Les opérateurs de sélection dans MySQL

Pour cela, nous allons repartir avec notre dernière requête, autrement dit celle où l’on a sélectionné les colonnes « gender, givenname, surname, emailaddress » de la table « clients ». Nous souhaitons sélectionner uniquement les hommes. Pour cela on va ajouter une condition qui va s’appliquer sur la table « gender ». Cette dernière contient l’information du sexe. Si la donnée est « male » c’est un homme, si c’est « female » c’est une femme.

La requête va donc être la suivante :

SELECT DISTINCT gender, givenname, surname, emailaddress FROM `clients` 
WHERE `gender` = 'male';

Le résultat de la requête SELECT va afficher tous les clients hommes.

Faire une sélection avec la requête SELECT et WHERE
Faire une sélection avec la requête SELECT et WHERE

Les conditions de chaîne

Maintenant, nous pouvons également faire des conditions sur les chaînes de caractères. On utilise généralement « LIKE ».



Le prédicat LIKE permet de faire des comparaisons sur des chaînes grâce à des caractères, appelés caractères jokers :

  • Le caractère % permet de remplacer une séquence de caractères (éventuellement nulle)
  • La caractère _ permet de remplacer un caractère (l’équivalent du « blanc » au scrabble…)
  • Les caractères [-] permettent de définir un intervalle de caractères (par exemple [J-M])

Nous allons donc rechercher dans les emails ceux qui correspondent à une adresse email « armyspy.com » (il n’y a pas de gmail.com car c’est une base de données fictive).  Pour cela on utilise la requête SELECT suivante :

SELECT DISTINCT gender, givenname, surname, emailaddress FROM `clients` 
WHERE `emailaddress` LIKE '%armyspy.com%';

Le résultat de notre requête nous permet d’afficher les clients qui possèdent une adresse e-mail « Armyspy ».

Faire des sélections avec SELECT et LIKE
Faire des sélections avec SELECT et LIKE

Combiner des conditions

Nous venons de voir comment créer une condition. Voyons maintenant comment combiner deux conditions. Pour cela on utilise des opérateurs. Dans notre cas ce sera « AND », pour indiquer que les deux conditions doivent être remplies.

L’objectif de notre prochaine requête sera d’afficher les clients qui sont de sexe masculin et avec une adresse Gmail.

SELECT DISTINCT gender, givenname, surname, emailaddress FROM `clients` 
WHERE `gender` = 'male' AND `emailaddress` LIKE '%armyspy.com%';

Nous obtenons une liste de client très restreint. Ici, nous appliquons les sélections sur des variables assez classiques. Mais en faisant des sélections, nous pourrions extraire dans notre base de données des clients très ciblés. Par exemple, dans une ville, une rue, avec une carte bancaire qui expire bientôt (pour obtenir la nouvelle)… Vous commencez sûrement à comprendre la puissance de la requête SELECT dans MySQL.

Combiner des conditions avec la requête SELECT
Combiner des conditions avec la requête

Conditions arithmétiques

Pour compléter cet article, nous allons utiliser une condition arithmétique pour faire une sélection. Dans notre table client, nous avons la taille de nos clients en centimètres. Nous souhaitons trouver nos clients qui ont une taille égale ou supérieure à 185 cm.

Par exemple, nous avons un produit spécifique à leur proposer par le biais d’une newsletter. Pour cela, nous allons donc créer une condition sur la colonne « centimeters ». La requête à utiliser sera la suivante

SELECT DISTINCT gender, givenname, surname, emailaddress FROM `clients` 
WHERE `centimeters` >= 185;

Nous obtenons notre sélection de clients. Nous n’avons plus qu’à préparer notre e-mail pour envoyer notre newsletter.

Utiliser une requête SELECT avec une condition arithmétique
Utiliser une requête avec une condition arithmétique

Conditions sur un ensemble

Vous souhaitez peut-être faire une sélection de clients se trouvant entre deux tailles. On pourrait sélectionner les clients qui ont une taille égale ou supérieure à 170 et égale ou inférieure à 180 cm. Il est possible de le faire très facilement avec une condition comme « BETWEEN » dans l’instruction « WHERE ».

SELECT DISTINCT gender, givenname, surname, emailaddress FROM `clients` 
WHERE `centimeters` BETWEEN 170 AND 180;
La condition BETWEEN dans une requête de sélection MySQL
La condition BETWEEN dans une requête de sélection MySQL

On peut tout aussi bien vouloir rechercher les clients qui habitant dans la ville de Montréal au Canada et Paris en France. Cela se fera aussi très facilement avec « IN ». Voici la requête qui fonctionne sur le même principe que « BETWEEN » :

SELECT DISTINCT gender, givenname, surname, emailaddress FROM `clients` 
WHERE city IN ('Montreal', 'Paris');
Faire une sélection avec SELECT et IN
Faire une sélection avec SELECT et IN

La valeur NULL dans votre table clients

Lorsqu’un champ n’est pas renseigné, il lui est attribué une valeur spéciale que l’on note NULL. La recherche de cette valeur ne peut pas se faire à l’aide des opérateurs standards, il faut utiliser les prédicats IS NULL ou bien IS NOT NULL.

Dans notre base de données, on peut donc rechercher tous les clients où l’e-mail n’est pas renseigné. C’est très simple et très rapide.

SELECT DISTINCT gender, givenname, surname, emailaddress FROM `clients` 
WHERE `emailaddress` IS NULL

Vous serrez peut-être intéressé par des articles connexes :

Articles en relation

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Partagez
Tweetez
+1
Partagez
Enregistrer
Email