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 <schema> --ignore-table=schema.table1
Exclure les données de tables
mysqldump <schema> --no-data > db-structure.sql mysqldump <schema> --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 <schema> --single-transaction --quick
Accélérer le dump
mysqldump <schema> --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