QUEL es un lenguaje de consulta de bases de datos relacionales , basado en el cálculo relacional de tuplas , con algunas similitudes con SQL . Fue creado como parte del proyecto de sistema de gestión de bases de datos Ingres en la Universidad de California, Berkeley , basado en el sublenguaje de datos ALPHA , sugerido previamente por Codd pero no implementado . QUEL se utilizó durante un breve período en la mayoría de los productos basados en el código fuente de Ingres, disponible gratuitamente, especialmente en una implementación llamada POSTQUEL, compatible con POSTGRES . [ 1 ]
Eugene Wong de Ingres fue el creador de QUEL. [ 2 ] A medida que Oracle e IBM DB2 ganaban cuota de mercado a principios de la década de 1980, Ingres y otras empresas que admitían QUEL se pasaron a SQL. [ 3 ] [ 2 ] QUEL sigue estando disponible como parte del SGBD Ingres, aunque no se han añadido mejoras de lenguaje específicas para QUEL desde hace muchos años.
Uso
Las sentencias QUEL siempre se definen mediante variables de tupla , que pueden utilizarse para limitar las consultas o devolver conjuntos de resultados. Considere este ejemplo, tomado de uno de los primeros documentos originales de Ingres: [ 4 ]
rango de E es EMPLEADO recuperar en W (COMP = Salario / (Edad - 18)) donde E.Name = "Jones" Aquí, E es una variable de tupla que abarca la relación EMPLOYEE , y se encuentran todas las tuplas de esa relación que satisfacen la condición . El resultado de la consulta es una nueva relación W , que tiene un único dominio COMP calculado para cada tupla que cumple la condición. Posteriormente, se pueden realizar consultas adicionales sobre la relación W.E.Name = "Jones"
Una sentencia SQL equivalente es:
crear tabla W comoseleccionar ( E . salario / ( E . edad - 18 )) como COMPdel empleado como Edonde E.nombre = ' Jones 'En este ejemplo, la relación se almacena en una nueva tabla W. Esto no es un análogo directo de la versión de QUEL; las relaciones en QUEL se parecen más a las tablas temporales que se ven en la mayoría de las implementaciones modernas de SQL.
Aquí hay un ejemplo de una sesión simple que crea una tabla, inserta una fila en ella, luego recupera y modifica los datos que contiene y finalmente elimina la fila que se agregó (suponiendo que el nombre es un campo único).
Otra característica de QUEL era un sistema integrado para mover registros en masa dentro y fuera del sistema. Considere este comando:
Copiar estudiante ( nombre = c0 , coma = d1 , edad = c0 , coma = d1 , sexo = c0 , coma = d1 , dirección = c0 , nl = d1 ) en "/student.txt"que crea un archivo delimitado por comas con todos los registros de la tabla de estudiantes. El d1 indica un delimitador, en lugar de un tipo de datos. Cambiar el into por un from revierte el proceso. Existen comandos similares en muchos sistemas SQL, pero generalmente como herramientas externas, en lugar de ser internas al lenguaje SQL. Esto hace que no estén disponibles para los procedimientos almacenados .
QUEL posee una capacidad de agregación extremadamente potente. Los agregados pueden anidarse y diferentes agregados pueden tener listas de selección y/o cláusulas de restricción independientes. Por ejemplo:
recuperar ( a = contar ( y . i por y . d donde y . str = "ii*" o y . str = "foo" ), b = máximo ( contar ( y . i por y . d )))Este ejemplo ilustra una de las peculiaridades menos deseables de QUEL, a saber, que todas las comparaciones de cadenas son potencialmente coincidencias de patrones. y.str = "ii*"coincide con todos y.strlos valores que comienzan con ii . En contraste, SQL usa solo para coincidencias exactas, mientras que como se usa cuando se requiere coincidencia de patrones.=
Véase también
- D4 (lenguaje de programación) (una implementación de D)
- Álgebra relacional
- Cálculo relacional
Referencias
- ↑ Stonebraker, M ; Rowe, LA (mayo de 1986). El diseño de POSTGRES (PDF) . Actas de la Conferencia ACM SIGMOD de 1986 sobre Gestión de Datos. Washington, DC.
- 1 2 "RDBMS Plenaria 1: Primeros años" (PDF) (Entrevista). Entrevista realizada por Burton Grad. Computer History Museum. 12 de junio de 2007. pág. 26. Consultado el 30 de mayo de 2025 .
- ↑ Morgenthaler, Gary (8 de diciembre de 2005). "Historia oral de Gary Morgenthaler" (PDF) (Entrevista). Entrevistado por Luann Johnson. Museo de Historia de la Computación. pág. 18. Recuperado el 30 de mayo de 2025 .
- ↑ Stonebraker, Michael ; Wong, Eugene; Kreps, Peter; Held, Gerald (1976). "El diseño e implementación de INGRES". ACM Transactions on Database Systems . 1 (3): 191. CiteSeerX 10.1.1.109.957 . doi : 10.1145/320473.320476 .
Lecturas adicionales
- CJ Date: Una crítica del lenguaje de base de datos SQL . SIGMOD Record 14(3): 8-54, 1984.
- Sistemas de gestión de bases de datos
- Lenguajes de consulta
- PostgreSQL
- Sistemas de gestión de bases de datos relacionales