sql >> Databasteknik >  >> RDS >> Mysql

MySQL Ändra samling av alla tabeller

Olika databaskollationer låter dig lagra olika typer av tecken i en databas. Som standard har MySQL latin1-teckenuppsättning med latin1_swedish_ci-kollation. Du kan dock enkelt ändra MySQL-sorteringen av specifika tabeller, alla tabeller eller till och med en hel databas. Så här ändrar du sortering i MySQL.


Hur man ändrar sortering av alla tabeller i MySQL

Vi kommer att titta på stegen för att ändra sortering i MySQL.


Här är SQL-frågan för att ändra sortering av en MySQL-tabell

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

I ovanstående fråga måste du ange tabellnamnet tbl_name . Du kan också valfritt ange teckenuppsättningen teckenuppsättningsnamn och sortering sorteringsnamn .

Bonusläs :Bästa databasbloggar att följa

Här är ett exempel för att ändra sammanställning av alla tabeller i en databas till utf8_general_ci. Ersätt databasnamn och tabellnamn nedan med databas- respektive fältnamn.

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

Om du vill ändra sammanställningen av alla tabeller i din databas, måste du köra ovanstående fråga för varje tabell separat.

Eftersom detta kan vara väldigt tråkigt skapar vi en SELECT-fråga som genererar ALTER-tabellsatserna för varje tabell i vår databas. Först, här är SELECT-frågan som returnerar alla tabellrelaterade detaljer i din databas.

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

Bonus Läs:Top MySQL Workbench Alternativen

Vi modifierar ovanstående SELECT-fråga för att skapa ALTER TABLE-satsen för varje tabell i din databas.

Här är urvalsfrågan som genererar SQL-frågor för alla tabeller i din databas. Ersätt databasnamn och sorteringsnamn nedan med dina databas- och sorteringsnamn och kör den för att generera SQL-frågor för att ändra sorteringen av alla tabeller i din databas.

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";

Bonusläs:Hur man aktiverar långsam frågeloggning i MySQL

Här är en annan SQL-fråga för att ändra sammanställning av alla tabeller till 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'

När du har listan med ALTER TABLE-frågor för varje tabell kan du kopiera-klistra in och köra dem för att ändra sorteringen av alla tabeller.

Förhoppningsvis kommer artikeln ovan att hjälpa dig att ändra sammanställning av alla tabeller i databasen i MySQL.

  1. Hur TRY_CAST() fungerar i SQL Server

  2. MySQL REGEXP-exempel

  3. NULL-värden i NOT IN-satsen

  4. Massinlägg med SQLAlchemy ORM