El estándar SQL:2023 ya fue publicado, conócelo
Hace pocos días la Organización Internacional para la Estandarización (ISO) aprobó y publicó el estándar internacional SQL:2023 (ISO/IEC 9075), que se define como la novena edición de la especificación para el lenguaje SQL utilizado para manipular datos en DBMS relacionales. La última actualización de la especificación se publicó en 2016 (SQL:2016).
Para quienes desconocen de SQL (Structured Query Language) deben saber que es un lenguaje estandarizado para administrar bases de datos relacionales y realizar varias operaciones en los datos que contienen. Creado en la década de 1970, SQL es utilizado regularmente no solo por administradores de bases de datos, sino también por desarrolladores que escriben scripts de integración de datos y por analistas de datos que buscan configurar y ejecutar consultas analíticas. El estándar se actualiza periódicamente para agregar nuevas funciones y realizar cambios en el idioma existente.
¿Cuáles son las novedades en la nueva especificación SQL:2023?
Se agregó la extensión SQL/PGQ (Property Graph Queries) para manipular conjuntos de datos interconectados que forman un gráfico. Básicamente, esta nueva función facilita la consulta de datos en tablas como si estuvieran en una base de datos de gráficos, proporcionando una alternativa, quizás más intuitiva, a escribir consultas de unión complejas. Esta característica podría ser muy bienvenida en la comunidad de ciencia de datos.
Otro de los cambios que se destaca es que se definió la capacidad de personalizar el comportamiento del procesamiento de valores NULL en presencia de la restricción «UNIQUE». Si se especifica «UNIQUE NULLS DISTINCT», los valores NULL agregados a la base de datos se tratarán como únicos.
Ademas de ello, tambien podremos encontrar que se han ampliado las posibilidades de realizar la operación «ORDER BY» en tablas agrupadas. La especificación ahora permite operaciones para ordenar tablas agrupadas por una columna que no aparece en la lista de salida SELECT de la tabla agrupada. Anteriormente, la mayoría de los DBMS permitían tales manipulaciones, pero la especificación no definía tal posibilidad.
Tambien podremos encontrar que se agregaron variantes de varios caracteres de la función TRIM: LTRIM, RTRIM y BTRIM, que permiten cortar desde el principio o el final de la cadena los caracteres especificados en la lista. En comparación con TRIM, las nuevas funciones tienen una sintaxis más simple.
Se amplió la capacidad de detectar ciclos en consultas recursivas usando la expresión «CYCLE«. Un campo con un marcador de ciclo ahora puede ser de tipo «booleano» en lugar de una cadena, y pasar el signo de ciclo en forma de valores verdaderos y falsos.
De los demás cambios que se destacan:
- Se agregaron nuevas funciones LPAD y RPAD para rellenar una cadena a un tamaño determinado. Por ejemplo:
- Para los tipos «VARCHAR» y «CHARACTER VARYING» se permite no especificar el tamaño máximo, en este caso el tamaño máximo dependerá de la implementación del DBMS.
- Se agregó una nueva función agregada any_value(), que devuelve un valor arbitrario no NULL del conjunto de datos de entrada.
- Se agregó la capacidad de especificar literales hexadecimales, binarios y octales. Por ejemplo:
- Se permite el uso del carácter de subrayado en el número para aumentar la visibilidad de los literales digitales.
- Capacidades significativamente ampliadas relacionadas con el procesamiento de datos en formato JSON.
- Se agregó un tipo JSON separado (en el estándar SQL: 2016, se requería que los datos JSON se almacenaran en campos con tipos de cadena).
- Soporte implementado para operaciones JSON_SERIALIZE, JSON_SCALAR e IS JSON.
- Se agregaron 14 nuevos métodos para aplicar a valores SQL/JSON dentro del lenguaje SQL/JSON.
Finalmente, si estás interesado en poder conocer más al respecto, puedes consultar los detalles asi como ejemplos prácticos de los cambios implementados en el siguiente enlace.
Cabe mencionar que en PostgreSQL, la mayoría de las funciones propuestas en SQL:2023 ya están disponibles o están previstas para su inclusión en la próxima versión principal, mientras que por la parte de la compatibilidad con ANY_VALUE, guiones bajos en números, literales hexadecimales/binarios/octales y literales hexadecimales en SQL/JSON aparecerá en la versión de otoño de PostgreSQL.
Se espera compatibilidad con funciones mejoradas para el tipo JSON, sintaxis SQL/JSON simplificada, nuevos métodos JSON y la extensión PGQ en versiones posteriores a PostreSQL 16, pero el trabajo en estas áreas aún no ha comenzado. El resto de las funciones de SQL:2023 ya están disponibles en las versiones existentes de PostreSQL.