mysql

MYSQL requêtes particulières

Dans le cadre de mes développements j’ai régulièrement des requêtes mysql particulières à faire.  Vous trouverez sur cette page une petit résumé de mes recherches

Selectionner un champ date par rapport à une année

Il convient d’utiliser la fonction YEAR déclinable avec MONTH

Solution :

SELECT count(id_element), date_format(date_depot, '%d/%m/%Y') FROM element WHERE YEAR(date_depot) = 2010 GROUP BY date_depot
	 
Selection CHAMP type DATE/DATETIME par rapport à l'année

Faire un tri défini manuellement

Solution :Solution :

SELECT mon_champ1, mon_champ2, mon_champ3
FROM (`ma_db`.`ma_table`) 
WHERE `mon_champ1` = '1337' 
ORDER BY 
	CASE mon_champ2
		WHEN 'e' THEN 1
		WHEN 'v' THEN 2
		WHEN 's' THEN 3 
	END 
Trier sans ASC / DESC

Trouver tous les enregistrements dont la colone nom commence par une lettre comprise en A et C .

Solution : 

SELECT [left|right](monchamp, 2) FROM `matable` WHERE nom REGEXP '^[A-C]'
Utiliser les REGEXP dans les requêtes mysql

Ne prendre que X charactères de la valeur

Solution : 

SELECT [left|right](monchamp, 2) FROM `matable` WHERE nom REGEXP '^[A-C]'
limiter à un certain nombre de caractères

2 étant me nombre de caractères souhaités

Dupliquer un enregistrement dans la base

Solution : 

INSERT INTO users( champ1, champ2, champ3, champ4 )
SELECT champ1, champ2, champ3, champ4
FROM maTable
WHERE id = 2
Dupliquer un tuple

Il faut prendre tous les champs souhaités sauf bien évidamment la Primary Key si celle ci est en incrémentation auto

Cette liste sera mise à jour régulièrement.

logo mysql

Faire un backup des bases de données mysql

Pour tous ceux d’entre vous qui administrent un serveur web vous avez au moins une fois été confronté au problème des sauvegardes ou bien au problème du transfert de serveur.

Voyons donc comment faire un back up de nos bdd.

Vous devez dans un premier temps vous connecter en ssh pour cela installez putty sous windows ou bien utilisez la commande ssh sous linux ou mac.

Dans le cas d’un petit serveur cela va vite on transfère les quelques  bdd avec la commande suivante.

 mysql -uUSER -pPASSWORD nomdelabdd > chemin/de/sauvegarde/bdd.sql

Il ne reste plus qu’a remplir les nouvelles bdd avec la commande suivante (une ligne par bdd)

mysql -uUSER -pPASSWORD bddaremplir > chemin/de/sauvegarde/bdd.sql

Mais si le nombre de bases de données est important ça devient vite fastidieux de sauvegarder les bdd une par une alors voici une petite astuce

mysqldump -uUSER -pPASSWORD --all-databases > all-databases.sql

Vous imaginez bien que l’on ne va pas remplir les bdd une par une sinon nous perdons tout l’intérêt de l’astuce
Voici donc la commande

mysql -uUSER -pPASSWORD < chemin/de/sauvegarde/bdd.sql

Si vous devez utiliser un encodage particulier genre UTF-8 voici l'option à rajouter dans votre ligne de commande : --default-character-set=utf8