Buscar

IBD Aula 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 47 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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.

Outros materiais