A QUEL é uma antiga linguagem de consulta para bancos de dados relacionais.
A QUEL é muito similar à SQL, mas ela é mais fácil de usar e tem uma escrita mais simples. Ela foi criada como parte do desenvolvimento do Ingres, na Universidade de Berkeley, Califórnia, baseada nas sugestões da linguagem não implementada de E. F. Codd. A QUEL foi usada por um curto período nos programas baseado dos códigos do Ingres, mais notadamente o Informix.
Diferença entre QUEL e SQL
De muitas formas, a QUEL é similar ao SQL. Uma diferença é que as declarações da QUEL são definidas com tuplas variáveis, onde podem ser usadas limitando as entradas ou retornando os resultados.
Universidade
Aluno
|
Materia
|
Nota
|
Situação
|
Alberto
|
Calculo
|
10
|
Aprovado
|
Lucas
|
Banco de Dados
|
4
|
Reprovado
|
Andréia
|
Programação
|
7
|
Aprovado
|
Lucas
|
Calculo
|
4.9
|
Reprovado
|
Mariana
|
Fisica
|
7
|
Aprovado
|
Fernando
|
Calculo
|
5
|
Aprovado
|
Um exemplo baseado nos dados acima é mostrado. Queremos pesquisar os nomes de todos os alunos que foram aprovados nas matérias.
range of busca is universidade
retrieve nome = busca.Aluno
where busca.nota >= 5
Nesta busca, nome é o nome da tupla a ser mostrada. Neste caso, todas as linhas contendo nota>=5 serão mostradas. Fazendo o mesmo exemplo em SQL percebemos o quanto elas são parecidas:
select busca.Aluno as nome
from universidade as busca
where busca.nota >= 5
Vamos considerar agora um exemplo para criar a tabela universidade, inserir uma linha de informação, e acessar e modificar uma informação dentro dela. Em QUEL temos:
create universidade (Aluno = c20, Materia = c15, Nota = i2, Situação = c10)
append to universidade(Aluno = "Mariana", Materia = "Fisica", Nota = 7, Situação = "Aprovada")
range of P is universidade
retrieve (busca.all)
where P.materia = "fisica
print P
range of P is universidade
replace universidade(Nota = p.Nota + 1)
print P
Abaixo está a mesma declaração em SQL:
create table universidade (Aluno char(20), Materia char(15), Nota int, Situação char(10)
insert universidade (Aluno, Materia, Nota, Situação), values ("Mariana", "Fisica", 7, "Aprovada")
select
from universidade as p
where p.Materia = "Fisica"
update universidade
set Nota = Nota + 1
Note que cada comando em QUEL usa uma sintaxe única, porém em SQL, cada comando similar como INSERT e UPDATE usa estilos completamente diferentes.
Outra vantagem da QUEL foi construir um sistema interno para movimentar uma grande massa de dados para fora do banco de dados. Considere o comando:
copy universidade(Aluno=c0, comma=d1, Materia=c0, comma=d1, Nota=c0, comma=d1, situação=c0, nl=d1)
into "/estudantes.txt"
que cria uma vírgula como delimitador de campo para cada registro na tabela universidade. O d1 indica um delimitador, ao invés de um tipo de dados. Modificando o into para from revertemos o processo. Comandos similares estão disponíveis em muitos sistemas SQL, mas geralmente como ferramentas externas, ao invés de serem internos à linguagem SQL. Isso os torna indisponíveis para as "stored procedures" ("funções armazenadas").