Dans une requête SQL, le caractère étoile permet de lire tous les champs d’une base de données. Il est très pratique lorsqu’il faut connaître facilement et rapidement toutes les colonnes d’une table sans avoir à lister soi-même le nom des champs désirés. Cet article résume les avantages mais aussi les inconvénients de ce sélecteur.
Utilisation
Son utilisation est simple et c’est justement ça qui fait sa force. Pour lire toutes les données de la table “mon_tableau” il faut effectuer la requête suivante:
SELECT * FROM mon_tableau
Avantages du caractère étoile
Ce caractère peut lister toutes les colonnes sans avoir besoin de connaître leurs noms. C’est très pratique pendant une phase de tests ou de débug pour voir ce que contient un tableau rapidement et facilement.
Une requête utilisant ce caractère à moins de chance d’échouer si les tables évolues. Puisque les noms des champs ne sont pas spécifiés dans la sélection, la requête continuera de fonctionner si un nom de champ est modifié ou si une colonne est supprimée. A l’inverse, une requête qui spécifie la lecture des champs “nom” et “ville” échouera si le champ “ville” est remplacé par le champ “code_postal”.
Inconvénients du caractère étoile
Bien que ce caractère semble magique pour les débutants, il y a tout de même des inconvénients pour l’utiliser dans une application. Son utilisant implique que le système de gestion de base de données retourne toutes les colonnes. Or, si une application désire seulement le prénom et le nom du client, il est inutile de lire d’autres données telles que la ville, le nombre d’achat …
Utilisé à mauvais escient, le caractère étoile peut avoir de mauvaises conséquences sur les performances d’une application. Pour optimiser les performances, il convient de lire seulement les données qui seront utilisées par l’application.
Par ailleurs, lorsque le sélecteur étoile est utilisé, les colonnes sont retournées dans le même ordre qu’elles sont présentes en base. Si une application utilise le champ étoile et qu’elle lit les informations en fonction de l’ordre dans lequel les colonnes sont retournées, il y aura une grosse erreur si la base de données est modifiée (modification d’un champ, modification de l’ordre des champs …).
Ne pas utiliser le sélecteur étoile dans une application
Malgré les avantages présentés, la bonne pratique consiste à ne pas utiliser ce caractère dans une application. Il a été précisé qu’une requête est plus évolutive en utilisant ce caractère dans le cas où des champs sont modifiés. Mais en réalité, une application doit être adaptée s’il y a un gros changement dans la base de données.
Ce caractère doit par conséquent être réservé à un usage ponctuel lorsqu’un développeur souhaite lire rapidement le contenu d’une base.
Salutations !
J’ai un partiel de SQL qui arrive et votre site est bien foutu, c’est agréable de lire de bons cours, clairs et concis sur le sujet (à côté des pdf abominables que l’on connait aux dev et aux marketers …)
En revanche, grammar nazi comme je suis, il est parfois dur de comprendre le sens d’une phrase à cause des fautes d’orthographes/grammaire, faites un effort dessus et ce sera parfait :-)
Bien à vous ;)
@Alexandre : merci pour votre message. J’évite les erreurs autant que faire se peut, mais il y en a toujours qui échappe à ma vigilance. N’hésitez pas à m’envoyer un message (cf. https://sql.sh/contact ) pour m’indiquer d’éventuelles coquilles. :)
Très bien fait, clair, net, concise…BRAVO.
bien fait , bonne continuation
Bonjour,
Merci pour ce résumé. J’ajouterai que l’utilisation du caractere * oblige le moteur sql a faire une requete implicite supplementaire sur la table des schema pour retrouver le nom des colonnes. C’est quelques ms de plus dans le temps d’execution :)
Merci pour ce cours sur SQL qui m’est très utile dans ma recherche d’emploi.