Baixe o app para aproveitar ainda mais
Prévia do material em texto
Implementação de Banco de Dados Aula 3 Professor Daniel Silos - 4ª edição - 2016 dsilos@live.estacio.br Quando executamos o comando: SELECT * FROM CAPTURA; Obtemos (amostra inicial): Se m F o rm at aç ão SELECT NUMCAPTURA, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, DATA, TO_CHAR(TEMPAGUA, '99D99') FROM CAPTURA; FORMATAÇÃO DE SAÍDA DE DADOS NUMÉRICOS SELECT NUMCAPTURA, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, DATA, TO_CHAR(TEMPAGUA, '99D999') FROM CAPTURA; SELECT NUMCAPTURA, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, DATA, TO_CHAR(TEMPAGUA, '99D999') TEMPERATURA FROM CAPTURA; Para um formato como, por exemplo, o valor 1.850,80 pode ser visualizado através da seguinte formatação: TO_CHAR(<ATRIBUTO>, ‘9G999D99’); Exibir todos os dados da espécie cujo identificador é 1010003 cadastrados na tabela Tubarão: SELECT * FROM TUBARAO WHERE IDEspecie = 010003; Exemplo: OBS: Os dados correspondem a apenas uma amostra. SELECT IDTUBARAO, IDESPECIE, TO_CHAR(COMPRIMENTO, '9D9') COMPRIMENTO, SEXO FROM TUBARAO WHERE IDEspecie = 010003; resulta em: A instrução OBS: Os dados correspondem a apenas uma amostra. Sabendo-se que deseja-se converter o comprimento (medido em metros) para centímetros: SELECT IDTUBARAO, IDESPECIE, TO_CHAR (COMPRIMENTO * 100, '999D9') COMPRIMENTO, SEXO FROM TUBARAO WHERE IDEspecie = 010003; OBS: Os dados correspondem a apenas uma amostra. Sabendo-se que deseja-se converter o comprimento (medido em metros) para milímetros: SELECT IDTUBARAO, IDESPECIE, TO_CHAR (COMPRIMENTO * 1000, '9G999D9') COMPRIMENTO, SEXO FROM TUBARAO WHERE IDEspecie = 010003; OBS: Os dados correspondem a apenas uma amostra. E o que acontece quando a formatação não comportar o tamanho do dado? SELECT IDTUBARAO, IDESPECIE, TO_CHAR (COMPRIMENTO * 1000, '999D9') COMPRIMENTO, SEXO FROM TUBARAO WHERE IDEspecie = 010003; OBS: Os dados correspondem a apenas uma amostra. Exibir os dados dos nomes científicos e o status de extinção das espécies cadastradas na relação Espécie: OBS2: Siglas e Significados: V – Lista Vermelha; A – Ameaçada; Q – Quase Ameaçada; F – Fora de Perigo. OBS1: Os dados correspondem a apenas uma amostra. SELECT NOME_CIENTIFICO, STATUS_EXTINCAO FROM ESPECIE; Exibir os dados dos nomes científicos e o status de extinção das espécies cadastradas na relação Espécie em apenas um campo chamado Dados - Espécies: OBS2: Siglas e Significados: V – Lista Vermelha; A – Ameaçada; Q – Quase Ameaçada; F – Fora de Perigo. OBS1: Os dados correspondem a apenas uma amostra. SELECT NOME_CIENTIFICO || ' – ' || STATUS_EXTINCAO "Dados – Espécie" FROM ESPECIE; Exemplo: SELECT * FROM TUBARAO WHERE SEXO IS NULL; Cláusula IS NULL OBS: Os dados correspondem a apenas uma amostra. Exemplo: SELECT * FROM TUBARAO WHERE COMPRIMENTO IS NULL; Cláusula IS NULL OBS: Os dados correspondem a apenas uma amostra. SELECT * FROM TUBARAO WHERE COMPRIMENTO IS NOT NULL AND SEXO IS NOT NULL; Cláusula IS NOT NULL FORMATO DE DATA SELECT * FROM CAPTURA WHERE DATA = '03/09/12'; SELECT * FROM CAPTURA WHERE DATA = '03/09/2012'; SELECT * FROM CAPTURA WHERE DATA = '03/SET/2012'; FORMATO DE SAÍDA: SELECT NUMCAPTURA, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, TO_CHAR(DATA,'DD/MM/YYYY') DATA FROM CAPTURA WHERE DATA = '03/09/12'; SELECT NUMCAPTURA, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, TO_CHAR(DATA,'DD-MON-YYYY') DATA FROM CAPTURA WHERE DATA = '03/09/12'; CASO HOUVESSE DADOS DA HORA DE CAPTURA CADASTRADA: SELECT NUMCAPTURA, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, TO_CHAR(DATA,'DD-MON-YYYY HH24:MI') DATA FROM CAPTURA WHERE DATA = '03/09/12'; CASO HOUVESSE DADOS DA HORA DE CAPTURA CADASTRADA: SELECT NUMCAPTURA, IDTUBARAO, CODLOCAL, LATITUDE, LONGITUDE, TO_CHAR(DATA,' HH24:MI - DD-MON-YYYY ') DATA FROM CAPTURA WHERE DATA = '03/09/12'; JUNÇÃO • JUNÇÃO CRUZADA; – Também chamada de Irrestrita ou Cross Join. – Exemplo: SELECT * FROM AREA; SELECT * FROM LOCAL WHERE CODAREA = 1; SELECT * FROM LOCAL WHERE CODAREA = 2; SELECT * FROM LOCAL WHERE CODAREA = 3; SELECT * FROM LOCAL WHERE CODAREA = 4; SELECT * FROM LOCAL WHERE CODAREA = 5; SELECT * FROM LOCAL WHERE CODAREA = 6; SELECT * FROM LOCAL WHERE CODAREA = 7; SELECT * FROM LOCAL WHERE CODAREA = 8; SELECT * FROM LOCAL WHERE CODAREA = 9; SELECT * FROM LOCAL WHERE CODAREA = 12; Exemplo de Junção Cruzada: SELECT NOMELOCAL, NOMEAREA FROM LOCAL, AREA; ... ... O comando SELECT NOMELOCAL, NOMEAREA FROM LOCAL CROSS JOIN AREA; • Obtém o mesmo resultado de consulta. • O que uma junção cruzada realiza portanto? - Um produto cartesiano, isto é, uma combinação entre todos os elementos de um conjunto (uma tabela) com todos os elementos de outro conjunto (outra tabela). Junção Interna É claro que o resultado de uma junção cruzada não realiza uma consulta que expresse a realidade dos relacionamentos entre tabelas (chave primária e chave estrangeira). Por exemplo, desejamos listar todos os nomes de todos os locais seguidos de todos os nomes das áreas que estejam corretamente correlacionados. Realizamos uma junção interna, que não deixa de ser um produto cartesiano, todavia, com restrição. Exemplo: SELECT NomeLocal, NomeArea FROM LOCAL L, AREA A WHERE L.CODAREA = A.CODAREA; ... ... O mesmo resultado pode ser obtido utilizando-se a cláusula INNER JOIN: SELECT NomeLocal, NomeArea FROM LOCAL L INNER JOIN AREA A ON L.CODAREA = A.CODAREA; Junção Interna entre mais de duas tabelas Podemos combinar diferentes colunas de diferentes tabelas, desde que correlacionemos corretamente em uma junção interna as chaves primárias e estrangeiras que ligam diretamente ou indiretamente os dados a serem consultados. Analise novamente os esquemas das tabelas abaixo: Tubarao (IDTubarao, IDEspecie, Comprimento, Sexo) Captura (NUMCaptura, IDTubarao, CODLocal, LATITUDE, LONGITUDE, DATA, TempAgua) ESPECIE (IDEspecie, Nome_Cientifico, CorDorso, CorVentre, CorBarbatana, Descricao, Foto, Denticao, TamMenor, TamMaior,TamMedio,Tam_Medio_Filhote, Status_Extincao, Habitat, TipoReproducao, TipoFocinho). • Deseja-se exibir dados de Nome Científico da espécie e a Temperatura da Água no instante da captura de cada tubarão. • Para realizar esta consulta temos de correlacionar chaves presentes nas três tabelas: SELECT NOME_CIENTIFICO, TEMPAGUA FROM ESPECIE E, TUBARAO T, CAPTURA C WHERE E.IDESPECIE = T.IDESPECIE AND T.IDTUBARAO = C.IDTUBARAO; OBS: Os dados correspondem a apenas uma amostra. Analise que o que nos permite correlacionar as tabelas Espécie e Captura é a correlação indireta existente entre a chave primária e estrangeira de Espécie e Tubarão e as chaves primária e estrangeira existentes entre Tubarão e Captura, respectivamente. A mesma instrução correspondente com o uso da cláusula INNER JOIN é: SELECT NOME_CIENTIFICO, TEMPAGUA FROM ESPECIE E INNER JOIN TUBARAO T ON E.IDESPECIE = T.IDESPECIE INNER JOIN CAPTURA C ON T.IDTUBARAO = C.IDTUBARAO; Ordenando a 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; Ordenação múltipla É possível ordenarmos as tuplas de forma múltipla. Por exemplo: SELECT NOMEPOPULAR, DATA,TEMPAGUA, COMPRIMENTO, SEXO FROM ESPECIE E INNER JOIN NOME N ON E.IDESPECIE = N.IDESPECIE INNER JOIN TUBARAO T ON E.IDESPECIE = T.IDESPECIE INNER JOIN CAPTURA C ON T.IDTUBARAO = C.IDTUBARAO ORDER BY NOMEPOPULAR; AMOSTRA: SELECT NOMEPOPULAR, DATA, TEMPAGUA, COMPRIMENTO, SEXO FROM ESPECIE E INNER JOIN NOME N ON E.IDESPECIE = N.IDESPECIE INNER JOIN TUBARAO T ON E.IDESPECIE = T.IDESPECIE INNER JOIN CAPTURA C ON T.IDTUBARAO = C.IDTUBARAO ORDER BY NOMEPOPULAR, DATA; AMOSTRA: SELECT NOMEPOPULAR, DATA, TEMPAGUA, COMPRIMENTO, SEXO FROM ESPECIE E INNER JOIN NOME N ON E.IDESPECIE = N.IDESPECIE INNER JOIN TUBARAO T ON E.IDESPECIE = T.IDESPECIE INNER JOIN CAPTURA C ON T.IDTUBARAO = C.IDTUBARAO ORDER BY NOMEPOPULAR, DATA DESC; AMOSTRA: SELECT NOMEPOPULAR, DATA, TEMPAGUA, COMPRIMENTO, SEXO FROM ESPECIE E INNER JOIN NOME N ON E.IDESPECIE = N.IDESPECIE INNER JOIN TUBARAO T ON E.IDESPECIE = T.IDESPECIE INNER JOIN CAPTURA C ON T.IDTUBARAO = C.IDTUBARAO ORDER BY NOMEPOPULAR, DATA DESC, SEXO ASC; AMOSTRA: A partir deste momento você está apto a resolver a lista de exercícios 3 – aula 3. Bibliografia – 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