Bancos de Dados - Aula 14 - Linguagem de consulta – SQL Parte II
Introdução à Consulta em SQL
Estrutura Básica de uma Consulta SQL
- A estrutura básica de uma consulta SQL inclui os comandos
SELECT,FROMeWHERE. Esses elementos são fundamentais para extrair informações do banco de dados.
- No comando
SELECT, deve-se listar os atributos que compõem a resposta da consulta. OFROMespecifica as tabelas que contêm os dados necessários, enquanto oWHEREdefine as condições que esses dados devem atender.
Comparação com Álgebra Relacional
- A estrutura das consultas em SQL é semelhante ao que foi estudado em álgebra relacional e cálculo relacional, facilitando a execução das consultas após prática com linguagens formais.
Exemplo Prático: Consultas Simples
- Um exemplo simples seria recuperar datas de nascimento e endereços dos funcionários com sobrenome "Brotas". Para isso, utiliza-se a tabela "funcionário" e a condição no
WHERE.
- Se não houver condições específicas, como na seleção de todos os identificadores dos funcionários, pode-se omitir o
WHERE.
Consultas Envolvendo Múltiplas Tabelas
- Ao realizar consultas envolvendo mais de uma tabela, como funcionário e departamento, é necessário especificar ambas no
FROMpara obter informações corretas sobre o departamento onde o funcionário trabalha.
- É importante indicar qual atributo está sendo selecionado de cada tabela para evitar confusões entre colunas com nomes iguais.
Produto Cartesiano e Condições
- Quando se utilizam múltiplas tabelas no
FROM, ocorre um produto cartesiano. As condições noWHEREajudam a filtrar as tuplas corretas.
- A verificação das condições é crucial para garantir que apenas as tuplas relevantes sejam retornadas na consulta.
Consultas Avançadas: Projetos Localizados em São Paulo
Estrutura da Consulta Complexa
- Para listar projetos localizados em São Paulo, será necessário utilizar três tabelas: projeto (informações do projeto), departamento (informações do departamento), e funcionário (dados do gerente).
Seleção dos Dados Relevantes
Consulta SQL e Manipulação de Dados
Seleção de Tuplas Corretas
- O objetivo é escolher tuplas onde o número do projeto seja igual ao número do departamento, garantindo que o gerente do departamento (G idente) corresponda ao identificador do funcionário.
- A localização do projeto deve ser em São Paulo, sendo uma condição essencial para a seleção das tuplas.
Uso da Cláusula FROM
- Exemplo de consulta utilizando a mesma tabela duas vezes, renomeando as tabelas conforme seu papel na consulta.
- A consulta busca recuperar o nome do funcionário e o nome de seu supervisor imediato, ambos presentes na tabela funcionário.
Verificação de Condições
- É necessário verificar se o identificador do supervisor corresponde ao identificador correto na dupla formada pelo produto cartesiano.
- Se a tupla contém as informações corretas sobre os dados do supervisor, ela será selecionada; caso contrário, não aparecerá no resultado.
Recuperação de Salários
- Para recuperar os salários de todos os funcionários, utiliza-se
SELECT ALL salárioda tabela funcionário para garantir que todos os salários sejam incluídos.
- O uso de
ALLé importante para evitar que salários duplicados sejam desconsiderados na resposta.
Consultas Mais Elaboradas
- Uma consulta mais complexa envolve listar números de projetos com funcionários cujo sobrenome é Silva, considerando tanto trabalhadores quanto gerentes.
- A solução envolve duas consultas separadas: uma para gerentes e outra para trabalhadores com sobrenome Silva.
União e Eliminação de Duplicatas
- Os resultados das duas consultas são unidos; como ambos têm um único atributo comum (números dos projetos), isso facilita a união.
- No SQL, duplicatas são eliminadas automaticamente. Para incluir duplicatas, deve-se usar
ALL.
Comandos LIKE e Filtragem por Endereço
- O comando
LIKEpermite buscar registros em campos compatíveis com strings. Por exemplo, pode-se procurar endereços que contenham "São Paulo".
Consulta SQL e Funções Agregadas
Filtrando Dados com Condições
- A consulta permite filtrar funcionários que têm "SP" no valor do endereço, além de buscar por datas de nascimento entre 1950 e 1959.
Ordenação dos Resultados
- O comando
ORDER BYé introduzido para definir a ordenação das tuplas na resposta, inicialmente pelo nome do departamento em ordem ascendente.
- Em caso de nomes de departamentos repetidos, a ordenação secundária será feita pelo nome do funcionário também em ordem ascendente.
Tratamento de Valores Nulos
- O tratamento de valores nulos em SQL é feito com o comando
IS NULL, onde se verifica se um valor é nulo ou não.
- A consulta busca os nomes dos funcionários sem supervisores, utilizando a condição que verifica se o atributo supervisor (
suid) é nulo.
Junção de Tabelas
- A sintaxe da junção é apresentada, mostrando como selecionar atributos de duas tabelas (funcionário e departamento), especificando as condições necessárias para a junção.
- Renomeações são utilizadas nas tabelas para facilitar a referência durante as consultas, permitindo uma melhor organização dos dados.
Funções Agregadas em SQL
- As funções agregadas como soma, máximo, mínimo e média são aplicadas à tabela funcionário para calcular salários sem condições específicas inicialmente.
- Uma subconsulta envolvendo a função
COUNTé mencionada, contando dependentes associados aos funcionários com uma condição específica sobre o número deles.
Agrupamento e Restrições
- A cláusula
HAVINGé utilizada para aplicar restrições sobre funções agregadas após agrupamentos realizados pela consulta anterior.
- A contagem de funcionários com salário maior que 40.000 é agrupada por departamento; apenas departamentos que atendem essa condição aparecem na resposta final.
Encerramento da Aula