QUEL

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[editar | editar código-fonte]

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").