Extraits de table MySQL et correctifs aux problèmes courants
Extraits de table MySQL ?
Oui, il y en a plusieurs dans cet article. Mais avant d’en arriver là, qu’est-ce que MySQL? Commençons par la définition de MySQL. MySQL est un système de gestion de base de données relationnelle (SGBDR) open source soutenu par Oracle et basé sur le langage de requête structuré (SQL).
Les applications qui utilisent la base de données MySQL incluent TYPO3, MODx, Joomla, WordPress, Simple Machines Forum, phpBB, MyBB et Drupal. MySQL est également utilisé dans de nombreux sites Web à grande échelle et de grande envergure, notamment Google (mais pas pour les recherches), Facebook, Twitter, Flickr et YouTube.
Et après toute cette introduction, vous réalisez que MySQL est plus grand que vous ne le pensiez au départ. A moins que vous ne soyez dans le milieu depuis un certain temps. Cependant, si vous êtes un nouveau venu et que vous souhaitez en savoir plus sur MySQL, la façon la plus simple de le faire est d’utiliser des extraits de table MySQL.
Extraits de table MySQL
Faire correspondre une chaîne au début de la chaîne
SELECT 'Test' REGEXP '^The'; -- 0 SELECT 'The Test' REGEXP '^The'; -- 1
Si un nom n’est pas préfixé par ‘The’, ajoutez-le
UPDATE [table] SET Name = CONCAT('The ', TRIM(Name)) WHERE Name NOT REGEXP '^The'
Copier une colonne d’une table à une autre
INSERT INTO [table] (
) SELECT FROM [table]
Supprimer tous les espaces blancs
UPDATE [table] SET
= REPLACE(, ' ', '')
(c’est BASH) supprimer toutes les tables d’une base de données
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Modification du classement d’une table et de toutes ses colonnes existantes
alter table [table] convert to character set utf8 collate utf8_general_ci;
MySQL Rechercher et remplacer
UPDATE files SET filepath = REPLACE(filepath,'path/to/search','path/to/replace');
Sélection d’une ligne aléatoire dans MySQL
SELECT column FROM table ORDER BY RAND() LIMIT 1
Créer un CSV à partir de MySQL
SELECT a,b,c FROM my_table INTO OUTFILE '/ca.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n';
Rechercher des enregistrements en double
SELECT id, COUNT(*) as n FROM my_table GROUP BY id HAVING n >1;
Correction du mauvais encodage des caractères dans les données MySQL
UPDATE table SET column=CONVERT(CONVERT(CONVERT(column USING latin1) USING binary) using utf8);
Recharger CSV dans mySQL
LOAD DATA local INFILE 'unique.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (col1, col2, col3)
Drupal 6.x Trouver le code PHP dans la base de données
select nid, vid from node_revisions where format in (select format from filters where module = 'php' and delta = 0); select cid, nid from comments where format in (select format from filters where module = 'php' and delta = 0); select bid, info from boxes where format in (select format from filters where module = 'php' and delta = 0);
Générer une chaîne aléatoire dans MySQL
SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 6) AS randomstring
Calculer l’âge à partir de la date de naissance
SELECT FLOOR(DATEDIFF(CURRENT_DATE(), dob) / 365);
Rechercher et remplacer
UPDATE table_name SET column_name = REPLACE(column_name, 'http://oldcontent.com', 'http://newcontent.com');
Choisir entre deux dates
SELECT * FROM files LEFT JOIN (dates) ON files.uploaded_id = dates.id WHERE date BETWEEN '2009-01-01' AND '2009-12-31'
Sauvegarder la base de données MySQL dans un fichier SQL avec mysqldump
mysqldump --user=username --password=password --opt --add-drop-database --databases databasename > ~/path/to/file.sql
comment calculer les 7 derniers jours
WHERE mydatefld >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
vidage mysql
mysqldump -u [username] -p [password] [databasename] > [backupfile.sql]
Remplacer Mysql
`# Remplacer la chaîne dans tous les enregistrements d’une table
UPDATE nom_table SET nom_colonne = REPLACE( nom_colonne, ‘/dev’, " );
SELECT REPLACE( nom_colonne, ‘/dev’, « ) FROM nom_table;`
Convertir le fuseau horaire en local
SELECT CONVERT_TZ(mydatefield,'US/Pacific','CET') FROM mytable;
Rechercher et remplacer sur plusieurs lignes en SQL
UPDATE wp_posts SET post_content = REPLACE(post_content, 'staging.server.com', 'www.productionserver.com');
Comment enregistrer les résultats de MySQL dans un fichier externe
echo "SELECT columns FROM table_name WHERE whatever='something'" | /path/to/mysql -uUSERNAME -pPASSWORD DATABASENAME > /tmp/outfile.txt;
Insérer ou mettre à jour si la clé unique existe déjà
INSERT INTO `tableName` VALUES (?,?,?,'-1',?,'0') ON DUPLICATE KEY UPDATE `id` = ?, `foo` = ?, `bar` = ?
mySQL – commandes de sauvegarde de base de données
-- dump mySQL database to file: VAR=$(date +�%y-%m-%d�); mysqldump -v -uUSERNAME -pPASSWORD -hlocalhost DATABASENAME > /BACKUPDIR/$VAR-DATABASENAME.sql ;
-- dump mySQL database to file and then move it: VAR=$(date +�%y-%m-%d�); mysqldump -v -uUSERNAME -pPASSWORD -hlocalhost DATABASENAME > /BACKUPDIR/$VAR-DATABASENAME.sql ; mv /BACKUPDIR/DATABASENAME.sql /OTHERBACKUPDIR/$VAR-DATABASENAME.sql ;
Importation MySQL
mysql -u [username] -p [dbname] < [filename].sql
trouver des enregistrements en double
select address, count(address) as cnt from mailing_list group by address having cnt > 1 order by cnt;
MySQL Rechercher et remplacer
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, 'find this string', 'replace found string with this string');
Modifier le chemin du répertoire de fichiers Drupal
UPDATE FILES SET filepath = REPLACE(filepath, 'sites/default/files/old/','sites/default/files/new/');
Trouver toutes les tables de la base de données MySQL contenant des noms de colonnes spécifiques
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnA','ColumnB') AND TABLE_SCHEMA='YourDatabase';
Trouver des valeurs qui apparaissent exactement une fois dans le tableau
SELECT email FROM users GROUP BY email HAVING (COUNT(email) = 1 )
Script MySql pour trouver des adresses e-mail invalides
SELECT * FROM people WHERE email NOT LIKE '%_@__%.__%'
Calcul de l’âge MySQL
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(DOB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(DOB, '00-%m-%d')) >= 65
Jointures à gauche pour lier trois tables ou plus
select * from (bdg left join res on bdg.bid = res.bid) left join dom on res.rid = dom.rid where dom.rid is NULL;
MySQL REGEX correspond à une liste délimitée par des virgules
WHERE id REGEXP '(,|^){$this->id}(,|$)'
Obtenez un enregistrement aléatoire basé sur le poids
SELECT * FROM Table ORDER BY Rand() * (1 / Weight
Nous espérons que ces extraits de table MySQL correspondent à ce que vous recherchiez. Nous mettrons à jour cet article avec d’autres extraits MySQL que nous rencontrerons à l’avenir, alors assurez-vous de le mettre en signet.
Si vous avez apprécié la lecture de cet article sur les extraits de table MySQL, vous devriez également lire ceux-ci :
- Création d’un système CRUD dans WordPress (2018)
- 12 conseils pour créer un plugin ou un thème WordPress Premium réussi
- Comment héberger un site Web : toutes les étapes expliquées
- Optimisation du tableau WordPress WP_OPTIONS