Consultas jerárquicas y recursivas en SQL


Una consulta jerárquica es un tipo de consulta SQL que maneja datos de modelos jerárquicos . Son casos especiales de consultas de punto fijo recursivas más generales, que calculan cierres transitivos .

En SQL estándar : 1999 , las consultas jerárquicas se implementan mediante expresiones de tabla común recursivas (CTE). A diferencia de la cláusula de conexión anterior de Oracle , los CTE recursivos se diseñaron con semántica de punto fijo desde el principio. [1] Los CTE recursivos del estándar estaban relativamente cerca de la implementación existente en IBM DB2 versión 2. [1] Los CTE recursivos también son compatibles con Microsoft SQL Server (desde SQL Server 2008 R2), [2] Firebird 2.1 , [3] PostgreSQL 8.4+ , [4] SQLite 3.8.3+ , [5] IBM Informixversión 11.50+, CUBRID , MariaDB 10.2+ y MySQL 8.0.1+ . [6] Tableau tiene documentación que describe cómo se pueden utilizar los CTE. TIBCO Spotfire no admite CTE, mientras que la implementación de Oracle 11g Release 2 carece de semántica de punto fijo.

Sin expresiones de tabla comunes o cláusulas de conexión, es posible lograr consultas jerárquicas con funciones recursivas definidas por el usuario. [7]

Una expresión de tabla común, o CTE, (en SQL ) es un conjunto de resultados llamado temporal, derivada de una consulta sencilla y definida dentro del ámbito de ejecución de un SELECT, INSERT, UPDATE, o DELETEcomunicado.

Los CTE se pueden considerar como alternativas a las tablas derivadas ( subconsultas ), vistas y funciones definidas por el usuario en línea.

Las expresiones de tabla comunes son compatibles con Teradata (a partir de la versión 14), DB2 , Informix (a partir de la versión 14.1), Firebird (a partir de la versión 2.1), [8] Microsoft SQL Server (a partir de la versión 2005), Oracle (con recursividad desde 11g versión 2), PostgreSQL (desde 8.4), MariaDB (desde 10.2), MySQL (desde 8.0), SQLite (desde 3.8.3), HyperSQL , Informix (desde 14.10), [9] Google BigQuery , Sybase (comenzando con la versión 9),Vertica , H2 (experimental), [10] y muchos otros . Oracle llama a los CTE "factorización de subconsultas". [11]