Frammenti di tabella MySQL e correzioni a problemi comuni
Frammenti di tabella MySQL?
Sì, ce ne sono parecchi in questo articolo. Ma prima di arrivare a questo, cos’è MySQL? Cominciamo con la definizione MySQL. MySQL è un sistema di gestione di database relazionali (RDBMS) open source supportato da Oracle basato su SQL (Structured Query Language).
Le applicazioni che utilizzano il database MySQL includono TYPO3, MODx, Joomla, WordPress, Simple Machines Forum, phpBB, MyBB e Drupal. MySQL viene utilizzato anche in molti siti Web di alto profilo e su larga scala, inclusi Google (sebbene non per le ricerche), Facebook, Twitter, Flickr e YouTube.
E dopo tutta quell’introduzione, ti rendi conto che MySQL è più grande di quanto pensassi inizialmente. A meno che tu non sia nel settore da un po’. Se sei un nuovo arrivato, tuttavia, e vuoi saperne di più su MySQL, il modo più semplice per farlo è con i frammenti di tabella MySQL.
Frammenti di tabella MySQL
Abbina una stringa all’inizio della stringa
SELECT 'Test' REGEXP '^The'; -- 0 SELECT 'The Test' REGEXP '^The'; -- 1
Se un nome non è preceduto da ‘The’, aggiungilo
UPDATE [table] SET Name = CONCAT('The ', TRIM(Name)) WHERE Name NOT REGEXP '^The'
Copia una colonna da una tabella all’altra
INSERT INTO [table] (
) SELECT FROM [table]
Rimuovi tutti gli spazi bianchi
UPDATE [table] SET
= REPLACE(, ' ', '')
(questo è BASH) elimina tutte le tabelle in un database
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
Passa alle regole di confronto di una tabella e di tutte le sue colonne esistenti
alter table [table] convert to character set utf8 collate utf8_general_ci;
MySQL Trova e sostituisci
UPDATE files SET filepath = REPLACE(filepath,'path/to/search','path/to/replace');
Selezione di una riga casuale in MySQL
SELECT column FROM table ORDER BY RAND() LIMIT 1
Crea CSV da MySQL
SELECT a,b,c FROM my_table INTO OUTFILE '/ca.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n';
Trova record duplicati
SELECT id, COUNT(*) as n FROM my_table GROUP BY id HAVING n >1;
Correzione della codifica dei caratteri errata nei dati MySQL
UPDATE table SET column=CONVERT(CONVERT(CONVERT(column USING latin1) USING binary) using utf8);
Carica di nuovo CSV in MySQL
LOAD DATA local INFILE 'unique.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (col1, col2, col3)
Drupal 6.x Trova il codice PHP nel database
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);
Genera una stringa casuale in MySQL
SELECT SUBSTRING(MD5(RAND()) FROM 1 FOR 6) AS randomstring
Calcola l’età dalla data di nascita
SELECT FLOOR(DATEDIFF(CURRENT_DATE(), dob) / 365);
Trova e sostituisci
UPDATE table_name SET column_name = REPLACE(column_name, 'http://oldcontent.com', 'http://newcontent.com');
Scegli tra due date
SELECT * FROM files LEFT JOIN (dates) ON files.uploaded_id = dates.id WHERE date BETWEEN '2009-01-01' AND '2009-12-31'
Backup del database MySQL su file SQL con mysqldump
mysqldump --user=username --password=password --opt --add-drop-database --databases databasename > ~/path/to/file.sql
come calcolare gli ultimi 7 giorni
WHERE mydatefld >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
discarica di MySQL
mysqldump -u [username] -p [password] [databasename] > [backupfile.sql]
Sostituire MySQL
`# Sostituisci la stringa in tutti i record di una tabella
UPDATE nome_tabella SET nome_colonna = REPLACE( nome_colonna, ‘/dev’, " );
SELECT REPLACE( column_name, ‘/dev’, “) FROM table_name;`
Converti fuso orario in locale
SELECT CONVERT_TZ(mydatefield,'US/Pacific','CET') FROM mytable;
Cerca e sostituisci su più righe in SQL
UPDATE wp_posts SET post_content = REPLACE(post_content, 'staging.server.com', 'www.productionserver.com');
Come salvare i risultati da MySQL in un file esterno
echo "SELECT columns FROM table_name WHERE whatever='something'" | /path/to/mysql -uUSERNAME -pPASSWORD DATABASENAME > /tmp/outfile.txt;
Inserisci o aggiorna se esiste già una chiave univoca
INSERT INTO `tableName` VALUES (?,?,?,'-1',?,'0') ON DUPLICATE KEY UPDATE `id` = ?, `foo` = ?, `bar` = ?
mySQL: comandi di backup del database
-- 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 ;
Importazione MySql
mysql -u [username] -p [dbname] < [filename].sql
trovare record duplicati
select address, count(address) as cnt from mailing_list group by address having cnt > 1 order by cnt;
MySQL Trova e sostituisci
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, 'find this string', 'replace found string with this string');
Cambia il percorso della directory del file Drupal
UPDATE FILES SET filepath = REPLACE(filepath, 'sites/default/files/old/','sites/default/files/new/');
Trova tutte le tabelle nel database MySQL contenenti nomi di colonne specifici
SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnA','ColumnB') AND TABLE_SCHEMA='YourDatabase';
Trova i valori che si verificano esattamente una volta nella tabella
SELECT email FROM users GROUP BY email HAVING (COUNT(email) = 1 )
Script MySql per trovare indirizzi email non validi
SELECT * FROM people WHERE email NOT LIKE '%_@__%.__%'
MySQL Calcolo dell’età
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(DOB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(DOB, '00-%m-%d')) >= 65
Left Join per collegare tre o più tabelle
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 corrisponde all’elenco delimitato da virgole
WHERE id REGEXP '(,|^){$this->id}(,|$)'
Ottieni record casuali in base al peso
SELECT * FROM Table ORDER BY Rand() * (1 / Weight
Ci auguriamo che questi frammenti di tabella MySQL siano ciò che stavi cercando. Aggiorneremo questo articolo con altri frammenti di MySQL che incontreremo in futuro, quindi assicurati di aggiungerlo ai segnalibri.
Se ti è piaciuto leggere questo articolo sui frammenti di tabella MySQL, dovresti leggere anche questi:
- Creazione di un sistema CRUD in WordPress (2018)
- 12 suggerimenti per creare un plugin o un tema WordPress Premium di successo
- Come ospitare un sito Web: tutti i passaggi spiegati
- Ottimizzazione della tabella WP_OPTIONS di WordPress