sql >> Base de Datos >  >> RDS >> MariaDB

Establecer el conjunto de caracteres y la intercalación de una columna en MariaDB

Puede especificar el conjunto de caracteres y la intercalación en varios niveles en MariaDB. Puede especificarlos a nivel de conexión, a nivel de servidor, a nivel de base de datos, a nivel de tabla e incluso a nivel de columna.

También puede especificar una intercalación en sus consultas para que anule cualquier intercalación que se haya especificado previamente en los niveles antes mencionados.

Para configurar el conjunto de caracteres y la intercalación a nivel de columna, use CREATE TABLE sentencia o ALTER TABLE instrucción (dependiendo de si está creando la tabla o modificándola).

Al crear la tabla

Este es un ejemplo de configuración de la intercalación y el conjunto de caracteres en una columna al crear la tabla:

CREATE TABLE Events ( 
    EventId INT AUTO_INCREMENT NOT NULL, 
    EventName VARCHAR(255)
        CHARACTER SET utf8
        COLLATE utf8_spanish_ci, 
    PRIMARY KEY (EventId)
    );

Aquí, especifiqué el conjunto de caracteres y la intercalación en el nivel de columna. También es posible configurarlos a nivel de mesa.

Modificar una columna existente

Este es un ejemplo de cómo cambiar la intercalación y el juego de caracteres en una columna existente:

ALTER TABLE Events 
MODIFY EventName VARCHAR(255) 
CHARACTER SET latin5 COLLATE latin5_turkish_ci;

El EventName columna ahora usa la nueva intercalación y juego de caracteres.

Revisar la Columna

Hay varias formas de comprobar la intercalación y el juego de caracteres de una columna. Aquí hay uno:

SELECT
    column_name, 
    character_set_name, 
    collation_name 
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';

Resultado:

+-------------+--------------------+-------------------+
| column_name | character_set_name | collation_name    |
+-------------+--------------------+-------------------+
| EventName   | latin5             | latin5_turkish_ci |
+-------------+--------------------+-------------------+

La intercalación debe ser válida para el juego de caracteres

Al configurar tanto la intercalación como el conjunto de caracteres, debe asegurarse de que la intercalación sea válida para el conjunto de caracteres elegido y viceversa. Si no, se devuelve un error.

Este es un ejemplo de cómo especificar el uso de una intercalación no válida para el conjunto de caracteres especificado:

ALTER TABLE Events 
MODIFY EventName VARCHAR(255) 
CHARACTER SET utf16 COLLATE latin5_turkish_ci;

Resultado:

ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'

Nos dice que nuestra intercalación elegida no es válida para nuestro conjunto de caracteres especificado elegido.

Consulte la Lista completa de intercalaciones admitidas por MariaDB o la Lista completa de conjuntos de caracteres admitidos por MariaDB para obtener una lista de intercalaciones y conjuntos de caracteres coincidentes.

Especificar solo la intercalación o el juego de caracteres

Está bien especificar solo la intercalación o solo el juego de caracteres (o ninguno):

  • Si solo se proporciona el conjunto de caracteres, se utilizará la intercalación predeterminada para ese conjunto de caracteres.
  • Si solo se proporciona la intercalación, se usará el juego de caracteres asociado.
  • Si no se proporciona ni la intercalación ni el conjunto de caracteres, se usa la tabla predeterminada.

Conversión a un juego de caracteres que requiere más bytes

También es posible convertir el juego de caracteres a nivel de tabla. Al convertir el conjunto de caracteres a nivel de tabla, existe la posibilidad de que MariaDB pueda convertir automáticamente el tipo de datos a uno que sea más capaz de manejar el nuevo conjunto de caracteres.

Sin embargo, cuando usamos MODIFY en las columnas individuales y especificamos explícitamente el tipo de datos (como hicimos en los ejemplos anteriores), evitamos que MariaDB convierta el tipo de datos.

Convertir a binario

CONVERT TO CHARACTER SET binary convertirá CHAR , VARCHAR y TEXT columnas a BINARY , VARBINARY y BLOB respectivamente.

Una vez hecho esto, dichas columnas ya no tendrán un juego de caracteres. Además, ya no se verán afectados por futuros CONVERT TO CHARACTER SET declaraciones.

Comprobación de la intercalación y los conjuntos de caracteres en MariaDB

Hay varias formas de verificar la intercalación y los conjuntos de caracteres en MariaDB, según el nivel que esté verificando (servidor, base de datos, tabla, columna, conexión, etc.). Consulte Mostrar la intercalación en MariaDB para ver ejemplos.