Ajourd’hui on ne parle pas de SEO mais de MySQL et plus particulièrement de quelques commandes/requêtes utiles. Je ne suis pas là pour vous présenter MySQL ou pour en faire la promotion, si vous atterissez sur cette page, c’est que vous l’utilisez déjà.
Afin d’établir une compréhension maximale, voici quelques conventions que je vais utiliser au cours de cet article :
Voici donc une liste de 8 astuces pour commencer :
Dans cet exemple, field désignera le champ sur lequel on effectue la recherche de doublons :
SELECT * FROM `table` GROUP BY (`field`) HAVING COUNT(*) > 1; |
Vous souhaitez remplacer toutes les valeurs (dans cet exemple nous prendrons ‘toto’) de votre champs (field) par une nouvelle valeur (prenons ‘titi’).
UPDATE `table` SET `field`=REPLACE(`field`, 'toto', 'titi'); |
Peut être intéressant par exemple pour remplacer des ‘\n’ par des ‘br’.
Le champ contenant les ID s’appelle field et on souhaite récupérer les infos uniquement pour les ID 1,2,5 et 23.
SELECT * FROM `table` WHERE `field` IN (1, 2, 5, 23); |
Peu utilisé car gourmand en ressources, l’utilisation des expressions régulières en mysql se révèle parfois indispensable.
Imaginons le cas suivant :
Vous avez une table stockant des mails envoyés à des clients. Afin d’économiser de la place sur votre serveur vous avez choisi d’insérer une seule ligne par envoi de mail en séparant les ID des clients à qui le mail est parti dans un seul champ (ce n’est peut être pas très clair, mais ça le deviendra avec l’exemple). Pour l’exemple le séparateur d’ID sera le tiret. Je sais que ce n’est pas la meilleur méthode, mais nous ne sommes pas là pour parler performances (sinon on ne parlerai pas de MySQL ;)).
Pour cet exemple, nous allons donc extraire les mails envoyés au client ayant l’ID 23 entre le 02 aout 2010 et le 15 aout 2010 et les trier par date d’envoi. Les dates sont au format DATETIME et les IDS des clients séparés par des tirets sont stockés dans le champs ID.
SELECT * FROM `table` WHERE `date_mail` BETWEEN '2010-08-02%' AND '2010-08-05%' AND ID REGEXP '(^|-)23(-|$)' ORDER BY `date_mail`; |
Petite explication :
Dans le cas ou le séparateur est un tiret ‘-‘, on a 3 possibilité pour trouver le chiffre 23.
Au début de la chaine (d’ou le ^)
En fin de chaine (d’ou le ‘$’)
ou entre 2 tirets (d’ou les ‘-‘)
Le pipe ‘|’ signifie ou (ca c’est pour ceux qui ne le savaient pas).
Vous venez de vous rendre compte que vous aviez besoin d’un champ en auto-increment (ID_ai pour ID auto increment) mais votre table est déjà bien remplie !!!! Pas de problème, cette simple requête fera l’affaire
ALTER TABLE `table` ADD `ID_ai` INT NOT NULL AUTO_INCREMENT PRIMARY KEY; |
Si vous souhaitez que votre auto-increment débute à 6
ALTER TABLE `table` AUTO_INCREMENT = 6; |
Pour les exemples suivants, les résultats de requêtes seront volumineux, c’est pour cette raison que nous utiliserons le mode console.
Nous allons incorporer également les conventions suivantes :
L’exemple parle de lui meme, donc no comment.
Vraiment sympa ces astuces, moi qui chercher quelques bouts de code de ce genre de temps en temps, je sais où aller voir dorénavant 😉
Un bon récapitulatif des principales fonctions SQL. Je ne connaissais pas la fonction REPLACE, merci ! J’ai toujours procédé avec un WHERE classique.
Un bon rappel des fonctions SQL, Merci, A bientot
Merci pour : Ajouter un champ auto-increment sur une table déjà peuplée 🙂
Salut,
Dites, est-il possible de rechercher les doublons du genre :
– sainte marie
– sainte-marie