¿Qué es la intercalación y el juego de caracteres en MySQL?

MySQL Collation siempre ha sido un tema desconcertante para los principiantes de MySQL. Una intercalación de MySQL es un conjunto bien definido de reglas que se utilizan para comparar caracteres de un conjunto de caracteres en particular mediante el uso de su codificación correspondiente. Cada conjunto de caracteres en MySQL puede tener más de una intercalación y tiene, al menos, una intercalación predeterminada. Dos conjuntos de caracteres no pueden tener la misma intercalación.

  • Un conjunto de caracteres es un conjunto de símbolos y técnicas de codificación específicos. Una intercalación es un conjunto de reglas para comparar caracteres en un juego de caracteres. Un juego de caracteres nos permite almacenar datos a través de una variedad de juegos de caracteres y hacer comparaciones de acuerdo con una variedad de intercalaciones. Podemos resaltar juegos de caracteres a nivel de servidor, base de datos, tabla y columna.
  • Supongamos que tenemos un alfabeto con A,B,C,D,a,b,c,d. Asignamos un número a todas las letras como A=1,B=2,C=3,D=4,a=5,b=6,c=7,d=8. Entonces, para el símbolo A, la codificación es 1, para la codificación B es 2, para la codificación C es 3, y así sucesivamente. Si queremos comparar la string A, B, a, b. Tenemos un método más fácil para hacer esto, hace un momento hemos asignado un valor distinto a algunos alfabetos, como la codificación de A es 1, para B es 2, la codificación similar para a y b es 5 y 6. Entonces, cómo tenemos capaz de realizar esta comparación, solo por Colation. Aplicamos explícitamente la técnica de Intercalación (Compare allí la codificación correspondiente) a nuestro conjunto de caracteres.
  • El juego de caracteres no solo afecta el almacenamiento de datos, sino que también afecta el medio de comunicación entre los programas cliente y el servidor MySQL. Si desea que el programa cliente se comunique con el servidor utilizando un conjunto de caracteres diferente al predeterminado, deberá resaltar cuál de los conjuntos de caracteres está utilizando. Por ejemplo, para usar el conjunto de caracteres Unicode utf8 , use esta declaración después de establecer la conexión con el servidor:
SET NAMES 'utf8'; 

Hay una declaración de MySQL para conocer las intercalaciones predeterminadas de juegos de caracteres de la siguiente manera:

SHOW CHARACTER SET;

                                                             

Juegos de caracteres en mysql

conjunto de caracteres

  • De forma predeterminada, la instrucción SHOW CHARACTER SET muestra todos los conjuntos de caracteres disponibles. Pero si desea acceder a un conjunto de caracteres de tipos específicos, debe usar la cláusula LIKE o WHERE de MySQL que indica qué nombres de conjuntos de caracteres coinciden con las condiciones. El siguiente ejemplo muestra algunos conjuntos de caracteres Unicode que coinciden con el formato (‘utf%’)  :

                                                                    

Obtener juego de caracteres usando una declaración similar

Obtener juego de caracteres usando la declaración LIKE

  • Si desea tener todas las intercalaciones para un conjunto de caracteres específico o dado, MySQL proporciona una instrucción SHOW COLLATION de la siguiente manera:
SHOW COLLATION LIKE 'character_set_name%';


                                                                                  

Obtener juego de caracteres usando la instrucción WHERE

Obtener intercalaciones usando la instrucción WHERE

  • En las tablas anteriores, las intercalaciones terminan con _ci , el ci aquí significa que no distingue entre mayúsculas y minúsculas . Puede haber otros tipos de colaciones como:
1.  _cs(Case-sensitive) ,
2.  _bin(Binary) 
  • Consulta de MySQL para la configuración del juego de caracteres y colaciones a nivel de la base de datos: si no especifica el juego de caracteres en el momento de la creación, la base de datos usa el juego de caracteres predeterminado, pero en caso de que quiera asignar un juego de caracteres específico, entonces puede expresarlo explícitamente a través de la consulta MySQL:
CREATE DATABASE name_of_database
CHARACTER SET character-set_name;
COLLATE collation_name;

Ejemplo:

CREATE DATABASE my_database
CHARACTER SET utf8mb4
COLLATE utf8_unicode_ci;

También puede cambiar o aplicar el juego de caracteres y el nombre de colación para la base de datos usando la declaración ‘ALTER’ de MySQL:

ALTER DATABASE database_name
CHARACTER SET character_set_name
COLLATE collation_name; 

Ejemplo:

ALTER DATABASE my_database
CHARACTER SET utf8mb4
COLLATE  utf8mb4_0900_ai_ci;

Consulta de MySQL para la configuración del juego de caracteres y las intercalaciones a nivel de tabla: </b> También puede especificar explícitamente qué tipo de juego de caracteres y intercalación desea en el momento de la creación de la tabla, pero si no especifica el carácter predeterminado -set y se aplicaría la colación.

CREATE TABLE table_name(
ID   INT   AUTO_INCREMENT  NOT NULL,
NAME VARCHAR (20)     NOT NULL,
ADDRESS  CHAR (25) ,
SALARY   DECIMAL (18, 2),        
PRIMARY KEY (ID) );
CHARACTER SET character_set_name
COLLATE collation_name ;
  • También tiene la opción de configurar el juego de caracteres y el nombre de intercalación como desee si no los ha aplicado en el momento de la creación de la tabla a través de la declaración ‘ALTER’ de MySQL:
ALTER TABLE table_name(
RENAME COLUMN old_name TO new_name);
CHARACTER SET character_set_name
COLLATE collation_name;
  • También puede establecer el nombre del conjunto de caracteres y la intercalación en el nivel de la columna:</b> Como sabemos, la columna en una tabla puede contener una variedad de datos como (varchar, Int, float). Por lo tanto, puede especificar explícitamente el juego de caracteres y el nombre de intercalación para un tipo diferente (tipo de datos) de columnas que desee.
ALTER TABLE table_name
MODIFY column_name   VARCHAR(25)
CHARACTER SET latin1;

Publicación traducida automáticamente

Artículo escrito por madhav_mohan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *