Bases de datos

Intercalación, ¿qué es?

cotejo y SQL

Qué es la intercalación: Una visión general

La intercalación se aplica a todos los sistemas de gestión de bases de datos y se utiliza para dictar cómo se tratarán los caracteres. Los distintos idiomas suelen utilizar conjuntos de caracteres propios de su lengua nacional. Muchos idiomas tienen caracteres nacionales que deben tenerse en cuenta a la hora de ordenar y comparar valores de caracteres.

Para saber más sobre el cotejo, es útil entender un poco cómo los sistemas operativos y las aplicaciones, como los sistemas de gestión de bases de datos, tratan los juegos de caracteres nacionales y cómo se ordenan. Una de las primeras preguntas que te hacen al instalar un nuevo sistema operativo es en qué país estás y qué dialecto del idioma nacional utilizas. Esto asigna la disposición del teclado, incluidos los caracteres del idioma nacional, como los símbolos de moneda, a la cadena de bits correcta que entiende el sistema operativo. Los sistemas operativos y los sistemas de bases de datos se refieren a estos conjuntos de caracteres como páginas de código, que suelen ser propietarias pero a menudo utilizan estándares como Unicode. En los ejemplos verás referencias a conjuntos de caracteres UTF8 y latinos. Una vez establecido el conjunto de caracteres que utilizará el sistema operativo subyacente y los sistemas de gestión de bases de datos, podemos ocuparnos de los órdenes de clasificación, que pueden variar según el conjunto de caracteres.

Definición de la intercalación

Una intercalación especifica los patrones de bits que representan cada carácter en un jeu de données y determina las reglas utilizadas para ordenar y comparar datos. Los atributos de cotejo pueden influir en los resultados de las consultas porque determinan cómo funcionan las operaciones de ordenación y comparación. Las cláusulas de una sentencia SQL SELECT, como JOINS y ORDER BY, comparan datos de texto de tipos de datos como CHAR, VARCHAR, NCHAR y NVARCHAR. Los códigos y conjuntos de caracteres especificados por la intercalación determinan qué caracteres se pueden mostrar.

La configuración de la intercalación establece el valor predeterminado para todas las bases de datos del sistema y las bases de datos de usuario creadas por esa instancia, incluidas las tablas temporales.

Ejemplos de opciones de intercalación

Cuando se instala una base de datos SQL Server, la intercalación predeterminada viene dictada por la configuración regional del sistema operativo. Por ejemplo, para el inglés de EE.UU. (en-US), la configuración regional es SQL_Latin1_General_CP1_CI_AS. Puede anular la configuración predeterminada del sistema operativo en una sentencia CREATE DATABASE utilizando la cláusula COLLATE. Una vez creada la base de datos, se puede utilizar la sentencia ALTER para realizar cambios en la definición de la base de datos.

Las bases de datos de usuarios existentes no se migran a la nueva configuración, por lo que debe utilizar un proceso engorroso de exportación de todas las bases de datos de usuarios, configuración de la intercalación maestra y, a continuación, importación de las bases de datos de usuarios.

A continuación se muestra un ejemplo de modificación de la configuración de una columna existente:

ALTER TABLE dbo.UserTable ALTER COLUMN DepartmentName VARCHAR(80) COLLATE Latin1_General_100_CI_AI_SC_UTF8;

SQL Server admite varias opciones a la hora de especificar una intercalación, incluidas las mayúsculas y minúsculas y la sensibilidad.

Niveles de intercalación

SQL Server le permite especificar los siguientes niveles:

  • A nivel de servidor: establece una intercalación por defecto para todas las bases de datos creadas en ese servidor.
  • A nivel de base de datos: permite establecer una intercalación sólo para esa base de datos mediante los comandos CREATE o ALTER con la cláusula COLLATE.
  • Nivel de columna - Puede utilizar la sentencia ALTER para especificar el nivel de columna
  • Nivel de expresión: permite definir la intercalación que se utilizará en las cláusulas ORDER BY o SORT BY.

Ejemplos de bases de datos

Hemos tratado SQL Server con cierto detalle. Para tener una perspectiva más amplia, podemos examinar otras bases de datos:

PostgreSQL - Permite especificar el orden de clasificación y el comportamiento de clasificación de caracteres de los datos por columna o por operación. A diferencia de SQL Server, las colaciones a nivel de base de datos no se pueden cambiar después de la creación. Sin embargo, puede anular el valor predeterminado utilizando la cláusula COLLATE en la sentencia SQL como en el ejemplo siguiente:

SELECT a < ('Joe' COLLATE "fr_FR") FROM MyTable;

MySQL - Las intercalaciones se establecen en el momento de crear la base de datos utilizando la siguiente sintaxis:

CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;

Tras la creación, el comando ALTER DATABASE permite cambiar la intercalación de una base de datos determinada.
Del mismo modo, puede utilizar la cláusula COLLATE para CREAR o ALTERAR una tabla.

Visite nuestro sitio web para obtener más información sobre los productos y soluciones de bases de datos Actian.

La colación especifica los patrones de bits que representan cada carácter en un conjunto de datos y determina las reglas que se utilizan para ordenar y comparar los datos, incluyendo cómo se tratan los caracteres en diferentes idiomas y conjuntos de caracteres.

Los atributos de colación influyen en los resultados de las consultas al determinar cómo funcionan las operaciones de ordenación y comparación en cláusulas como JOINS y ORDER BY, lo que afecta a los datos de texto en los tipos de datos CHAR, VARCHAR, NCHAR y NVARCHAR.

SQL Server admite cuatro niveles de colación: a nivel de servidor (predeterminado para todas las bases de datos), a nivel de base de datos (configurado mediante CREATE o ALTER con la cláusula COLLATE), a nivel de columna (mediante la instrucción ALTER) y a nivel de expresión (configurado en las cláusulas ORDER BY o SORT BY).

En SQL Server, para cambiar la colación del servidor tras la creación es necesario exportar todas las bases de datos de usuario, configurar la colación del servidor principal y, a continuación, volver a importar las bases de datos. PostgreSQL no permite cambiar la colación a nivel de base de datos tras su creación, aunque se pueden anular los valores predeterminados mediante la cláusula COLLATE en las sentencias SQL.

La cláusula COLLATE permite anular la configuración de colación predeterminada en las instrucciones CREATE DATABASE, en los comandos ALTER TABLE para columnas o dentro de consultas SQL para operaciones específicas, como la ordenación y las comparaciones.

Esta es la clasificación predeterminada para SQL Server en las configuraciones regionales de inglés de EE. UU. (en-US), donde CP1 hace referencia a la página de códigos, CI significa «sin distinción entre mayúsculas y minúsculas» y AS significa «sensible a los acentos».

Las páginas de códigos son conjuntos de caracteres que utilizan los sistemas operativos y los sistemas de bases de datos para asignar las distribuciones de teclado y los caracteres de los idiomas nacionales a cadenas de bits que el sistema puede interpretar, lo que constituye la base de las reglas de clasificación.

Sí, la configuración de ordenación establecida a nivel del servidor se convierte en la predeterminada para todas las bases de datos del sistema y las bases de datos de usuario creadas por esa instancia, incluidas las tablas temporales.