SQL:
ÁLGEBRA RELACIONAL
Prof. Msc. Pedro Henrique Neves da Silva
• A Álgebra Relacional é coleção de operações utilizadas para manipular relações;
• Essas operações são usadas para:
– Selecionar tuplas de uma determinada relação;
– Combinar tuplas relacionadas a diversas relações com o propósito de especificar uma consulta.
Álgebra Relacional
Definição
• São divididas em dois grupos:
– Fundamentais: seleção, projeção, produto cartesiano, renomear, união, diferença de conjuntos;
– Adicionais: intersecção de conjuntos, junção natural, divisão, agregação;
Álgebra Relacional
Definição
• Seleciona tuplas que satisfaçam à condição de seleção
• condição_seleção pode:
– Envolver operadores de comparação (=, >, ≥, <, ≤, ≠) – Combinar condições usando-se , ∧ ∨
• relação_argumento é o resultado de alguma operação da álgebra relacional
Álgebra Relacional
Seleção
σ
condição_seleção( relação_argumento )
cliente (nro_cli, nome_cli, end_cli, saldo, cod_vend)
Álgebra Relacional
Seleção
• Projeta as colunas solicitadas (i.e. produz um subconjunto vertical)
• lista_atributos é a lista de atributos separados por vírgula;
• relação_argumento é o resultado de alguma operação da álgebra relacional
Álgebra Relacional
Projeção
π
lista_atributos( relação_argumento )
cliente (nro_cli, nome_cli, end_cli, saldo, cod_vend)
Álgebra Relacional
Projeção
• Combina tuplas de duas relações (relações não precisam ter atributos comum)
• Resulta em todas as combinações de tuplas possíveis entre as relações participantes
Álgebra Relacional
Produto Cartesiano
relação argumento 1 × relação argumento 2
cliente (nro_cli, nome_cli, end_cli, saldo, cod_vend)
vendedor (cod_vend, nome_vend)
Álgebra Relacional
Produto Cartesiano
Álgebra Relacional
Produto Cartesiano
• Renomeia:
– nome da relação
– nomes dos atributos da relação
– nome da relação e nomes dos atributos
• indicada para ser utilizada quando uma relação é usada mais do que uma vez para responder à consulta
Álgebra Relacional
Renomear
ρ
S(B1,B2, ..., Bn)(relação)
cliente (nro_cli, nome_cli, end_cli, saldo, cod_vend) Exemplos:
• ρ
comprador(cliente)
• ρ
(código, nome, rua, saldo, vendedor)(cliente)
• ρ
comprador (código, nome, rua, saldo, vendedor)(cliente)
Álgebra Relacional
Renomear
Álgebra Relacional
SELECT
SQL Álgebra Relacional
SELECT projeção
FROM produto cartesiano
WHERE seleção
SELECT <lista_de_atributos>
FROM <lista_de_tabelas>
[WHERE condições_seleção]
• Ordena as tuplas que aparecem no resultado de uma consulta
– asc (padrão): ordem ascendente – desc: ordem descendente
• Ordenação pode ser especificada em vários atributos
– a ordenação referente ao primeiro atributo é prioritária. Se houver valores repetidos, então é utilizada a ordenação referente ao segundo atributo, e assim por diante
Álgebra Relacional
ORDER BY
• Renomeia:
– atributos:
• deve aparecer na cláusula SELECT
• útil para a visualização das respostas na tela
– relações:
• deve aparecer na cláusula FROM
• útil quando a mesma relação é utilizada mais do que uma vez na mesma consulta
Álgebra Relacional
AS
• Concatena tuplas relacionadas de duas relações
• Passos:
– forma um produto cartesiano das relações
– faz uma seleção forçando igualdade sobre os atributos que aparecem nas relações
Álgebra Relacional
Junção
relação argumento 1
condição_junçãorelação argumento 2
Álgebra Relacional
Junção
Álgebra Relacional
Junção
Álgebra Relacional
Junção
• [INNER] JOIN
– somente as tuplas de R que têm tuplas correspondentes em S – e vice-versa – aparecem no resultado
• LEFT [OUTER] JOIN
– mantém cada tupla de R na tabela de junção
– preenche com valores nulos as tuplas de S que não correspondem à coluna de junção em R
Álgebra Relacional
Junção
• RIGHT [OUTER] JOIN
– mantém cada tupla de S na tabela de junção
– preenche com valores nulos as tuplas de R que não correspondem à coluna de junção em S
• FULL [OUTER] JOIN
– mantém cada tupla de R e de S na tabela de junção
– preenche com valores nulos as tuplas que não correspondem à coluna de junção