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.