SQL:1999 (también llamado SQL 3) fue la cuarta revisión del lenguaje de consulta de bases de datos SQL . Introdujo muchas características nuevas, muchas de las cuales requirieron aclaraciones en la versión posterior SQL:2003 . Mientras tanto, [ aclaración necesaria ] SQL:1999 está obsoleto.
Los documentos de la norma ISO se publicaron entre 1999 y 2002 en varias entregas, la primera de las cuales constaba de varias partes. A diferencia de las ediciones anteriores, el nombre de la norma utilizaba dos puntos en lugar de un guion para mantener la coherencia con los nombres de otras normas ISO . La primera entrega de SQL:1999 tenía cinco partes:
Posteriormente se publicaron tres partes más, también consideradas parte de SQL:1999:
El estándar SQL:1999 requiere un tipo booleano, [1] pero muchos servidores SQL comerciales ( Oracle Database , IBM Db2 ) no lo admiten como tipo de columna, tipo de variable o no lo permiten en el conjunto de resultados. Microsoft SQL Server es uno de los pocos sistemas de bases de datos que admite correctamente valores BOOLEAN utilizando su tipo de datos "BIT" [ cita requerida ] . Cada campo de 1 a 8 bits ocupa un byte completo de espacio en el disco. MySQL interpreta "BOOLEAN" como sinónimo de TINYINT (entero con signo de 8 bits). [2] PostgreSQL proporciona un tipo booleano conforme al estándar. [3]
A veces llamados simplemente tipos distintos , estos se introdujeron como una característica opcional (S011) para permitir que los tipos atómicos existentes se extiendan con un significado distintivo para crear un nuevo tipo y, de ese modo, permitir que el mecanismo de verificación de tipos detecte algunos errores lógicos, por ejemplo, agregar accidentalmente una edad a un salario. Por ejemplo:
crear tipo edad como entero FINAL ; crear tipo salario como entero FINAL ;
crea dos tipos diferentes e incompatibles. Los tipos distintos de SQL utilizan equivalencia de nombres, no equivalencia estructural, como las definiciones de tipos en C. Aún es posible realizar operaciones compatibles en (columnas o datos) de tipos distintos utilizando un tipo explícito CAST
.
Pocos sistemas SQL los admiten. IBM Db2 es uno de los que los admite. [4] La base de datos Oracle no los admitía en 2012, recomendando en su lugar emularlos mediante un tipo estructurado de un solo lugar . [5]
Estas son la columna vertebral de la extensión de base de datos relacional de objetos en SQL:1999. Son análogas a las clases en lenguajes de programación orientados a objetos . SQL:1999 solo permite herencia única .
SQL:1999 agregó una construcción WITH [RECURSIVE] que permite que las consultas recursivas, como el cierre transitivo , se especifiquen en el lenguaje de consulta mismo; consulte expresiones de tabla comunes .
GROUP BY se amplió con ROLLUP, CUBE y GROUPING SETS.
Soporte completo para RBAC a través de CREAR ROL.
SQL:1999 introdujo la palabra clave UNNEST. [6]