ATTENTION : Les programmeurs du dimanche ont vite fait d'utiliser la syntaxe SELECT * FROM
... qui permet de rapatrier tous les champs. Très pratique pour être sûr d'avoir l'information désirée,
le SELECT * est à éviter pour 3 raisons :
1. Problème de poids : la plupart du temps, on n'a pas besoin de tous les champs, mais
seulement des principaux. Si le résultat du SELECT retourne un enregistrement dont la
totalité des champs pèse 5 kilo octets, imaginez alors si dans quelques jours cette réponse
renvoie 1000 enregistrements ... Cela fait 5 mille kilo octets soit 5 mega octets ... Juste pour
avoir l'ID et le prénom ...
2. Problème de sécurité : supposons que notre enregistrement soit un contact et que figure
dans sa "fiche" son numéro de compte, ou son mot de passe. Un SELECT * va rapatrier le
numéro de compte ou le mot de passe, même s'il n'est pas utilisé dans le script ; l'information
sera rapatriée en mémoire, donc potentiellement utilisable (imaginons - au pire - le cas d'une
faille de sécurité ...)
3. Problème d'évolutivité : (indirectement lié au problème de taille) aujourd'hui la table
comporte 3 champs. Dans quelques jours, j'aurai ajouté 3 autres champs, ce qui en fera 6 au
total. Or dans la partie du script où est fait ce SELECT *, je n'ai pas forcément besoin des 6
champs, dont je rapatrie de l'information en trop : consommation inutile de ressources.
Bref, j'espère que ces raisons vous auront convaincu de ne pas utiliser le SELECT *. Le SELECT
permet de rapatrier les champs tels qu'indiqués, mais par simplicité, il est possible de les manipuler
un peu. Voici quelques exemples (exemple simple pour le premier, pour comparer) :
SELECT
nom,
prenom,
ville,
cp
FROM
contacts;
Renvoie :
nom prenom ville cp
----------------------------------
Alpha Alain Paris 75000
Beta Benjamin Lyon 69000
Beta Benjamin Lyon 69000
Gamma Gaëlle London 1234
Exemple de renommage des champs à la volée :
SELECT
nom AS nom_de_famille,
prenom AS prenom_contact,
ville,
cp
FROM
contacts;
Renvoie :
nom_de_famille prenom_contact ville cp
----------------------------------------------------
Alpha Alain Paris 75000
Beta Benjamin Lyon 69000
Beta Benjamin Lyon 69000
Gamma Gaëlle London 1234