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 establecer el conjunto de caracteres y la intercalación a nivel de tabla, 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 al crear la tabla:
CREATE TABLE Products (
ProductId CHAR(10),
ProductName VARCHAR(255) NOT NULL,
PRIMARY KEY (ProductId))
CHARACTER SET latin1
COLLATE latin1_general_ci;
Eso crea una tabla llamada Products
con un latin1
conjunto de caracteres y una recopilación de latin1_general_ci
.
Modificar una tabla existente
Este es un ejemplo de cómo cambiar la intercalación y el conjunto de caracteres en una tabla existente:
ALTER TABLE Products
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;
Ahora usa la nueva intercalación y juego de caracteres.
También es posible omitir CONVERT TO
parte:
ALTER TABLE Products
CHARACTER SET utf8
COLLATE utf8_spanish_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 Products
CHARACTER SET latin1
COLLATE utf8_spanish_ci;
Resultado:
ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'
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
Para VARCHAR
o TEXT
columnas, CONVERT TO CHARACTER SET
cambia el tipo de datos si es necesario para garantizar que la nueva columna sea lo suficientemente larga para almacenar tantos caracteres como la columna original.
Por ejemplo, un ascii TEXT
columna requiere un solo byte por carácter, por lo que la columna puede contener hasta 65.535 caracteres. Si la columna se convierte a utf8, se pueden requerir hasta 3 bytes para cada carácter, por lo que la columna se convertirá a MEDIUMTEXT
(que tiene una longitud máxima de 16 777 215) para que pueda contener la misma cantidad de caracteres.
Si no desea que se produzcan tales cambios en el tipo de datos, use MODIFY
en las columnas individuales en su lugar.
Por ejemplo:
ALTER TABLE Products
MODIFY ProductName VARCHAR(255)
CHARACTER SET utf8;
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.