sql >> Base de Datos >  >> RDS >> Mysql

MySQL cambia la intercalación de todas las tablas

Diferentes intercalaciones de bases de datos le permiten almacenar diferentes tipos de caracteres en una base de datos. De forma predeterminada, MySQL tiene un juego de caracteres latin1 con intercalación latin1_swedish_ci. Sin embargo, puede cambiar fácilmente la intercalación de MySQL de tablas específicas, todas las tablas o incluso una base de datos completa. Aquí se explica cómo cambiar la intercalación en MySQL.


Cómo cambiar la intercalación de todas las tablas en MySQL

Veremos los pasos para cambiar la intercalación en MySQL.


Aquí está la consulta SQL para cambiar la intercalación de una tabla MySQL

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

En la consulta anterior, debe especificar el nombre de la tabla tbl_name . Opcionalmente, también puede especificar el juego de caracteres charset_name y colación collation_name .

Lectura adicional:Principales blogs de bases de datos a seguir

Aquí hay un ejemplo para cambiar la intercalación de todas las tablas de una base de datos a utf8_general_ci. Reemplazar nombre_de_la_base_de_datos y nombre_tabla a continuación con la base de datos y los nombres de los campos respectivamente.

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

Si desea cambiar la intercalación de todas las tablas en su base de datos, debe ejecutar la consulta anterior para cada tabla por separado.

Dado que esto puede ser muy tedioso, creamos una consulta SELECT que genera las declaraciones de tabla ALTER para cada tabla en nuestra base de datos. Primero, aquí está la consulta SELECT que devuelve todos los detalles relacionados con la tabla en su base de datos.

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

Lectura adicional:las mejores alternativas de MySQL Workbench

Modificamos la consulta SELECT anterior para crear la declaración ALTER TABLE para cada tabla en su base de datos.

Aquí está la consulta de selección que generará consultas SQL para todas las tablas en su base de datos. Reemplazar nombre_de_la_base_de_datos y collation_name a continuación con su base de datos y nombres de intercalación y ejecútelo para generar consultas SQL para cambiar la intercalación de todas las tablas en su base de datos.

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

Lectura adicional:Cómo habilitar el registro de consultas lentas en MySQL

Aquí hay otra consulta SQL para cambiar la intercalación de todas las tablas a 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 vez que tenga la lista de consultas ALTER TABLE para cada tabla, puede copiar y pegar y ejecutarlas para cambiar la intercalación de todas las tablas.

Con suerte, el artículo anterior lo ayudará a cambiar la intercalación de todas las tablas en la base de datos en MySQL.