Banco de Dados II
Aula 02 Prof. Diemesleno Souza Carvalho
diemesleno@iftm.edu.br
Na aula passada vimos...
- Sistemas de Gerenciamento de Banco de Dados (SGBD): - Arquitetura;
- Segurança; - Concorrência;
- Recuperação após falha;
Na aula de hoje veremos...
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;
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;
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.
Linguagens de Consulta
Após a noralização terminada, deveríamos ter algo semelhante a este diagrama.
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.
Linguagens de Consulta
Em aulas futuras, iremos trabalhar também com o pgAdmin para o PostgreSQL.
Linguagens de Consulta
Desta forma a ideia é que aprendam a utilizar as principais ferramentas do mercado para desenvolvimento.
Linguagens de Consulta
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'
Linguagens de Consulta
Com a conexão criada, clique na mesma para que o Editor SQL seja aberto.
Linguagens de Consulta
Repare que nos schemas mostrados, o banco de dados que estamos utilizando 'normalizacao01' está selecionado.
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.
Linguagens de Consulta
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
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
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.
Linguagens de Consulta
- Consultas básicas
Na instrução SQL acima, estamos então selecionando as colunas:
id
,nome
,endereco
,cpf
etelefone
da tabelaclientes
.Linguagens de Consulta
- Consultas básicas
Na instrução SQL acima, estamos então selecionando as colunas:
id
,nome
,endereco
,cpf
etelefone
da tabelaclientes
.Linguagens de Consulta
- Consultas básicas
Na instrução SQL acima, estamos então selecionando as colunas:
id
,nome
,endereco
,cpf
etelefone
da tabelaclientes
.OBS: Digite a consulta no Editor SQL do MySQL Workbench e execute clicando no botão 'execute'.
Linguagens de Consulta
- Consultas básicas
Na instrução SQL abaixo, estamos então selecionando as colunas:
id
,nome
,endereco
,cpf
etelefone
da tabelaLinguagens de Consulta
- Consultas básicas
Faça o mesmo com as tabelas: produtos;
notasFiscais;
Linguagens de Consulta
- Consultas básicas
Na instrução SQL acima, estamos então selecionando as colunas:
id
,nome e preco
da tabela produtos.Linguagens de Consulta
- Consultas básicas
Na instrução SQL acima, estamos então selecionando as colunas:
id
,nome e preco
da tabela produtos.Linguagens de Consulta
- Consultas básicas
Na instrução SQL acima, estamos então selecionando as colunas:
id
,nome e preco
da tabela produtos.Linguagens de Consulta
- Consultas básicas
Na instrução SQL acima, estamos então selecionando as colunas:
id
,nome e preco
da tabela produtos.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.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.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.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.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.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.Linguagens de Consulta
Linguagens de Consulta
- Consultas básicas - com alias (apelidos)
Podemos dar 'apelidos' para as colunas da nossa consulta, utilizando a cláusula AS.
Linguagens de Consulta
- Consultas básicas - com alias (apelidos)
Na consulta abaixo, estamos colocando aliases para as 3 colunas da tabela
produtos
.Linguagens de Consulta
- Consultas básicas - com alias (apelidos)
Na consulta abaixo, estamos colocando aliases para as 3 colunas da tabela
produtos
.Linguagens de Consulta
- Consultas básicas - com alias (apelidos)
Na consulta abaixo, estamos colocando aliases para as 3 colunas da tabela
produtos
.Linguagens de Consulta
- Consultas básicas - com alias (apelidos)
Na consulta abaixo, estamos colocando aliases para as 3 colunas da tabela
produtos
.Linguagens de Consulta
- Consultas básicas
Podemos também selecionar todas as colunas de uma tabela utilizando o caractere asterisco '*'.
Linguagens de Consulta
- Consultas básicas
Podemos também selecionar todas as colunas de uma tabela utilizando o caractere asterisco '*'.
Linguagens de Consulta
- Consultas básicas
Podemos também selecionar todas as colunas de uma tabela utilizando o caractere asterisco '*'.
Linguagens de Consulta
Linguagens de Consulta
- Consultas com cláusula ORDER BY
SELECT colunas> FROM tabelas> ORDER BY <lista-de-colunas>;
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>;
Linguagens de Consulta
- Consultas com cláusula ORDER BY
SELECT id, idNotaFiscal, idProduto, quantidade FROM produtosNotaFiscal ORDER BY idPdoduto;
Linguagens de Consulta
- Consultas com cláusula ORDER BY
SELECT id, idNotaFiscal, idProduto, quantidade FROM produtosNotaFiscal ORDER BY idPdoduto;
Linguagens de Consulta
- Consultas com cláusula ORDER BY
SELECT id, idNotaFiscal, idProduto, quantidade FROM produtosNotaFiscal ORDER BY quantidade;
Linguagens de Consulta
- Consultas com cláusula ORDER BY
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);
Linguagens de Consulta
- Consultas com cláusula ORDER BY
Linguagens de Consulta
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.
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.
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.
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.
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.
Linguagens de Consulta
- Consultas com limite
Na consulta acima, estamos trazendo desta vez, os últimos 15 registros da tabela.
Linguagens de Consulta
- Consultas com limite
Na consulta acima, estamos trazendo desta vez, os últimos 15 registros da tabela.
Linguagens de Consulta
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.
Linguagens de Consulta
- Consultas com cláusula WHERE
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>;
Linguagens de Consulta
- Consultas com cláusula WHERE
Na consulta acima, estamos trazendo todos os dados da tabela
produtosNotaFiscal
onde oid
seja igual a 666.Linguagens de Consulta
- Consultas com cláusula WHERE
Na consulta acima, estamos trazendo todos os dados da tabela
produtosNotaFiscal
onde oid
seja igual a 666.Linguagens de Consulta
- Consultas com cláusula WHERE
Na consulta acima, estamos trazendo todos os dados da tabela
produtosNotaFiscal
onde oidProduto
seja igual a 5.Linguagens de Consulta
- Consultas com cláusula WHERE
Na consulta acima, estamos trazendo todos os dados da tabela
produtosNotaFiscal
onde oidProduto
seja igual a 5.Linguagens de Consulta
- Consultas com cláusula WHERE
Na consulta acima, estamos trazendo todos os dados da tabela
produtos
onde onome
seja igual a "Produto 15".Linguagens de Consulta
- Consultas com cláusula WHERE
Na consulta acima, estamos trazendo todos os dados da tabela
produtos
onde onome
seja igual a "Produto 15".Linguagens de Consulta
- Consultas com cláusula WHERE
Na consulta acima, estamos trazendo todos os dados da tabela
produtos
onde onome
seja igual a "Produto 15".OBS: Note que só será encontrado caso seja exatamente o que foi colocado entre as aspas.
Linguagens de Consulta
- Consultas com cláusula WHERE
Na consulta acima, estamos trazendo todos os dados da tabela
produtos
onde onome
seja igual a "Produto".OBS: Como não existe nenhum produto com nome igual a "Produto", a consulta não retorna nada.
Linguagens de Consulta
Linguagens de Consulta
- Consultas com cláusula WHERE - LIKE
Podemos realizar consultas com textos parciais utilizando a cláusula LIKE.
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%".
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%".
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.
Linguagens de Consulta
Linguagens de Consulta
- Consultas com cláusula WHERE - AND
Podemos concatenar vários filtros adicionando o parâmetro AND.
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.
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.
Linguagens de Consulta
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.
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos contando quantos registros existem na tabela
produtos
.Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos contando quantos registros existem na tabela
produtos
.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%".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%".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;
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;
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos buscando o maior preço entre os produtos cadastrados.
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos buscando o maior preço entre os produtos cadastrados.
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos buscando o menor preço entre os produtos cadastrados.
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos buscando o menor preço entre os produtos cadastrados.
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos fazendo um somatório de todos os valores dos produtos cadastrados.
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos fazendo um somatório de todos os valores dos produtos cadastrados.
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos solicitando a média dos valores dos produtos cadastrados.
Linguagens de Consulta
- Consultas com funções de agrupamento
Na consulta abaixo, estamos solicitando a média dos valores dos produtos cadastrados.
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;
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;
Linguagens de Consulta
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.
Linguagens de Consulta
- Consultas com mais de uma tabela
Conforme podemos ver, na tabela
notasFiscais
possuímos um relacionamento com a tabelaclientes
, peloidCliente
Linguagens de Consulta
- Consultas com mais de uma tabela
Sabemos que na tabela
clientes
, temos onome
do cliente, além doid
e outros dados.Linguagens de Consulta
- Consultas com mais de uma tabela
Sabemos que na tabela
clientes
, temos onome
do cliente, além doid
e outros dados.Já que na tabela
notasFiscais
temos oidCliente
que se relaciona com a tabelaclientes
peloid
presente nesta tabela, podemos realizar uma consulta buscando dados em ambas tabelas.Linguagens de Consulta
- Consultas com mais de uma tabela
Na consulta abaixo, estamos buscando todas as colunas da tabela
notasFiscais
, apresentando no lugar deidCliente
o nome do próprio, buscado na tabelaclientes
, onde oidCliente
da tabela denotasFiscais
corresponda aoid
da tabelaclientes
.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;
Linguagens de Consulta
- Consultas com mais de uma tabela
Na consulta abaixo, estamos buscando todas as colunas da tabela
notasFiscais
, apresentando no lugar deidCliente
o nome do próprio, buscado na tabelaclientes
, onde oidCliente
da tabela denotasFiscais
corresponda aoid
da tabelaclientes
.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;
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.
Banco de Dados II
Aula 02 Prof. Diemesleno Souza Carvalho
diemesleno@iftm.edu.br
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.