Você está na página 1de 3

1) Criar um banco de dados MySql de acordo com os exemplos do diagrama;

create database RaimundoMoraes;


-- Necess�rios antes de qualquer coisa criar um banco de dados para a
inser��o de dados.--
use RaimundoMoraes;
-- Realizada a conex�o com o Banco de Dados.--

-- Criado a tabela "tbl_clientes" com os campos mencionados e as restri��es


de chave prim�ria e chaves �nicas, Isso garante que n�o haver� valores duplicados
nessas colunas.--
-- Inserido posteriormente a cria��o do codigo o atributo AUTO_INCREMENT,
para que o valor da coluna fosse automaticamente incrementado em cada inser��o de
um novo registro na tabela.--
CREATE TABLE tbl_clientes (
id_tbl_clientes INT AUTO_INCREMENT,
nome VARCHAR(45),
data_nascimento VARCHAR(45),
data_cadastro TIMESTAMP,
cpf CHAR(11),
email VARCHAR(45),
PRIMARY KEY (id_tbl_clientes),
UNIQUE KEY cpf_unique (cpf),
UNIQUE KEY email_unique (email)
);

-- Criado a tabela "tbl_aluguel" com os campos mencionados e as restri��es de


chave prim�ria e chaves estrangeiras, Isso garante que n�o haver� valores
duplicados nessas colunas.--
-- Inserido posteriormente a cria��o do codigo o atributo AUTO_INCREMENT,
para que o valor da coluna fosse automaticamente incrementado em cada inser��o de
um novo registro na tabela.--
CREATE TABLE tbl_aluguel (
id_tbl_aluguel INT AUTO_INCREMENT PRIMARY KEY,
data_aluguel DATE,
data_volta DATE,
valor DECIMAL(10, 2),
fk_tbl_clientes INT,
FOREIGN KEY (fk_tbl_clientes) REFERENCES tbl_clientes(id_tbl_clientes)
);

CREATE TABLE tbl_filme (


id_tbl_filme INT AUTO_INCREMENT PRIMARY KEY,
data_lancamento DATE,
nome VARCHAR(45),
descricao VARCHAR(45)
);

CREATE TABLE tbl_aluguel_filme (


fk_tbl_filme INT,
fk_tbl_aluguel INT,
INDEX fk_tbl_aluguel_filme_tbl_filme1_idx (fk_tbl_filme),
INDEX fk_tbl_aluguel_filme_tbl_aluguel1_idx (fk_tbl_aluguel),
FOREIGN KEY (fk_tbl_filme) REFERENCES tbl_filme (id_tbl_filme),
FOREIGN KEY (fk_tbl_aluguel) REFERENCES tbl_aluguel (id_tbl_aluguel)
);

2) Comandos de sele��o
- Selecione o filme mais antigo:
SELECT * FROM tbl_filmes
ORDER BY data_lancamento ASC;
-- Para chegar na resolu��o dessa quest�o foi usado um ORDER BY para assim
conseguir chegar no filme mais antigo do catalogo.--

- Selecione os clientes com a quantidade total de alugu�is realizados. Ordene


pela quantidade de alugu�is:
SELECT c.id_tbl_clientes, c.nome, COUNT(a.id_tbl_aluguel) AS total_alugueis
FROM tbl_clientes c
JOIN tbl_aluguel a ON c.id_tbl_clientes = a.fk_tbl_clientes
GROUP BY c.id_tbl_clientes, c.nome
ORDER BY total_alugueis DESC;
--Nessa quest�o foi necess�rio o uso da JOIN para consegui realizar uma
consulta em mais de uma tabela ao mesmo tempo, tamb�m foi necess�rio o uso de um
ORDER BY--

- Selecione os clientes com a quantidade de alugu�is realizados e total gasto


por ano. Ordene pelo maior valor gasto por ano:
SELECT c.id_tbl_clientes, c.nome, YEAR(a.data_aluguel) AS ano,
COUNT(a.id_tbl_aluguel) AS total_alugueis, SUM(a.valor) AS total_gasto
FROM tbl_clientes c
JOIN tbl_aluguel a ON c.id_tbl_clientes = a.fk_tbl_clientes
JOIN tbl_aluguel_filme af ON a.id_tbl_aluguel = af.fk_tbl_aluguel
JOIN tbl_filme f ON af.fk_tbl_filme = f.id_tbl_filme
GROUP BY c.id_tbl_clientes, c.nome, YEAR(a.data_aluguel)
ORDER BY total_gasto DESC;
-- Nessa quest�o foi necess�rio o uso do JOIN e GROUP BY, tive uma relativa
dificil de consegui achar o resultado pois me perdi um pouco no uso do GROUP BY.--

3) Comandos de inser��o:
- insira um novo cliente com o nome "Rafael".
INSERT INTO tbl_clientes (nome) VALUES ('Rafael');
-- Realizado o comando UPDATE na tabela clientes.--
-- N�o � necess�rio colocar o ID pois o ID esta como AUTO_INCREMENT

- Insira um novo filme com o nome �Madagascar�, data de lan�amento


�24/06/2005� e descri��o �Anima��o�:
INSERT INTO tbl_filme (nome, data_lancamento, descricao)
VALUES ('Madagascar', '2005-06-24', 'Anima��o');

-Insira um novo aluguel no dia 28/08/2005 do filme Madagascar pelo cliente


Rafael com o valor de R $25.
INSERT INTO tbl_aluguel (data_aluguel, fk_tbl_filme, fk_tbl_clientes, valor)
VALUES ('2005-08-28', 1 , 6, 25);

-Insira um novo aluguel no dia 20/09/2005 do filme Madagascar pelo cliente


Rafael com o valor de R $15.
INSERT INTO tbl_aluguel (data_aluguel, fk_tbl_filme, fk_tbl_clientes, valor)VALUES
('2005-09-20', (SELECT id_tbl_filme FROM tbl_filme WHERE nome = 'Madagascar'),
(SELECT id_tbl_clientes FROM tbl_clientes WHERE nome = 'Rafael'), 15);

4. Comandos de atualiza��o
-Realize um comando de atualiza��o para aplicar um desconto de 10% em
todos os alugu�is realizados pelo cliente Rafael. Considere que o n�mero de
alugu�is realizados por ele � grande e seria invi�vel fazer a atualiza��o de
cada item em uma query, ou seja, fazer a atualiza��o de todos os registros
em um �nico comando SQL.

UPDATE tbl_aluguel
SET valor = valor * 0.9
WHERE fk_tbl_clientes = (SELECT id_tbl_clientes FROM tbl_clientes WHERE nome =
'Rafael');

Você também pode gostar