Álgebra Relacional
A Álgebra Relacional é uma linguagem de consulta processual. Ela descreve o como obter o
resultado, utilizando um conjunto de operadores que manipulam relações (tabelas) e
produzem novas relações. É a espinha dorsal matemática por trás dos Sistemas de
Gerenciamento de Banco de Dados Relacionais (SGBDRs).
Os principais operadores, essenciais para a manipulação de dados, são:
● Seleção ($\sigma$): Filtra as tuplas (linhas) de uma relação que satisfazem uma
condição específica.
● Projeção ($\pi$): Seleciona os atributos (colunas) desejados da relação, eliminando
colunas não especificadas.
● União ($\cup$): Combina todas as tuplas de duas relações compatíveis (mesmo
número e tipo de atributos).
● Diferença ($-$): Retorna as tuplas que estão em uma relação, mas não na segunda.
● Produto Cartesiano ($\times$): Combina cada tupla de uma relação com cada tupla
de outra, resultando em todas as combinações possíveis.
● Junção ($\bowtie$): Combina tuplas de duas relações com base em uma condição de
igualdade ou outra lógica.
SQL (Structured Query Language)
O SQL, por outro lado, é uma linguagem declarativa. Em vez de especificar como executar a
consulta (como na Álgebra Relacional), ele foca no que se deseja obter do banco de dados.
Os comandos SQL são classificados em diferentes categorias. Destacamos os comandos
básicos de manipulação e consulta de dados (DQL - Data Query Language e DML - Data
Manipulation Language):
● SELECT: É o comando principal para recuperar dados.
● FROM: Especifica a(s) tabela(s) de origem.
● WHERE: Aplica condições para filtrar os registros.
● INSERT: Utilizado para adicionar novos dados.
● UPDATE: Utilizado para modificar dados existentes.
● DELETE: Utilizado para remover dados.
Subconsultas
Uma subconsulta é uma consulta SQL aninhada dentro de outra consulta. Elas são
ferramentas poderosas para construir consultas complexas e realizar operações em etapas.
Subconsulta Não Relacionada (Independente)
A subconsulta não relacionada é aquela que pode ser executada de forma independente da
consulta externa. Ela é executada apenas uma vez, e seu resultado é então fornecido à
consulta externa para ser usado na cláusula WHERE, FROM, ou HAVING.
Características:
● Não referencia nenhuma coluna da consulta externa.
● O resultado pode ser um valor único (escalar) ou uma lista/conjunto de valores.
Exemplo de uso com valor escalar:
Se a subconsulta retorna um único valor, podemos usar operadores de comparação como =,
>, <, [Link] nome
FROM Funcionarios
WHERE salario = (
SELECT AVG(salario)
FROM Funcionarios
);
Neste exemplo, o salário médio é calculado primeiro e, em seguida, a consulta externa
encontra os funcionários com esse salário.
Exemplo de uso com lista de valores:
Quando a subconsulta retorna um conjunto de valores, usamos operadores de conjunto como
IN, NOT IN, ANY, e ALL.
● IN: O valor na consulta externa deve corresponder a qualquer valor retornado pela
subconsulta.
● ALL: O valor na consulta externa deve ser maior, menor, ou igual a todos os valores
retornados.
● ANY: O valor na consulta externa deve ser maior, menor, ou igual a pelo menos um
dos valores retornados.
SELECT nome_projeto
FROM Projetos
WHERE id_projeto IN (
SELECT id_projeto
FROM Funcionarios_Projetos
WHERE id_funcionario = 'F100'
);
Este código SQL recupera os nomes dos projetos nos quais o funcionário 'F100' está
envolvido, sendo o resultado da subconsulta uma lista de IDs de projeto.