Você está na página 1de 38

ADMINISTRAÇÃO DE BANCO DE DADOS

1.4 Jardinagem

1.4.1 Modelo entidade/relacionamento

1.4.2 Banco de Dados para MySQL


DROP DATABASE SE EXISTE jardinagem;
CRIAR BANCO DE DADOS conjunto de caracteres utf8mb4;
USE jardinagem;

CRIAR ESCRITÓRIO DE TABELA (


codigo_oficina VARCHAR(10) NÃO NULA,
cidade VARCHAR(30) NÃO NULA,
país VARCHAR(50) NÃO NULO,
região VARCHAR(50) DEFAULT NULL,
codigo_postal VARCHAR(10) NÃO NULA,
telefone VARCHAR(20) NÃO NULL,
linea_direccion1 VARCHAR(50) NÃO NULA,
linea_direccion2 VARCHAR(50) PADRÃO NULL,
CHAVE PRIMÁRIA (codigo_oficina)
);

CRIAR TABELA funcionário (


codigo_empleado INTEIRO NÃO NULO,
nome VARCHAR(50) NÃO NULL,
sobrenome1 VARCHAR(50) NÃO NULL,
sobrenome2 VARCHAR(50) DEFAULT NULL,
extensão VARCHAR(10) NÃO NULA,
e-mail VARCHAR(100) NÃO NULL,
codigo_oficina VARCHAR(10) NÃO NULA,
codigo_jefe INTEIRO PADRÃO NULO,
posição VARCHAR(50) DEFAULT NULL,
CHAVE PRIMÁRIA (codigo_empleado),
CHAVE ESTRANGEIRA (codigo_oficina) REFERÊNCIAS ESCRITÓRIO
(codigo_oficina),
REFERÊNCIAS CHAVE ESTRANGEIRA (codigo_jefe) FUNCIONÁRIO (codigo_empleado)
);

CRIAR TABELA gama_producto (


intervalo VARCHAR(50) NÃO NULA,
descripcion_texto TEXTO,
descripcion_html TEXTO,
imagem VARCHAR(256),
CHAVE PRIMÁRIA (intervalo)
);

Cliente CREATE TABLE (


codigo_cliente INTEIRO NÃO NULO,
nombre_cliente VARCHAR(50) NÃO NULA,
nombre_contacto VARCHAR(30) PADRÃO NULL,
apellido_contacto VARCHAR(30) PADRÃO NULL,
telefone VARCHAR(15) NÃO NULL,
fax VARCHAR(15) NÃO NULL,
linea_direccion1 VARCHAR(50) NÃO NULA,
linea_direccion2 VARCHAR(50) PADRÃO NULL,
cidade VARCHAR(50) NÃO NULA,
região VARCHAR(50) DEFAULT NULL,
país VARCHAR(50) DEFAULT NULL,
codigo_postal VARCHAR(10) PADRÃO NULL,
codigo_empleado_rep_ventas INTEIRO PADRÃO NULO,
limite_credito NUMÉRICO(15,2) PADRÃO NULL,
CHAVE PRIMÁRIA (codigo_cliente),
CHAVE ESTRANGEIRA (codigo_empleado_rep_ventas) REFERÊNCIAS FUNCIONÁRIO
(codigo_empleado)
);

CRIAR ordem TABLE (


codigo_pedido INTEIRO NÃO NULO,
fecha_pedido data NÃO NULA,
fecha_esperada data NÃO NULA,
fecha_entrega data DEFAULT NULL,
status VARCHAR(15) NÃO NULA,
comentários TEXTO,
codigo_cliente INTEIRO NÃO NULO,
CHAVE PRIMÁRIA (codigo_pedido),
CHAVE ESTRANGEIRA (codigo_cliente) REFERÊNCIAS cliente (codigo_cliente)
);

CREATE TABLE produto (


codigo_producto VARCHAR(15) NÃO NULA,
nome VARCHAR(70) NÃO NULL,
intervalo VARCHAR(50) NÃO NULA,
dimensões VARCHAR(25) NULL,
provedor VARCHAR(50) DEFAULT NULL,
texto de descrição NULL,
cantidad_en_stock SMALLINT NÃO É NULO,
precio_venta NUMÉRICO(15,2) NÃO NULO,
precio_proveedor NULO NUMÉRICO(15,2) PADRÃO,
CHAVE PRIMÁRIA (codigo_producto),
REFERÊNCIAS CHAVE ESTRANGEIRA (intervalo) gama_producto (intervalo)
);

CRIAR TABELA detalle_pedido (


codigo_pedido INTEIRO NÃO NULO,
codigo_producto VARCHAR(15) NÃO NULA,
quantidade INTEIRO NÃO NULO,
precio_unidad NUMÉRICO(15,2) NÃO NULO,
numero_linea SMALLINT NÃO É NULO,
CHAVE PRIMÁRIA (codigo_pedido, codigo_producto),
CHAVE ESTRANGEIRA (codigo_pedido) REFERÊNCIAS ORDEM (codigo_pedido),
CHAVE ESTRANGEIRA (codigo_producto) REFERÊNCIAS produto (codigo_producto)
);

CRIAR TABELA de pagamento (


codigo_cliente INTEIRO NÃO NULO,
forma_pago VARCHAR(40) NÃO NULA,
id_transaccion VARCHAR(50) NÃO NULA,
fecha_pago data NÃO NULA,
TOTAL NUMÉRICO(15,2) NÃO NULO,
CHAVE PRIMÁRIA (codigo_cliente, id_transaccion),
CHAVE ESTRANGEIRA (codigo_cliente) REFERÊNCIAS cliente (codigo_cliente)
);

1.4.3 Dados
Acesse o script SQL para criação de banco de dados e inserção de dados:
jardinagem.sql.

1.4.4 Consultas em uma tabela


1. Retorna uma lista com o código do escritório e a cidade onde há escritórios.
2.

Retorna uma lista com a cidade e o número de telefone dos escritórios na Espanha.

3. Retorna uma lista com o nome, sobrenome e e-mail dos funcionários cujo chefe
tem um código de chefe igual a 7.
4. Retorna o nome do trabalho, nome, sobrenome e e-mail do chefe da empresa.

5. Retorna uma lista com o nome, sobrenome e cargo de funcionários que não são
representantes de vendas.
6. Retorna uma lista com o nome de todos os clientes espanhóis.

7. Retorna uma lista dos diferentes estados pelos quais uma ordem pode passar.

8.
Retorna uma lista com o código do cliente dos clientes que fizeram um pagamento em 2008. Obser
9.
Retorna uma lista com o código do pedido, código do cliente, data prevista e data de entrega dos pe

10.
Retorna uma lista com o código do pedido, código do cliente, data prevista e data de entrega dos pe
11. Retorna uma lista de todos os pedidos que foram rejeitados em 2009.

12. Retorna uma lista de todos os pedidos que foram entregues no mês de janeiro de
qualquer ano.
13. Retorna uma lista de todos os pagamentos feitos em 2008 até PayPal. Classifique
o resultado do mais alto para o mais baixo.

14. Retorna uma lista de todos os métodos de pagamento listados na tabela de


pagamento. Por favor, note que as formas de pagamento repetidas não devem
aparecer.
15. Ele retorna uma lista com todos os produtos que pertencem à linha Ornamental e
que possuem mais de 100 unidades em estoque. A lista deve ser ordenada pelo
seu preço de venda, mostrando primeiro aqueles com o preço mais alto.

16. Ele retorna uma lista com todos os clientes que são da cidade de Madrid e cujo
representante de vendas tem o código de funcionário 11 ou 30.
1.4.5 Consultas Multitable (Composição Interna)
Resolva todas as consultas usando a sintaxe SQL1 e SQL2. As consultas com sintaxe
SQL2 devem ser resolvidas com INNER JOIN e NATURAL JOIN.

1. Obtenha uma lista com o nome de cada cliente e o nome e sobrenome de seu
representante de vendas.

Selecione cliente.nombre_cliente, Employee.First Name,Employee.Last Name1

do cliente ingressar no funcionário em


empleado.codigo_empleado=cliente.codigo_empleado_rep_ventas

2. Exibe o nome dos clientes que fizeram pagamentos junto com o nome de seus
representantes de vendas.
3. Exibe o nome dos clientes que não fizeram pagamentos junto com o nome de
seus representantes de vendas.

4. Retorna o nome dos clientes que efetuaram pagamentos e o nome de seus


representantes, juntamente com a cidade do escritório ao qual o representante
pertence.
5. Retorna o nome dos clientes que não efetuaram pagamentos e o nome de seus
representantes juntamente com a cidade do escritório ao qual o representante
pertence.

6. Liste o endereço dos escritórios que têm clientes em Fuenlabrada.


Retorna o nome dos clientes e o nome de seus representantes juntamente com a
cidade do escritório ao qual o representante pertence.

8. Retorna uma lista com o nome dos funcionários junto com o nome de seus
chefes.
9. Retorna o nome dos clientes que não tiveram um pedido entregue no prazo.
10. Retorna uma lista das diferentes gamas de produtos que cada cliente comprou.
1.4.6 Consultas Multitable (Composição Externa)
Resolva todas as consultas usando as cláusulas LEFT JOIN, RIGHT JOIN, NATURAL
LEFT JOIN E NATURAL RIGHT JOIN.

1. Retorna uma listagem mostrando apenas os clientes que não fizeram um


pagamento.
2. Retorna uma listagem que mostra apenas os clientes que não fizeram um pedido.

3. Retorna uma lista mostrando os clientes que não fizeram um pagamento e


aqueles que não fizeram um pedido.
4. Retorna uma listagem mostrando apenas os funcionários que não têm um
escritório associado.

5. Devolver os escritórios onde nenhum dos funcionários que foram representantes


de vendas de um cliente que efetuou a compra de um produto da gama Frutales
trabalham.

6. Retorna uma lista mostrando funcionários que não têm um escritório


associado e aqueles que não têm um cliente associado.
7. Devolva uma lista de produtos que nunca apareceram em um pedido.

8. Devolver os escritórios onde não trabalham nenhum dos funcionários que


foram representantes de vendas de um cliente que efetuou a compra de um
produto da gama Frutales.

9. Retorna uma lista de clientes que fizeram um pedido, mas não fizeram nenhum
pagamento.

10. Retorna uma lista de funcionários que não têm clientes associados e o nome de
seu gerente associado.
1.4.7 Consultas resumidas
1. Quantos funcionários estão na empresa?

2. Quantos clientes tem cada país?

3. Qual foi o pagamento médio em 2009?

4. Quantos pedidos existem em cada estado? Classifique o resultado decrescente


pelo número de pedidos.
5. Calcule o preço de venda do produto mais caro e barato na mesma consulta.

6. Calcule o número de clientes que sua empresa possui.

7. Quantos clientes tem a cidade de Madrid?


8.
Você calcula quantos clientes cada uma das cidades que começam com
M?

9.
Retorna o nome dos representantes de vendas e o número de clientes atendidos por cada cliente.

10.
Calcula o número de clientes que não recebem um representante de vendas.
11.
Calcule a data do primeiro e do último pagamento efetuado por cada um dos clientes. A lista deve

12. Calcule o número de produtos diferentes em cada um dos pedidos.


13. Calcule a soma da quantidade total de todos os produtos que aparecem em cada
um dos pedidos.

14.
Retorna uma lista dos 20 produtos mais vendidos e o número total de unidades que foram vendidas

15.
O volume de negócios que a empresa teve ao longo da história, indicando a matéria coletável, o IV
detalle_pedido. O IVA é de 21% da matéria
coletável e o total a soma dos dois campos anteriores.
16.
As mesmas informações da pergunta anterior, mas agrupadas por código de produto.

17.
As mesmas informações da pergunta anterior, mas agrupadas por código de produto filtradas por c
OR.
18. Liste o total de vendas de produtos que faturaram mais de 3000 euros. O nome,
as unidades vendidas, o total faturado e o total faturado com impostos (21% de
IVA) serão exibidos.

1.4.8 Subconsultas

1.4.8.1 Com operadores de comparação de base

1. Retorna o nome do cliente com o maior limite de crédito.

2. Retorna o nome do produto com o preço de varejo mais caro.


3.
Retorna o nome do produto para o qual a maioria das unidades foi vendida. (Observe que você pre
detalle_pedido. Depois de saber qual é o código do produto, você pode
facilmente obter seu nome.)

4.
Clientes cujo limite de crédito é maior do que os pagamentos que você fez. (Sem usar
INNER JOIN).

5. Devolva o produto que tiver mais unidades em estoque.


6. Devolva o produto que tiver menos unidades em estoque.

7. Retorna o nome, sobrenome e e-mail dos funcionários que estão a cargo de


Alberto Soria.

1.4.8.2 Subconsultas com TODOS e TODOS

8. Retorna o nome do cliente com o maior limite de crédito.


9. Retorna o nome do produto com o preço de varejo mais caro.

10. Devolva o produto que tiver menos unidades em estoque.

1.4.8.3 Subconsultas com IN e NOT IN

11. Retorna o nome, sobrenome1 e título dos funcionários que não representam
nenhum cliente.
12. Retorna uma listagem mostrando apenas os clientes que não fizeram um
pagamento.

13. Retorna uma listagem mostrando apenas os clientes que fizeram um pagamento.

14. Retorna uma lista de produtos que nunca apareceram em um pedido.


15. Retorna o nome, sobrenome, cargo e número de telefone do escritório de
funcionários que não são representantes de vendas de nenhum cliente.

1.4.8.4 Subconsultas com EXISTE e NÃO EXISTE

16. Retorna uma listagem mostrando apenas os clientes que não fizeram um
pagamento.
17. Retorna uma listagem que mostra apenas os clientes que fizeram um pagamento.
18. Retorna uma lista de produtos que nunca apareceram em um pedido.

19. Retorna uma lista de produtos que já apareceram em um pedido.

1.4.8.5 Subconsultas correlacionadas


1.4.9 Consultas diversas
1.
Retorna a lista de clientes indicando o nome do cliente e quantos pedidos ele fez. Por favor, note q

2. Retorna uma lista com os nomes dos clientes e o total pago por cada um deles.
Por favor, note que pode haver clientes que não fizeram nenhum pagamento.
3. Retorna os nomes dos clientes que fizeram pedidos em 2008 em ordem
alfabética do mais baixo para o mais alto.
4.
Retorna a lista de clientes onde o nome do cliente, o nome e sobrenome de seu representante de ve

5. Retorna uma lista indicando todas as cidades onde há escritórios e o número de


funcionários que você tem

Você também pode gostar