• Nenhum resultado encontrado

Banco de Dados II. Aula 02. Prof. Diemesleno Souza Carvalho

N/A
N/A
Protected

Academic year: 2021

Share "Banco de Dados II. Aula 02. Prof. Diemesleno Souza Carvalho"

Copied!
112
0
0

Texto

(1)

Banco de Dados II

Aula 02 Prof. Diemesleno Souza Carvalho

diemesleno@iftm.edu.br

(2)
(3)

Na aula passada vimos...

- Sistemas de Gerenciamento de Banco de Dados (SGBD): - Arquitetura;

- Segurança; - Concorrência;

- Recuperação após falha;

(4)
(5)

Na aula de hoje veremos...

(6)
(7)

Linguagens de Consulta

Consultar dados em uma base de dados é o propósito final da utilização de um banco de dados.

Mas para que possamos fazer isso devemos: - Criar um banco de dados;

- Construir as tabelas dentro deste banco de dados; - Popular as tabelas com alguns dados;

(8)

Linguagens de Consulta

Consultar dados em uma base de dados é o propósito final da utilização de um banco de dados.

Mas para que possamos fazer isso devemos: - Criar um banco de dados;

- Construir as tabelas dentro deste banco de dados; - Popular as tabelas com alguns dados;

(9)

Linguagens de Consulta

1) Baseado na nota fiscal ao lado, aplique a normalização de dados (1º, 2º e 3º Formas Normais);

2) Crie os diagramas ER (Entidade-Relacionamento) e crie o banco de dados chamado 'normalizacao01'; 3) Adicione dados nas tabelas criadas, respeitando os

relacionamentos.

OBS: Recomenda-se a

utilização da ferramenta MySQL Workbench.

(10)

Linguagens de Consulta

Após a noralização terminada, deveríamos ter algo semelhante a este diagrama.

(11)

Linguagens de Consulta

N e s t e p r i m e i r o m o m e n t o i r e m o s t r a b a l h a r c o m a ferramenta MySQL Workbench.

(12)

Linguagens de Consulta

Em aulas futuras, iremos trabalhar também com o pgAdmin para o PostgreSQL.

(13)

Linguagens de Consulta

Desta forma a ideia é que aprendam a utilizar as principais ferramentas do mercado para desenvolvimento.

(14)

Linguagens de Consulta

(15)

Linguagens de Consulta

Caso não tenha uma conexão criada, crie. Na imagem abaixo tenho uma conexão chamada 'Local' para o usuário 'aluno'

(16)

Linguagens de Consulta

Com a conexão criada, clique na mesma para que o Editor SQL seja aberto.

(17)

Linguagens de Consulta

Repare que nos schemas mostrados, o banco de dados que estamos utilizando 'normalizacao01' está selecionado.

(18)

Linguagens de Consulta

Repare que nos schemas mostrados, o banco de dados que estamos utilizando 'normalizacao01' está selecionado.

Para selecionar qualquer banco de dados, basta dar um clique duplo no nome do mesmo.

(19)

Linguagens de Consulta

(20)

Linguagens de Consulta

- Consultas básicas

A estrutura básica de uma expressão de consulta SQL consiste em duas cláusulas: SELECT e FROM

(21)

Linguagens de Consulta

- Consultas básicas

A estrutura básica de uma expressão de consulta SQL consiste em duas cláusulas: SELECT e FROM

(22)

Linguagens de Consulta

- Consultas básicas

A estrutura básica de uma expressão de consulta SQL consiste em duas cláusulas: SELECT e FROM

A cláusula SELECT serve para definir as colunas que terão s e u s v a l o r e s e x i b i d o s n a c o n s u l t a e a o r d e m d e apresentação dessas colunas.

A cláusula FROM, por sua vez, serve para indicar as tabelas de origem das referidas colunas.

(23)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

nome

,

endereco

,

cpf

e

telefone

da tabela

clientes

.

(24)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

nome

,

endereco

,

cpf

e

telefone

da tabela

clientes

.

(25)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

nome

,

endereco

,

cpf

e

telefone

da tabela

clientes

.

OBS: Digite a consulta no Editor SQL do MySQL Workbench e execute clicando no botão 'execute'.

(26)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL abaixo, estamos então selecionando as colunas:

id

,

nome

,

endereco

,

cpf

e

telefone

da tabela

(27)

Linguagens de Consulta

- Consultas básicas

Faça o mesmo com as tabelas: produtos;

notasFiscais;

(28)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

nome e preco

da tabela produtos.

(29)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

nome e preco

da tabela produtos.

(30)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

nome e preco

da tabela produtos.

(31)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

nome e preco

da tabela produtos.

(32)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

idCliente, dataEmissao, e valor

da tabela notasFiscais.

(33)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

idCliente, dataEmissao, e valor

da tabela notasFiscais.

(34)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

idCliente, dataEmissao, e valor

da tabela notasFiscais.

(35)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

idNotaFiscal, idProduto, e quantidade

da tabela produtosNotaFiscal.

(36)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

idNotaFiscal, idProduto, e quantidade

da tabela produtosNotaFiscal.

(37)

Linguagens de Consulta

- Consultas básicas

Na instrução SQL acima, estamos então selecionando as colunas:

id

,

idNotaFiscal, idProduto, e quantidade

da tabela produtosNotaFiscal.

(38)

Linguagens de Consulta

(39)

Linguagens de Consulta

- Consultas básicas - com alias (apelidos)

Podemos dar 'apelidos' para as colunas da nossa consulta, utilizando a cláusula AS.

(40)

Linguagens de Consulta

- Consultas básicas - com alias (apelidos)

Na consulta abaixo, estamos colocando aliases para as 3 colunas da tabela

produtos

.

(41)

Linguagens de Consulta

- Consultas básicas - com alias (apelidos)

Na consulta abaixo, estamos colocando aliases para as 3 colunas da tabela

produtos

.

(42)

Linguagens de Consulta

- Consultas básicas - com alias (apelidos)

Na consulta abaixo, estamos colocando aliases para as 3 colunas da tabela

produtos

.

(43)

Linguagens de Consulta

- Consultas básicas - com alias (apelidos)

Na consulta abaixo, estamos colocando aliases para as 3 colunas da tabela

produtos

.

(44)

Linguagens de Consulta

- Consultas básicas

Podemos também selecionar todas as colunas de uma tabela utilizando o caractere asterisco '*'.

(45)

Linguagens de Consulta

- Consultas básicas

Podemos também selecionar todas as colunas de uma tabela utilizando o caractere asterisco '*'.

(46)

Linguagens de Consulta

- Consultas básicas

Podemos também selecionar todas as colunas de uma tabela utilizando o caractere asterisco '*'.

(47)

Linguagens de Consulta

(48)

Linguagens de Consulta

- Consultas com cláusula ORDER BY

SELECT colunas> FROM tabelas> ORDER BY <lista-de-colunas>;

(49)

Linguagens de Consulta

- Consultas com cláusula ORDER BY

A cláusula ORDER BY objetiva estabelecer a ordem de apresentação dos registros em uma consulta SQL.

Ela deve ser incluída no código da consulta após as cláusulas SELECT e FROM.

ORDER BY normalmente é a última cláusula de uma consulta.

SELECT colunas> FROM tabelas> ORDER BY <lista-de-colunas>;

(50)

Linguagens de Consulta

- Consultas com cláusula ORDER BY

SELECT id, idNotaFiscal, idProduto, quantidade FROM produtosNotaFiscal ORDER BY idPdoduto;

(51)

Linguagens de Consulta

- Consultas com cláusula ORDER BY

SELECT id, idNotaFiscal, idProduto, quantidade FROM produtosNotaFiscal ORDER BY idPdoduto;

(52)

Linguagens de Consulta

- Consultas com cláusula ORDER BY

SELECT id, idNotaFiscal, idProduto, quantidade FROM produtosNotaFiscal ORDER BY quantidade;

(53)

Linguagens de Consulta

- Consultas com cláusula ORDER BY

(54)

Linguagens de Consulta

- Consultas com cláusula ORDER BY

A ordenação pode ser ainda crescente ou decrescente, adicionando os parâmetros ASC ou DESC.

OBS: Por padrão as ordenações são crescentes. (ASC);

(55)

Linguagens de Consulta

- Consultas com cláusula ORDER BY

(56)

Linguagens de Consulta

(57)

Linguagens de Consulta

- Consultas com limite

Conforme pudemos notar, até o momento, em todas as consultas que fizemos trouxemos todos os dados.

Portanto, se uma tabela tiver 10 registros, trará os 10, da mesma forma que se tiver 10 milhões de registros, trará todos eles.

(58)

Linguagens de Consulta

- Consultas com limite

Podemos adicionar a cláusula LIMIT N, para limitar a quantidade de registros que queremos que a consulta traga, onde N é o número de registros a serem trazidos.

(59)

Linguagens de Consulta

- Consultas com limite

Na consulta acima, estamos limitando os resultados a 15. Portando se a tabela em questão tiver somente 8 registros, trará apenas 8. Se tiver 500, trará somente os 15 primeiros.

(60)

Linguagens de Consulta

- Consultas com limite

Na consulta acima, estamos limitando os resultados a 15. Portando se a tabela em questão tiver somente 8 registros, trará apenas 8. Se tiver 500, trará somente os 15 primeiros.

(61)

Linguagens de Consulta

- Consultas com limite

OBS: Podemos utilizar praticamente todas as cláusulas em conjunto, para filtrarmos os resultados de acordo com a necessidade.

(62)

Linguagens de Consulta

- Consultas com limite

Na consulta acima, estamos trazendo desta vez, os últimos 15 registros da tabela.

(63)

Linguagens de Consulta

- Consultas com limite

Na consulta acima, estamos trazendo desta vez, os últimos 15 registros da tabela.

(64)

Linguagens de Consulta

(65)

Linguagens de Consulta

- Consultas com cláusula WHERE

A cláusula WHERE filtra registros de colsultas, permitindo-nos exibir alguns registros enquanto deixamos outros de fora da consulta.

(66)

Linguagens de Consulta

- Consultas com cláusula WHERE

(67)

Linguagens de Consulta

- Consultas com cláusula WHERE

A cláusula WHERE deve estar sempre após o SELECT e FROM. Quando houver ORDER BY o WHERE deverá ser posto antes dele, conforme:

SELECT <lista-de-colunas> FROM <lista-de-tabelas> WHERE <condições>;

SELECT <lista-de-colunas> FROM <lista-de-tabelas> WHERE <condições> ORDER BY <lista-de-colunas>;

(68)

Linguagens de Consulta

- Consultas com cláusula WHERE

Na consulta acima, estamos trazendo todos os dados da tabela

produtosNotaFiscal

onde o

id

seja igual a 666.

(69)

Linguagens de Consulta

- Consultas com cláusula WHERE

Na consulta acima, estamos trazendo todos os dados da tabela

produtosNotaFiscal

onde o

id

seja igual a 666.

(70)

Linguagens de Consulta

- Consultas com cláusula WHERE

Na consulta acima, estamos trazendo todos os dados da tabela

produtosNotaFiscal

onde o

idProduto

seja igual a 5.

(71)

Linguagens de Consulta

- Consultas com cláusula WHERE

Na consulta acima, estamos trazendo todos os dados da tabela

produtosNotaFiscal

onde o

idProduto

seja igual a 5.

(72)

Linguagens de Consulta

- Consultas com cláusula WHERE

Na consulta acima, estamos trazendo todos os dados da tabela

produtos

onde o

nome

seja igual a "Produto 15".

(73)

Linguagens de Consulta

- Consultas com cláusula WHERE

Na consulta acima, estamos trazendo todos os dados da tabela

produtos

onde o

nome

seja igual a "Produto 15".

(74)

Linguagens de Consulta

- Consultas com cláusula WHERE

Na consulta acima, estamos trazendo todos os dados da tabela

produtos

onde o

nome

seja igual a "Produto 15".

OBS: Note que só será encontrado caso seja exatamente o que foi colocado entre as aspas.

(75)

Linguagens de Consulta

- Consultas com cláusula WHERE

Na consulta acima, estamos trazendo todos os dados da tabela

produtos

onde o

nome

seja igual a "Produto".

OBS: Como não existe nenhum produto com nome igual a "Produto", a consulta não retorna nada.

(76)

Linguagens de Consulta

(77)

Linguagens de Consulta

- Consultas com cláusula WHERE - LIKE

Podemos realizar consultas com textos parciais utilizando a cláusula LIKE.

(78)

Linguagens de Consulta

- Consultas com cláusula WHERE - LIKE

Na consulta abaixo, selecionamos todas as colunas da tabela produtos onde o nome seja como o padrão "Produto 1%".

(79)

Linguagens de Consulta

- Consultas com cláusula WHERE - LIKE

Na consulta abaixo, selecionamos todas as colunas da tabela produtos onde o nome seja como o padrão "Produto 1%".

(80)

Linguagens de Consulta

- Consultas com cláusula WHERE - LIKE

Na consulta abaixo, selecionamos todas as colunas da tabela produtos onde o nome seja como o padrão "Produto 1%".

SELECT * FROM produtos WHERE nome LIKE "Produto 1%";

Repare que a consulta trouxe todos os dados onde o nome começava com "Produto 1...", conforme padrão solicitado.

(81)

Linguagens de Consulta

(82)

Linguagens de Consulta

- Consultas com cláusula WHERE - AND

Podemos concatenar vários filtros adicionando o parâmetro AND.

(83)

Linguagens de Consulta

- Consultas com cláusula WHERE - AND

Na consulta abaixo, selecionamos todas as colunas da tabela produtos onde o id seja maior que 10 e menor que 50.

(84)

Linguagens de Consulta

- Consultas com cláusula WHERE - AND

Na consulta abaixo, selecionamos todas as colunas da tabela produtos onde o id seja maior que 10 e menor que 50.

(85)

Linguagens de Consulta

(86)

Linguagens de Consulta

- Consultas com funções de agrupamento

A linguagem SQL conta com várias funções para consultas. Essas funções servem para realizar operações e simplificar algumas ações.

(87)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos contando quantos registros existem na tabela

produtos

.

(88)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos contando quantos registros existem na tabela

produtos

.

(89)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos contando quantos registros existem na tabela

produtos

onde os nomes dos produtos tenham o padrão "Produto %6%".

(90)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos contando quantos registros existem na tabela

produtos

onde os nomes dos produtos tenham o padrão "Produto %6%".

(91)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos fazendo uma contagem de q u a n t o s p r o d u t o s f o r a m v e n d i d o s f a z e n d o u m agrupamento por

idProduto

.

SELECT idProduto, COUNT(*) AS Quantidade_Produtos FROM produtosNotaFiscal GROUP BY idProduto;

(92)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos fazendo uma contagem de q u a n t o s p r o d u t o s f o r a m v e n d i d o s f a z e n d o u m agrupamento por

idProduto

.

SELECT idProduto, COUNT(*) AS Quantidade_Produtos FROM produtosNotaFiscal GROUP BY idProduto;

(93)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos buscando o maior preço entre os produtos cadastrados.

(94)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos buscando o maior preço entre os produtos cadastrados.

(95)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos buscando o menor preço entre os produtos cadastrados.

(96)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos buscando o menor preço entre os produtos cadastrados.

(97)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos fazendo um somatório de todos os valores dos produtos cadastrados.

(98)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos fazendo um somatório de todos os valores dos produtos cadastrados.

(99)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos solicitando a média dos valores dos produtos cadastrados.

(100)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos solicitando a média dos valores dos produtos cadastrados.

(101)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos listando todas as notas fiscais emitidas, separando em colunas diferentes o dia, o mês e o ano de emissão.

SELECT id, idCliente, valor, DAY(dataEmissao) AS dia_emussão,

MONTH(dataEmissao) AS mês_emissão, YEAR(dataEmissao) AS ano_emissão FROM notasFiscais;

(102)

Linguagens de Consulta

- Consultas com funções de agrupamento

Na consulta abaixo, estamos listando todas as notas fiscais emitidas, separando em colunas diferentes o dia, o mês e o ano de emissão.

SELECT id, idCliente, valor, DAY(dataEmissao) AS dia_emussão,

MONTH(dataEmissao) AS mês_emissão, YEAR(dataEmissao) AS ano_emissão FROM notasFiscais;

(103)

Linguagens de Consulta

(104)

Linguagens de Consulta

- Consultas com mais de uma tabela

Todas as consultas realizadas até aqui envolveram sempre uma única tabela.

S a b e m o s p o r é m , q u e n o s s o b a n c o d e d a d o s p o s s u i relacionamento entre tabelas e todo profissional de informática que trabalha com desenvolvimento de sistemas, normalmente, elebora consultas com mais de uma tabela simultaneamente.

(105)

Linguagens de Consulta

- Consultas com mais de uma tabela

Conforme podemos ver, na tabela

notasFiscais

possuímos um relacionamento com a tabela

clientes

, pelo

idCliente

(106)

Linguagens de Consulta

- Consultas com mais de uma tabela

Sabemos que na tabela

clientes

, temos o

nome

do cliente, além do

id

e outros dados.

(107)

Linguagens de Consulta

- Consultas com mais de uma tabela

Sabemos que na tabela

clientes

, temos o

nome

do cliente, além do

id

e outros dados.

Já que na tabela

notasFiscais

temos o

idCliente

que se relaciona com a tabela

clientes

pelo

id

presente nesta tabela, podemos realizar uma consulta buscando dados em ambas tabelas.

(108)

Linguagens de Consulta

- Consultas com mais de uma tabela

Na consulta abaixo, estamos buscando todas as colunas da tabela

notasFiscais

, apresentando no lugar de

idCliente

o nome do próprio, buscado na tabela

clientes

, onde o

idCliente

da tabela de

notasFiscais

corresponda ao

id

da tabela

clientes

.

SELECT nf.id AS ID, c.nome AS Cliente, nf.dataEmissao AS Emissão, nf.valor AS Valor FROM notasFiscais AS nf, clientes AS c WHERE nf.idCliente = c.id;

(109)

Linguagens de Consulta

- Consultas com mais de uma tabela

Na consulta abaixo, estamos buscando todas as colunas da tabela

notasFiscais

, apresentando no lugar de

idCliente

o nome do próprio, buscado na tabela

clientes

, onde o

idCliente

da tabela de

notasFiscais

corresponda ao

id

da tabela

clientes

.

SELECT nf.id AS ID, c.nome AS Cliente, nf.dataEmissao AS Emissão, nf.valor AS Valor FROM notasFiscais AS nf, clientes AS c WHERE nf.idCliente = c.id;

(110)

Linguagens de Consulta

Tudo o que vimos nesta aula pode ser aplicada em conjunto, mixando as cláusulas para chegar no resultado da consulta pretendida.

Existem muitos outros recursos, funções e ações para ajudar nas consultas e na documentação[1] oficial pode-se encontrar informações mais afundo.

(111)

Banco de Dados II

Aula 02 Prof. Diemesleno Souza Carvalho

diemesleno@iftm.edu.br

(112)

Exercício

1) Baseado na última consulta, onde trabalhamos com mais de 1 tabela (notasFiscais e clientes); Faça uma consulta na tabela produtosNotaFiscal e faça aparecer o nome do cliente para quem foi emitida a nota fiscal, a quantidade de produtos descritos na nota fiscal, a data de emissão da nota fiscal e o valor da nota fiscal, conforme imagem abaixo.

Referências

Documentos relacionados

Depois da ação do último jogador, os jogadores devem novamente jogar ou descartar cartas na ordem de ORGANIZAÇÃO (a ordem pode alterar-se caso algum jogador ganhe ou

Esta pesquisa mostrou os espaços e as relações sociais e identitárias da cidade, analisando os processos de transformação da classe trabalhadora do município e as suas relações

No Advento, Natal, Quaresma e Tempo Pascal, o Ofício segue no Próprio do respectivo Tempo. Nas festas, segue no respectivo Próprio, se o tiver, ou no

As flutuações dos desvios padronizados trimestral (abril, maio e junho) no período 1920-2016 apresentaram-se com variabilidades intensas nas suas flutuações negativamente

Penalidades: suspensão imediata da conduta vedada, quando for o caso; multa no valor de R$ 5.320,50 a R$ 106.410,00 aos agentes responsáveis, aos partidos políticos, às

Cláudia Alexandra Gomes Martins Pinto ADMITIDO(A) Cláudia Sofia Barbosa da Costa Ribeiro ADMITIDO(A) Constança dos Santos Elias Pereira Graça ADMITIDO(A). Cristiana da Silva Aveiro

As Despesas Gerais e Administrativas (G&amp;A) foram reduzidas em 50 bps como percentual da receita líquida no 3T12, na comparação com o 3T11, em virtude de alavancagem

Este trabalho é resultado de uma pesquisa quantitativa sobre a audiência realizada em 1999 envolvendo professores e alunos do Núcleo de Pesquisa de Comunicação da Universidade