Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Modifica confronto di tutte le tabelle

Diverse regole di confronto database consentono di memorizzare diversi tipi di caratteri in un database. Per impostazione predefinita, MySQL ha il set di caratteri latin1 con le regole di confronto latin1_swedish_ci. Tuttavia, puoi facilmente modificare le regole di confronto MySQL di tabelle specifiche, tutte le tabelle o persino un intero database. Ecco come modificare le regole di confronto in MySQL.


Come modificare le regole di confronto di tutte le tabelle in MySQL

Esamineremo i passaggi per modificare le regole di confronto in MySQL.


Ecco la query SQL per modificare le regole di confronto di una tabella MySQL

ALTER TABLE tbl_name 
[[DEFAULT] CHARACTER SET charset_name] 
[COLLATE collation_name]

Nella query precedente, devi specificare il nome della tabella tbl_name . Puoi anche specificare facoltativamente il set di caratteri charset_name e confronto nome_collazione .

Bonus Lettura :i migliori blog di database da seguire

Ecco un esempio per modificare le regole di confronto di tutte le tabelle di un database in utf8_general_ci. Sostituisci nome_database e nome_tabella di seguito con rispettivamente il database e i nomi dei campi.

alter table database_name.table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Se desideri modificare le regole di confronto di tutte le tabelle nel database, devi eseguire la query precedente per ciascuna tabella separatamente.

Poiché questo può essere molto noioso, creiamo una query SELECT che genera le istruzioni della tabella ALTER per ogni tabella nel nostro database. Innanzitutto, ecco la query SELECT che restituisce tutti i dettagli relativi alla tabella nel database.

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA="database_name" 
AND TABLE_TYPE="BASE TABLE";

Bonus da leggere:le migliori alternative a MySQL Workbench

Modifichiamo la query SELECT sopra per creare l'istruzione ALTER TABLE per ogni tabella nel database.

Ecco la query di selezione che genererà query SQL per tutte le tabelle nel database. Sostituisci nome_database e collation_name di seguito con il database e i nomi delle regole di confronto ed eseguilo per generare query SQL per modificare le regole di confronto di tutte le tabelle nel database.

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," COLLATE collation_name;") AS ExecuteTheString FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA="database_name" AND TABLE_TYPE="BASE TABLE";

Bonus Lettura:come abilitare l'accesso a query lente in MySQL

Ecco un'altra query SQL per modificare le regole di confronto di tutte le tabelle in utf8.

SELECT CONCAT('ALTER TABLE ', tbl.TABLE_SCHEMA, '.', tbl.TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM information_schema.TABLES
 tbl WHERE tbl.TABLE_SCHEMA = 'database_name'

Una volta che hai l'elenco delle query ALTER TABLE per ciascuna tabella, puoi copiarle e incollarle ed eseguirle per modificare le regole di confronto di tutte le tabelle.

Si spera che l'articolo sopra ti aiuti a modificare le regole di confronto di tutte le tabelle nel database in MySQL.