Baixe o app para aproveitar ainda mais
Prévia do material em texto
Implementação de Banco de Dados Aula 2 Professor Daniel Silos - 5ª edição - 2016 dsilos@live.estacio.br Estrutura Básica de Consultas • SQL é baseada em operações de conjuntos e operações relacionais com certas modificações e avanços • Uma consulta SQL típica tem o formato: : SELECT A1, A2, ..., An FROM r1, r2, ..., rm WHERE P; – Ai - atributo – Ri - relação – P - predicativo. • O resultado de uma consulta SQL é uma relação; Diagrama Lógico SHARKS ESPECIE (IDEspecie, Nome_Cientifico, CorDorso, CorVentre, CorBarbatana, Descricao, Foto, Denticao, TamMenor, TamMaior,TamMedio,Tam_Medio_Filhote, Status_Extincao, Habitat, TipoReproducao, TipoFocinho). PAIS (CODPais, NomePais). Esquema do Banco de Dados Shark: Esp_Pais (IDEspecie, CODPais) Nome (IDNome, IDEspecie, NomePopular) Tubarao (IDTubarao, IDEspecie, Comprimento, Sexo) Esquema do Banco de Dados Shark: Area (CodArea, NomeArea) Local (CODLocal, CODArea, NomeLocal) Captura (NUMCaptura, IDTubarao, CODLocal, LATITUDE, LONGITUDE, DATA, TempAgua) Esquema do Banco de Dados Shark: A cláusula SELECT • Lista os atributos desejados no resultado de uma consulta • Exemplo: encontre o nome científico de todas as espécies de tubarões cadastradas na relação ESPECIE: SELECT Nome_Cientifico FROM ESPECIE; • NOTA: nomes em SQL não são caso sensitivo (isto é, você pode utilizar letras em caixa alta ou caixa baixa). • Exemplo: nome_cientifico≡ NOME_CIENTIFICO ≡ nome_Cientifico ≡ Nome_cientifico. Amostra do resultado: • SQL permite duplicatas de relações em resultados de consultas. • Para forçar a eliminação de duplicatas, insira a palavra DISTINCT após SELECT. • A palavra ALL especifica que as duplicatas não serão removidas. ALL ocorre por default. Exemplos do Estudo de Caso – Sharks SELECT SEXO FROM TUBARAO; ou SELECT ALL SEXO FROM TUBARAO; SELECT DISTINCT SEXO FROM TUBARAO; . . . • Um asterisco na cláusula SELECT denota “todos os atributos” SELECT * FROM ESPECIE; • A cláusula SELECT pode conter expressões aritméticas envolvendo os operadores +, –, , e /, e operação de restrição em atributos de tuplas. • A consulta SELECT COMPRIMENTO * 39.3700787 FROM TUBARAO; retornará uma relação com valores de comprimento de tubarões convertidos de metros para polegadas (1 m = 39,37007787 polegadas). SELECT * FROM ESPECIE; OBS: NA ILUSTRAÇÃO É EXIBIDA UMA AMOSTRA A cláusula WHERE • A cláusula WHERE especifica condições que o resultado precisa satisfazer. Exemplo: SELECT IDEspecie, Nome_Cientifico, CorDorso, CorVentre, Denticao FROM ESPECIE WHERE CorVentre = 'branco amarelado'; OBS: Preste atenção, pois embora SELECT IDEspecie, Nome_Cientifico, CorDorso, CorVentre, Denticao FROM ESPECIE WHERE CorVentre = 'branco amarelado' seja idêntico a: SELECT IDESPECIE, NOME_CIENTIFICO, CORDORSO, CORVENTRE, DENTICAO FROM ESPECIE WHERE CORVENTRE = 'branco amarelado'; SELECT IDEspecie, Nome_Cientifico, CorDorso, CorVentre, Denticao FROM ESPECIE WHERE CorVentre = 'branco amarelado' não é idêntico a: SELECT IDEspecie, Nome_Cientifico, CorDorso, CorVentre, Denticao FROM ESPECIE WHERE CorVentre = ‘Branco Amarelado' Os valores armazenados em determinado campo são caso sensitivos, embora o SQL não seja. É sempre bom prestar atenção! Podemos evitar uma confusão utilizando a função UPPER. Exemplo: SELECT IDESPECIE, NOME_CIENTIFICO, CORDORSO, CORVENTRE, DENTICAO FROM ESPECIE WHERE UPPER(CorVentre) = 'BRANCO AMARELADO'; Ou a função LOWER. Exemplo: SELECT IDESPECIE, NOME_CIENTIFICO, CORDORSO, CORVENTRE, DENTICAO FROM ESPECIE WHERE LOWER(CorVentre) = 'branco amarelado'; Dica: Evite digitar comandos em SQL no Word, Wordpad ou Bloco de Notas e depois copiar o código para um editor SQL. Alguns caracteres como o apóstrofo (‘) são diferentes. Procure fazer o oposto, isto é, digite no editor SQL e depois cole em um editor de preferência. Em aula prática de laboratório você pode salvar os arquivos de extensão “.sql” criados no SQL Developer para um pendrive ou salvar na nuvem ou enviá-los para si mesmo por e-mail. Mais Exemplos: SELECT IDESPECIE, NOME_CIENTIFICO, CORDORSO, CORVENTRE, DENTICAO FROM ESPECIE WHERE Denticao = 'pontiagudos'; SELECT NOME_CIENTIFICO, TamMenor, TamMaior, TamMedio, Tam_medio_Filhote FROM Especie WHERE TamMenor < 1.2; SELECT NOME_CIENTIFICO, TamMenor, TamMaior, TamMedio, Tam_medio_Filhote FROM Especie WHERE Tam_Medio_Filhote >= 0.7; Operador de comparação BETWEEN SELECT NOME_CIENTIFICO, TamMenor, TamMaior, TamMedio, Tam_medio_Filhote FROM Especie WHERE TamMedio BETWEEN 3 AND 5; A cláusula WHERE • Resultados comparativos podem ser combinados utilizando-se conectores lógicos AND, OR e NOT. • Comparações podem ser aplicadas em resultados de expressões aritméticas. EXEMPLOS: SELECT NOME_CIENTIFICO, TamMenor, TamMaior, TamMedio, Tam_medio_Filhote FROM Especie WHERE TamMedio NOT BETWEEN 1 AND 4; SELECT NOME_CIENTIFICO, TamMenor, TamMaior, TamMedio, Tam_medio_Filhote FROM Especie WHERE Tam_Medio_Filhote >= 0.7 OR TamMedio > 4; SELECT NOME_CIENTIFICO, TamMenor, TamMaior, TamMedio, Tam_medio_Filhote FROM Especie WHERE Tam_Medio_Filhote >= 0.7 AND TamMedio > 4; O operador de renomeação (ALIAS) • O SQL permite renomear atributos (colunas) utilizando a cláusula AS : velho_nome AS novo_nome SELECT NOME_CIENTIFICO AS "NOME CIENTÍFICO", TamMenor AS MENOR, TamMaior AS MAIOR, TamMedio AS "TAMANHO MÉDIO", Tam_medio_Filhote AS "TAMANHO MÉDIO DOS FILHOTES" FROM Especie WHERE Tam_Medio_Filhote >= 0.7 AND TAMMEDIO > 4; O AS, todavia, é opcional. Logo a consulta abaixo retorna o mesmo resultado da anterior: SELECT NOME_CIENTIFICO "NOME CIENTÍFICO", TamMenor MENOR, TamMaior MAIOR, TamMedio "TAMANHO MÉDIO", Tam_medio_Filhote "TAMANHO MÉDIO DOS FILHOTES" FROM Especie WHERE Tam_Medio_Filhote >= 0.7 AND TAMMEDIO > 4; Variáveis de tabelas • Variáveis de tabelas são definidas por meio da cláusula FROM e do uso da cláusula AS. • OBS: No Oracle, a cláusula AS precisa ser ignorada como variável de tabela. Ex: Encontre os nomes populares e o nome científico da espécie de id igual a ‘010003’. SELECT NOMEPOPULAR, NOME_CIENTIFICO FROM ESPECIE E, NOME N WHERE E.IDESPECIE = N.IDESPECIE AND E.IDESPECIE = '010003'; Operações de STRING • SQL inlui um operador de strings para comparações entre strings. • O operador LIKE usa padrões que se utilizam de dois caracteres: – percentagem (%). O caractere % corresponde a qualquer substring. – underscore (_). O caractere _ corresponde a qualquer caractere. • Encontre o nome popular de todos os tubarões iniciados com a letra “T”: SELECT NOMEPOPULAR FROM NOME WHERE NOMEPOPULAR LIKE 'T%'; Mais exemplos: Encontre o nome popular de todos os tubarões terminados com a letra “d”: SELECT NOMEPOPULAR FROM NOME WHERE NOMEPOPULAR LIKE '%d'; Mais exemplos: Encontre o nome popular de todos os tubarões que tem a sequencia “bra” em qualquer parte do nome: SELECT NOMEPOPULAR FROM NOME WHERE NOMEPOPULAR LIKE '%bra%'; SELECT IDESPECIE, NOME_CIENTIFICO, CORDORSO, CORVENTRE, DENTICAO FROM ESPECIE WHERE Denticao LIKE 'pontiagudos'; • SQL suporta uma variedade de operações de string tais como – concatenação (utilizando “||”) – conversão de caixa alta para caixa baixa (e vice versa) - UPPER e LOWER já comentados. – Outros. • Exemplo de Concatenação: SELECT IDESPECIE, NOME_CIENTIFICO, TamMenor ||' - '|| TamMedio || ' - ' || TamMaior "Tamanhos Menor, Médio e Maior " FROM Especie WHERE IDEspecie < '013011'; Ordenandoa visualização de tuplas • Podemos especificar DESC para ordem decrescente ou ASC para ordem crescente, para cada atributo; ordem crescente é o default. – Exemplo: ORDER BY nome_cliente DESC Exemplo: SELECT NOMEPOPULAR FROM NOME WHERE NOMEPOPULAR LIKE 'G%' ORDER BY NOMEPOPULAR ; Exemplo: SELECT NOMEPOPULAR FROM NOME WHERE NOMEPOPULAR LIKE 'G%' ORDER BY NOMEPOPULAR DESC; Operador IN Exemplo: A instrução abaixo apresenta o mesmo resultado que a instrução do próximo slide. SELECT IDEspecie, Nome_Cientifico, Denticao FROM ESPECIE WHERE Denticao = 'pequenos' OR Denticao = 'pontiagudos'; SELECT IDEspecie, Nome_Cientifico, Denticao FROM ESPECIE WHERE Denticao IN('pequenos','pontiagudos'); Referências – SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN, S. A. Sistema de banco de dados. 5ª ed. Rio de Janeiro: Campus, 2006 – ELMASRI, R.; NAVATHE, S., Sistemas de Banco de Dados. Pearson Education do Brasil, 8ª.Ed 2011. – Esquema de banco de dados faz parte de um banco de dados criado a partir de um conjunto de dados públicos de captura de tubarões dos anos de 2001 a 2015 na costa da Austrália. Os dados podem ser baixados no endereço: https://data.qld.gov.au/dataset/shark-control-program-shark-catch- statistics/resource/5c6be990-3938-4125-8cca-dac0cd734263 – OBS: As duas primeiras referências fazem parte do material didático e devem ser utilizados pelos alunos para uma maior compreensão dos conceitos abordados nesta aula.
Compartilhar