Escolar Documentos
Profissional Documentos
Cultura Documentos
Ana Carolina
Igor Rodrigues
Robson Douglas
Richard Loureiro
Rodrigo Barbosa
O banco foi criado na conexão externa do IF, através das informações passadas
pelo professor Celso. O banco é nomeado de gti4, disponível na conexão externa de host
200.131.251.10 e port 8087. Com usuário grupo4gti e senha 2018010225.
Adendo: Nos campos de CPF, CNPJ e Telefone foram usados VARCHAR(n), porque em
alguns casos, o valor inserido ultrapassa o alcance do INT.
Criando tabelas
Inserindo Dados
Simples:
select *
from Conta
where Tipo = 'Pagar'
and CPF_Gerente = 12345678912;
Objetivo: Recuperar todas as contas do tipo ‘Receber’ e com status pendente.
Processo de construção: A consulta fará uma projeção da tabela Conta, exibindo todas
as colunas, com as tuplas na condição de terem nas colunas os valores, Tipo com
‘Receber’ e Status com ‘Pendente’.
select *
from Conta
where Tipo = 'Receber'
and `Status` = 'Pendente';
Objetivo: Recuperar todas as contas do tipo ‘Receber’ contendo o valor entre 100 e 500
reais.
select *
from Conta
where Tipo = 'Receber'
and Valor between 100 and 500;
Like:
select *
from Servico
where DataEmissao like '2019-03-__'
and ID_Peca is not null;
Objetivo: Recuperar veículos cuja placa contém 22 como os dois primeiros numerais.
select *
from Veiculo
where Placa like '%22__';
Objetivo: Recuperar por ordem alfabética os nomes dos clientes físicos e seus
respectivos ID.
Objetivo: Recuperar todas as peças do menor para o maior valor, exibindo nome, valor e
sua respectiva agência.
select *
from Servico, Peca
where Servico.ID_Peca = Peca.ID
order by Valor desc , Servico.ID asc;
Objetivo: Recuperar as contas de status pendente do tipo pagar e ordenar do valor maior
para o menor.
select *
from Conta
where `Status` = 'Pendente'
and Tipo = 'Pagar'
order by Valor desc;
Group by:
Objetivo: Recuperar a agência, ID, nome e valor da peça fornecida e ordenar pelo ID da
peça.
select *
from Servico
where CPF_Funcionario = 12493678455
group by ID;
Função de agregação:
select
(select sum(Valor)
from Conta
where Tipo = 'Receber'
and Conta.`Status` = 'Pendente') as Receber,
(select sum(Valor)
from Conta
where Tipo = 'Pagar'
and Conta.`Status` = 'Pendente') as Pagar;
select max(Valor)
from Conta
where `Status` = 'Pendente';
select
(select count(ID) from Servico where Descricao = 'Alinhamento') as Alinhamento,
(select count(ID) from Servico where Descricao = 'Balanceamento') as
Balanceamento,
(select count(ID) from Servico where Descricao = 'Troca de suspensão a ar') as
Troca_Suspensao,
(select count(ID) from Servico where Descricao = 'Troca e reparo de suspensão a ar')
as Troca_Reparo_Supensao,
(select count(ID) from Servico where Descricao = 'Troca de Óleo') as Troca_Óleo,
(select count(ID) from Servico where Descricao = 'Troca de Pneu') as Trocar_Pneu,
(select count(ID) from Servico where Descricao = 'Troca de pastilhas de freios') as
Troca_Pastilha_Freio,
(select count(ID) from Servico where Descricao = 'Troca da barra de direção') as
Troca_barra_Direção,
(select count(ID) from Servico where Descricao = 'Troca de fluídos de freios') as
Trocar_Fluído_Freio,
(select count(ID) from Servico where Descricao = 'Reparo de suspensão a ar') as
Reparo_Suspensão,
(select count(ID) from Servico where Descricao = 'Troca de amortecedores e
molas') as Troca_Amortecedores_Molas,
(select count(ID) from Servico where Descricao = 'Reparo de Caixa de
Transmissão') as Reparo_Caixa_Transmissão;
Processo de construção: A consulta utiliza group by para agrupar pelo Nome as peças e
a função agregada min para identificar o menor valor e ordena de forma crescente os
preços.
Processo de construção: Utilizando duas projeções com operação join, a consulta faz
união dos conjuntos pela função union all, de modo que um ID de Cliente possa aparecer
tanto em Fisico como em Juridico e ainda ser exibido.
(select *
from Conta
where Valor = 40)
union
(select *
from Conta
where Valor > 600);
(select *
from Funcionario
where DataNascimento < '1985'
order by DataNascimento asc)
union
(select *
from Funcionario
where DataNascimento > '1995'
order by DataNascimento asc);
Join:
Objetivo: Recurar nome do gerente, ID, tipo, status e valor da conta delegada a ele, além
da ID do serviço referente aquela conta.
Processo de construção: A projeção faz junção entre a tabela Gerente e a Conta, onde
tem-se a condição de igualdade no CPF do gente em ambos.
select *
from Cliente
join Veiculo
on Veiculo.ID_Cliente = Cliente.ID;
Processo de construção: A consulta utilização a junção entre duas tabelas têm como
condição (on) a igualdade entre CPF da tabela funcionário com o CPF_Funcionário da
tabela dependente e recupera seu nome e seus dependentes e a relação entre ambos,
além da ordenação em relação ao nome do dependente de forma decrescente.
Processo de construção: Primeiro a consulta fará uma junção entre as tabelas serviços
e conta através da função left outer join, e pela condição where fará a seleção das tuplas
do tipo pagar com status Pendente.
select *
from Servico
left outer join Conta
on Servico.ID = Conta.ID_Servico
where Tipo = 'Pagar'
and Conta.`Status` = 'Pendente';
Objetivo: Selecionar as contas a receber pendentes.
Processo de construção: Primeiro a consulta fará uma junção entre as tabelas serviços
e conta através da função left outer join, e pela condiçao where fará a seleção das tuplas
do tipo Receber com status Pendente.
select *
from Servico
left outer join Conta
on Servico.ID = Conta.ID_Servico
where Tipo = 'Receber'
and Conta.`Status` = 'Pendente';
select *
from Peca
right outer join Agencia
on Peca.CNPJ_Agencia = Agencia.CNPJ;
select *
from Dependente
left outer join Funcionario
on Dependente.CPF_Funcionario = Funcionario.CPF;
Subconsulta aninhada:
Objetivo: Recuperar todas as peças com valor abaixo de todos os resultados da segunda
projeção.
select *
from Servico
where DataConclusao > all
(select DataConclusao
from Servico
where DataConclusao like '2019-02-__');
select *
from Funcionario
where CPF in
(select CPF_Funcionario
from Servico);
select *
from Peca
where ID in
(select ID_Peca
from Servico);
View:
Objetivo: Criação de uma view com os dados do funcionário e seus respectivos gerentes.
Objetivo: Criação de uma view com os dados das peças e as agências onde encontrar
essas peças.