====== MySQL ====== ===== Général ===== ==== Rechercher les doublons dans une table ==== SELECT DISTINCT * FROM `table` t1 WHERE EXISTS ( SELECT * FROM `table` t2 WHERE t1.id <> t2.id AND t1.champ1 = t2.champ1 ) ORDER BY t1.champ1 ==== Rechercher des entrées qui ont plusieurs relations ==== SELECT sub.IND_ID, sub.IND_NOM_USUEL, sub.IND_PRENOM_USUEL, sub.CAT_ID FROM ( SELECT ind.IND_ID, ind.IND_NOM_USUEL, ind.IND_PRENOM_USUEL, cat.CAT_ID FROM INDIVIDU ind LEFT JOIN J_CAT_IND jci ON jci.IND_ID = ind.IND_ID LEFT JOIN CATEGORIE_USAGER cat on cat.CAT_ID = jci.CAT_ID WHERE cat.CAT_ID IN ('i_etu', 'i_ens_vac', 'x_doc_cont', 'x_autres') ) AS sub GROUP BY sub.IND_ID HAVING COUNT(*) >= 2 ORDER BY sub.IND_NOM_USUEL ASC, sub.IND_PRENOM_USUEL ASC ==== Manipuler un champ binaire ==== UPDATE TABLE SET FIELD = FIELD - 8 WHERE FIELD & 8 = 8 ==== Dump ==== === Exclure des tables === mysqldump --ignore-table=schema.table1 === Exclure les données de tables === mysqldump --no-data > db-structure.sql mysqldump --no-create-info --ignore-table=schema.table1 > db-data.sql cat db-structure.sql > db-all.sql && cat db-data.sql >> db-all.sql === Ne pas perturber la réactivité de la base === mysqldump --single-transaction --quick === Accélérer le dump === mysqldump --max_allowed_packet=512M === Supprimer les données d'une table dans un dump SQL === $ grep -n 'Table structure\|Dumping data for table' dump.sql 19:-- Table structure for table `t1` 37:-- Dumping data for table `t1` 47:-- Table structure for table `t2` 66:-- Dumping data for table `t2` 76:-- Table structure for table `t3` 96:-- Dumping data for table `t3` Pour supprimer les données de la table t2 : $ sed '66,75 d' dump.sql > cleandump.sql ==== Divers ==== === Construire un fichier CSV avec les résultats d'une requête === $ mysql -u user -p db < req.txt | sed 's/\t/;/g' > out.csv