Você está na página 1de 33

Instituto Federal Sudeste de Minas Gerais

Ana Carolina
Igor Rodrigues
Robson Douglas
Richard Loureiro
Rodrigo Barbosa

Trabalho Prático DML

São João del-Rei


2019
Duas tabelas foram retiradas, pelo motivo de não fazerem muito sentido ao banco.
A tabela Mecânicos foi a primeira a ser eliminada, esta, obviamente um erro do modelo
relacional. Já a tabela Ferramentas, tornou-se desnecessária, ao pensarmos na agilidade
que o banco exige, e seria desgastante haver um registro como este.

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

CREATE TABLE Gerente(


CPF VARCHAR(11) NOT NULL,
Senha VARCHAR(45) NOT NULL,
RG VARCHAR(10) NULL,
Email VARCHAR(45) NULL,
Nome VARCHAR(45) NOT NULL,
DataNascimento DATE NULL,
Sexo VARCHAR(9) NULL,
Endereco VARCHAR(45) NULL,
Telefone VARCHAR(11) NULL,
CONSTRAINT PK_Gerente PRIMARY KEY (CPF, Senha)
);

CREATE TABLE Funcionario(


CPF VARCHAR(11) NOT NULL,
RG VARCHAR(10) NULL,
Email VARCHAR(45) NULL,
Nome VARCHAR(45) NOT NULL,
DataNascimento DATE NULL,
Sexo VARCHAR(9) NULL,
Endereco VARCHAR(45) NULL,
Telefone VARCHAR(11) NULL,
Cargo VARCHAR(45) NULL,
CONSTRAINT PK_Funcionario PRIMARY KEY (CPF),
CPF_Gerente VARCHAR(11) NOT NULL,
CONSTRAINT FK_Funcionario_Gerente FOREIGN KEY (CPF_Gerente)
REFERENCES Gerente(CPF)
ON UPDATE CASCADE
ON DELETE NO ACTION
);

CREATE TABLE Dependente(


Nome VARCHAR(45) NOT NULL,
Sexo VARCHAR(9) NULL,
Relacao VARCHAR(45) NULL,
DataNascimento DATE NULL,
Telefone VARCHAR(11) NULL,
CPF_Funcionario VARCHAR(11) NOT NULL,
CONSTRAINT FK_Dependente_Funcionario FOREIGN KEY (CPF_Funcionario)
REFERENCES Funcionario(CPF)
ON UPDATE CASCADE
ON DELETE CASCADE
);

CREATE TABLE Cliente(


ID INT NOT NULL,
Email VARCHAR(45) NULL,
Endereco VARCHAR(45) NULL,
Telefone VARCHAR(11) NULL,
CONSTRAINT PK_Cliente PRIMARY KEY (ID)
);

CREATE TABLE Fisico(


CPF VARCHAR(11) NOT NULL,
Nome VARCHAR(45) NOT NULL,
CONSTRAINT PK_Fisico PRIMARY KEY (CPF),
ID_Cliente INT NOT NULL,
CONSTRAINT FK_Cliente_Fisico FOREIGN KEY (ID_Cliente)
REFERENCES Cliente(ID)
ON UPDATE CASCADE
ON DELETE CASCADE
);

CREATE TABLE Juridico(


CNPJ VARCHAR(14) NOT NULL,
RazaoSocial VARCHAR(45) NOT NULL,
CONSTRAINT PK_Juridico PRIMARY KEY (CNPJ),
ID_Cliente INT NOT NULL,
CONSTRAINT FK_Cliente_Juridico FOREIGN KEY (ID_Cliente)
REFERENCES Cliente(ID)
ON UPDATE CASCADE
ON DELETE CASCADE
);

CREATE TABLE Veiculo(


Placa VARCHAR(7) NOT NULL,
Modelo VARCHAR(45) NULL,
Descricao VARCHAR(45) NULL,
CONSTRAINT PK_Veiculo PRIMARY KEY (Placa),
ID_Cliente INT NOT NULL,
CONSTRAINT FK_Veiculo_Cliente FOREIGN KEY (ID_Cliente)
REFERENCES Cliente(ID)
ON UPDATE CASCADE
ON DELETE CASCADE
);

CREATE TABLE Agencia(


CNPJ VARCHAR(14) NOT NULL,
RazaoSocial VARCHAR(45) NOT NULL,
InscricaoEstadual VARCHAR(11) NOT NULL,
Email VARCHAR(45) NULL,
Endereco VARCHAR(45) NULL,
Telefone VARCHAR(11) NULL,
CONSTRAINT PK_Agencia PRIMARY KEY (CNPJ)
);

CREATE TABLE Peca(


ID INT NOT NULL,
Nome VARCHAR(45) NOT NULL,
Valor DECIMAL(8,2) NOT NULL,
CONSTRAINT PK_Peca PRIMARY KEY (ID),
CNPJ_Agencia VARCHAR(14) NOT NULL,
CONSTRAINT FK_Peca_Agencia FOREIGN KEY (CNPJ_Agencia)
REFERENCES Agencia(CNPJ)
ON UPDATE CASCADE
ON DELETE CASCADE
);

CREATE TABLE Servico(


ID INT NOT NULL,
DataEmissao DATE NOT NULL,
DataConclusao DATE NULL,
`Status` VARCHAR(45) NULL,
Descricao VARCHAR(45) NOT NULL,
CONSTRAINT PK_Servico PRIMARY KEY (ID),
Placa_Veiculo VARCHAR(7) NOT NULL,
CPF_Funcionario VARCHAR(11) NOT NULL,
ID_Peca INT NULL,
QuantPeca INT NULL,
CONSTRAINT FK_Servico_Veiculo FOREIGN KEY (Placa_Veiculo)
REFERENCES Veiculo(Placa),
CONSTRAINT FK_Servico_Funcionario FOREIGN KEY (CPF_Funcionario)
REFERENCES Funcionario(CPF),
CONSTRAINT FK_Servico_Peca FOREIGN KEY (ID_Peca)
REFERENCES Peca(ID)
ON UPDATE CASCADE
ON DELETE RESTRICT
);

CREATE TABLE Conta(


ID INT NOT NULL,
Tipo VARCHAR(45) NOT NULL,
`Status` VARCHAR(45) NOT NULL,
Valor DECIMAL(8,2) NOT NULL,
CONSTRAINT PK_Conta PRIMARY KEY (ID),
ID_Servico INT NOT NULL,
CPF_Gerente VARCHAR(11) NOT NULL,
CONSTRAINT FK_Conta_Servico FOREIGN KEY (ID_Servico)
REFERENCES Servico(ID),
CONSTRAINT FK_Conta_Gerente FOREIGN KEY (CPF_Gerente)
REFERENCES Gerente(CPF)
ON UPDATE CASCADE
ON DELETE RESTRICT
);

Inserindo Dados

insert into Gerente values


('12345678912','123bill','MG12345678','bill@email.com','Bill Gates','1955-09-
28','Masculino','Washington, EUA','3112345678'),
('98765432198','123jeff','MG98765432','jeff@email.com','Jeff Bezos','1964-01-
12','Masculino','Novo México, EUA','3198765432');

insert into Funcionario values


('12493678455','MG17385461','joaquim@gmail.com','Joaquim','1980-03-
30','Masculino','Entre Rios de Minas','3233316065','Mecânico','12345678912'),
('12496227981','MG17386003','victor@gmail.com','Victor','1982-05-29','Masculino','Entre
Rios de Minas','3233316080','Mecânico','12345678912'),
('12498777507','MG17386545','marcos@gmail.com','Marcos','1987-12-
20','Masculino','Entre Rios de Minas','3233316095','Mecânico','12345678912'),
('12501327033','MG17387087','leandro@gmail.com','Leandro','1995-12-
21','Masculino','Entre Rios de Minas','3233316110','Mecânico','12345678912'),
('12503876559','MG17387629','ricardo@gmail.com','Ricardo','1992-07-
25','Masculino','Entre Rios de Minas','3233316125','Mecânico','12345678912'),
('12506426085','MG17388171','jorge@gmail.com','Jorge','1987-11-26','Masculino','Entre
Rios de Minas','3233316140','Mecânico','12345678912'),
('12508975611','MG17388713','mariano@gmail.com','Mariano','1997-01-
01','Masculino','Entre Rios de Minas','3233316155','Mecânico','12345678912'),
('12511525137','MG17389255','leomir@gmail.com','Leomir','1990-12-05','Masculino','Entre
Rios de Minas','3233316170','Mecânico','12345678912'),
('12514074663','MG17389797','lucas@gmail.com','Lucas','1991-01-
05','Masculino','Barbacena','3233316185','Mecânico','12345678912'),
('12516624189','MG17390339','anderson@gmail.com','Anderson','1993-06-
08','Masculino','Barbacena','3233316200','Mecânico','12345678912'),
('12519173715','MG17385461','alex@gmail.com','Alex','1994-05-
08','Masculino','Barbacena','3233316215','Mecânico','12345678912'),
('12521723241','MG17391423','alisson@gmail.com','Alisson','1990-03-
26','Masculino','Barbacena','3233316230','Mecânico','12345678912'),
('12524272767','MG17391965','alan@gmail.com','Alan','1985-04-
04','Masculino','Barbacena','3233316245','Mecânico','12345678912'),
('12526822293','MG17392507','jose@gmail.com','Jose','1994-06-
27','Masculino','Barbacena','3233316260','Mecânico','12345678912'),
('12529371819','MG17393049','rodrigo@gmail.com','Rodrigo','1992-10-
15','Masculino','Barbacena','3233316275','Mecânico','12345678912'),
('12531921345','MG17393591','luiz@gmail.com','Luiz','1992-03-02','Masculino','Entre Rios
de Minas','3233316290','Mecânico','98765432198'),
('12534470871','MG17394133','luciano@gmail.com','Luciano','1991-01-
07','Masculino','Entre Rios de Minas','3233316305','Mecânico','98765432198'),
('12537020397','MG17394675','carlos@gmail.com','Carlos','1997-02-16','Masculino','Entre
Rios de Minas','3233316320','Mecânico','98765432198'),
('12539569923','MG17395217','davi@gmail.com','Davi','1994-06-28','Masculino','Entre
Rios de Minas','3233316335','Mecânico','98765432198'),
('12542119449','MG17395759','emanuel@gmail.com','Emanuel','1990-01-
06','Masculino','Entre Rios de Minas','3233316350','Mecânico','98765432198'),
('12544668975','MG17396301','vinicius@gmail.com','Vinicius','1989-08-
30','Masculino','Entre Rios de Minas','3233316365','Mecânico','98765432198'),
('12547218501','MG17396843','lucca@gmail.com','Lucca','1987-09-
25','Masculino','Barbacena','3233316380','Mecânico','98765432198'),
('12549768027','MG17397385','diego@gmail.com','Diego','1990-04-
09','Masculino','Barbacena','3233316395','Mecânico','98765432198'),
('12552317553','MG17397927','willian@gmail.com','Willian','1991-02-
04','Masculino','Barbacena','3233316410','Mecânico','98765432198'),
('12554867079','MG17398469','rodinei@gmail.com','Rodinei','1992-03-
04','Masculino','Barbacena','3233316425','Mecânico','98765432198'),
('12557416605','MG17399011','gabriel@gmail.com','Gabriel','1999-09-
04','Masculino','Barbacena','3233316440','Mecânico','98765432198'),
('12559966131','MG17399553','jhonatan@gmail.com','Jhonatan','1994-12-
15','Masculino','Barbacena','3233316455','Mecânico','98765432198'),
('12562515657','MG17400095','lucia@gmail.com','Lucia','1990-09-26','Feminino','Entre
Rios de Minas','3233316470','Atendente','98765432198'),
('12565065183','MG17400637','larissa@gmail.com','Larissa','1991-01-
27','Feminino','Barbacena','3233316485','Atendente','98765432198');

insert into Dependente values


('Robson Júnior','Masculino','Filho','2000-01-02','3233316065','12493678455'),
('Miguel','Masculino','Filho','2001-02-04','3233316065','12493678455'),
('Carlos','Masculino','Filho','2010-10-15','3233316065','12493678455'),
('Victor Júnior','Masculino','Filho','2015-09-09','3233316080','12496227981'),
('Vinicius','Masculino','Irmão','2011-10-05','3233316095','12498777507'),
('Enzo','Masculino','Filho','2010-11-26','3233316095','12498777507'),
('Juliano','Masculino','Irmão','2007-12-24','3233316110','12501327033'),
('Luiz Henrique','Masculino','Filho','2008-11-30','3233316185','12514074663'),
('Leandro','Masculino','Irmão','2000-12-12','3233316185','12514074663'),
('Wagner','Masculino','Irmão','2000-12-11','3233316185','12514074663'),
('Emanuel','Masculino','Irmão','2000-12-13','3233316335','12539569923'),
('Ester','Feminino','Filha','2005-06-28','3233316335','12539569923'),
('Lívia','Feminino','Filha','2008-12-03','3233316335','12539569923'),
('Tiago','Masculino','Irmão','2007-12-25','3233316350','12542119449'),
('Stefanny','Feminino','Filha','2000-12-14','3233316350','12542119449'),
('Luíza','Feminino','Cônjuge','1982-04-21','3233316350','12542119449'),
('Davi','Masculino','Filho','2008-12-01','3233316365','12544668975'),
('Júlia','Feminino','Filha','2007-12-26','3233316365','12544668975'),
('Camila','Feminino','Cônjuge','1983-05-30','3233316365','12544668975'),
('Gustavo','Masculino','Irmão','2000-12-13','3233316380','12547218501'),
('Maria','Feminino','Filha','2008-12-02','3233316380','12547218501'),
('Letícia','Feminino','Cônjuge','1985-06-29','3233316380','12547218501'),
('João','Masculino','Pai','1962-12-12','3233316395','12549768027'),
('Maria Eduarda','Feminino','Cônjuge','1980-12-14','3233316395','12549768027'),
('Laura','Feminino','Filha','2000-12-15','3233316395','12549768027'),
('André','Masculino','Cônjuge','1987-12-26','3233316410','12552317553'),
('Lara','Feminino','Filha','2006-12-13','3233316410','12552317553'),
('Ana Carolina','Feminino','Cônjuge','2995-12-02','3233316425','12554867079'),
('Larissa','Feminino','Filha','2018-12-27','3233316425','12554867079'),
('Karla','Feminino','Cônjuge','1992-04-20','3233316440','12557416605'),
('Viviane','Feminino','Cônjuge','1993-05-29','3233316455','12559966131'),
('Vicente','Masculino','Filho','2007-12-25','3233316470','12562515657'),
('Fernando','Masculino','Filho','2008-12-01','3233316485','12565065183');

insert into Cliente values


('100','100@cliente.com.br','Barbacena','3233204035'),
('101','101@cliente.com.br','Barbacena','3233205087'),
('102','102@cliente.com.br','Barbacena','3233206139'),
('103','103@cliente.com.br','Barbacena','3233207191'),
('104','104@cliente.com.br','Barbacena','3233208243'),
('105','105@cliente.com.br','Barbacena','3233209295'),
('106','106@cliente.com.br','Carandaí','3233210347'),
('107','107@cliente.com.br','Carandaí','3233211399'),
('108','108@cliente.com.br','Carandaí','3233212451'),
('109','109@cliente.com.br','Carandaí','3233213503'),
('110','110@cliente.com.br','Carandaí','3233214555'),
('111','111@cliente.com.br','Carandaí','3233215607'),
('112','112@cliente.com.br','Entre Rios de Minas','3233216659'),
('113','113@cliente.com.br','Entre Rios de Minas','3233217711'),
('114','114@cliente.com.br','Entre Rios de Minas','3233218763'),
('115','115@cliente.com.br','Entre Rios de Minas','3233219815'),
('116','116@cliente.com.br','Entre Rios de Minas','3233220867'),
('117','117@cliente.com.br','Entre Rios de Minas','3233221919'),
('118','118@cliente.com.br','Entre Rios de Minas','3233222971'),
('119','119@cliente.com.br','Entre Rios de Minas','3233224023'),
('120','120@cliente.com.br','São João Del Rei','3233225075'),
('121','121@cliente.com.br','São João Del Rei','3233226127'),
('122','122@cliente.com.br','São João Del Rei','3233227179'),
('123','123@cliente.com.br','São João Del Rei','3233228231'),
('124','124@cliente.com.br','São João Del Rei','3233229283'),
('125','125@cliente.com.br','São João Del Rei','3233230335'),
('126','126@cliente.com.br','Tiradentes','3233231387'),
('127','127@cliente.com.br','Barroso','3233232439'),
('128','128@cliente.com.br','Barroso','3233233491'),
('129','129@cliente.com.br','Barroso','3233234543'),
('130','130@cliente.com.br','Barroso','3233235595'),
('131','131@cliente.com.br','Barroso','3233236647'),
('132','132@cliente.com.br','Barroso','3233237699'),
('133','133@cliente.com.br','Barroso','3233238751'),
('134','134@cliente.com.br','Desterro do Melo','3233239803'),
('135','135@cliente.com.br','Desterro do Melo','3233240855'),
('136','136@cliente.com.br','Desterro do Melo','3233241907'),
('137','137@cliente.com.br','Desterro do Melo','3233242959'),
('138','138@cliente.com.br','Desterro do Melo','3233244011'),
('139','139@cliente.com.br','Desterro do Melo','3233245063'),
('140','140@cliente.com.br','Desterro do Melo','3233246115'),
('141','141@cliente.com.br','Desterro do Melo','3233247167'),
('142','142@cliente.com.br','Desterro do Melo','3233248219'),
('143','143@cliente.com.br','Conselheiro Lafaiete','3233249271'),
('144','144@cliente.com.br','Conselheiro Lafaiete','3233250323'),
('145','145@cliente.com.br','Conselheiro Lafaiete','3233251375'),
('146','146@cliente.com.br','Conselheiro Lafaiete','3233252427'),
('147','147@cliente.com.br','Conselheiro Lafaiete','3233253479'),
('148','148@cliente.com.br','Conselheiro Lafaiete','3233254531'),
('149','149@cliente.com.br','Lavras','3233255583'),
('150','150@cliente.com.br','Lavras','3233256635'),
('151','151@cliente.com.br','Lavras','3233257687');
insert into Fisico values
('12910410540','Maurício','100'),
('12910410791','Joaquim','101'),
('12910411042','Felício','102'),
('12910411293','Vicente','103'),
('12910411544','Leandro','104'),
('12910411795','Marcos','105'),
('12910412046','Marcus','106'),
('12910412297','Vitor','107'),
('12910412548','Vinícius','108'),
('12910412799','Rodrigo','109'),
('12910413050','Miguel','110'),
('12910413301','Luiz Henrique','111'),
('12910413552','Luiz Carlos','112'),
('12910413803','Ana Carolina','113'),
('12910414054','Vicente Júnior','114'),
('12910414305','Celso','115'),
('12910414556','Vanessa','116'),
('12910414807','Wanda','117'),
('12910415058','Rafaela','118'),
('12910415309','Suzana','119'),
('12910415560','Ester','120'),
('12910415811','Letícia','121'),
('12910416062','Lara','122'),
('12910416313','Beatriz','123'),
('12910416564','Laura','124'),
('12910416815','Lívia','125'),
('12910417066','José','126'),
('12910417317','Maria','127'),
('12910417568','Robson Douglas','128'),
('12910417819','Ricardo','129'),
('12910418321','Cristiano','130'),
('12910418572','Messi','131'),
('12910418823','Neymar','132'),
('12910419074','Vitor Gabriel','133'),
('12910419325','Adão','134'),
('12910419576','Eva','135'),
('12910419827','Edna','136'),
('12910420078','Nathália','137'),
('12910420329','Carlos','138'),
('12910420580','Eduardo','149');

insert into Juridico values


('15794561250001','Vale SA','140'),
('15794561300001','Petrobras SA','141'),
('15794561350001','Samarco','142'),
('15794561400001','Cemig','143'),
('15794561450001','Oi','144'),
('15794561500001','Vivo','145'),
('15794561550001','NetRosas','146'),
('15794561600001','Embratel','147'),
('15794561650001','Copasa','148'),
('15794561700001','VIA 040','149'),
('15794561750001','Robson Serviços','150'),
('15797561750001','Igor Serviços de TI','151');

insert into Veiculo values


('XXX1950','Gol','Alinhamento','100'),
('XXX1955','Astra','Troca de Óleo','101'),
('XXX1960','Vectra','Troca de Pneu','102'),
('XXX1965','Grand Siena','Troca de pastilhas de freios','103'),
('XXX1970','Uno','Troca da barra de direção','104'),
('XXX1975','Palio','Troca de Pneu','105'),
('XXX1980','Ford Ka','Troca de pastilhas de freios','106'),
('XXX1985','Saveiro','Alinhamento','107'),
('XXX1990','Onix','Alinhamento','108'),
('XXX1995','Fusca','Troca de fluídos de freios','109'),
('XXX2000','Opala','Reparo de suspensão a ar','110'),
('XXX2005','Ford Fiesta','Troca de amortecedores e molas','111'),
('XXX2010','Ford Focus','Troca da barra de direção','112'),
('XXX2015','Argo','Reparo de Caixa de Transmissão','113'),
('XXX2020','Prisma','Balanceamento','114'),
('XXX2025','Voyage','Troca de fluídos de freios','115'),
('XXX2030','Amarok','Troca de Óleo','116'),
('XXX2035','Mobi','Alinhamento','117'),
('XXX2040','Fox','Troca de Pneu','118'),
('XXX2045','Strada','Troca de Pneu','119'),
('XXX2050','Montana','Alinhamento','120'),
('XXX2055','Ford Ka','Alinhamento','121'),
('XXX2060','Fusca','Troca de amortecedores e molas','122'),
('XXX2065','Grand Siena','Balanceamento','123'),
('XXX2070','Gol','Troca de pastilhas de freios','124'),
('XXX2075','Astra','Troca de Óleo','125'),
('XXX2080','Uno','Troca da barra de direção','126'),
('XXX2085','Saveiro','Troca de fluídos de freios','127'),
('XXX2090','Palio','Troca de suspensão a ar','128'),
('XXX2095','Vectra','Reparo de Caixa de Transmissão','129'),
('XXX2105','Opala','Troca de amortecedores e molas','130'),
('XXX2110','Mobi','Balanceamento','131'),
('XXX2120','Montana','Balanceamento','132'),
('XXX2125','Prisma','Troca de Óleo','133'),
('XXX2130','Strada','Troca da barra de direção','134'),
('XXX2135','Voyage','Troca de pastilhas de freios','135'),
('XXX2140','S10','Troca de Pneu','136'),
('XXX2145','Onix','Troca de Pneu','137'),
('XXX2150','Astra','Troca de Pneu','138'),
('XXX2155','Uno','Alinhamento','139'),
('XXX2160','Ford Fiesta','Troca de fluídos de freios','140'),
('XXX2165','Argo','Reparo de Caixa de Transmissão','141'),
('XXX2170','Amarok','Troca de amortecedores e molas','142'),
('XXX2175','Fox','Troca e reparo de suspensão a ar','143'),
('XXX2180','Ford Ka','Troca de Pneu','144'),
('XXX2185','Cruze','Troca de Óleo','145'),
('XXX2190','Grand Siena','Troca de Pneu','146'),
('XXX2195','Toro','Troca da barra de direção','147'),
('XXX2200','Palio Weekend','Balanceamento','148'),
('XXX2205','Saveiro','Troca e reparo de suspensão a ar','149'),
('XXX2210','Opala','Reparo de Caixa de Transmissão','150'),
('XXX2215','Fusca','Troca de pastilhas de freios','151'),
('XXX2220','Montana','Troca de amortecedores e molas','100'),
('XXX2225','Mobi','Troca de fluídos de freios','101'),
('XXX2230','Voyage','Troca de Óleo','102'),
('XXX2235','Gol','Balanceamento','103'),
('XXX2240','Ford Ka','Reparo de Caixa de Transmissão','104'),
('XXX2245','Uno','Troca de Pneu','105'),
('XXX2250','Ford Focus','Troca de Pneu','106'),
('XXX2255','Strada','Alinhamento','107');

insert into Agencia values


('11100000000000','Associada Chevrolet','11100011100','chevrolet@email.com','São João
del-Rei','3201110000'),
('22200000000000','Associada Volkswagen','22200022200','volkswagen@email.com','São
João del-Rei','3202220000'),
('33300000000000','Associada Ford','33300033300','ford@email.com','São João del-
Rei','3203330000'),
('44400000000000','Associada Fiat','44400044400','fiat@email.com','São João del-
Rei','3204440000'),
('55500000000000','Lubrax','55500055500','lubrax@email.com','São João del-
Rei','3205550000'),
('66600000000000','Michelin','66600066600','michelin@email.com','São João del-
Rei','3206660000');

insert into Peca values


('111001','Kit Reparo Suspensão a Ar','350.00','11100000000000'),
('111002','Kit Reparo Caixa de Transmissão','120.00','11100000000000'),
('111003','Amortecedores e Molas','599.99','11100000000000'),
('222001','Amortecedores e Molas','599.99','22200000000000'),
('222002','Pastilha de Freio','128.90','22200000000000'),
('222003','Kit Reparo Suspensão a Ar','350.00','22200000000000'),
('222004','Suspensão a Ar','2799.00','22200000000000'),
('333001','Pastilha de Freio','128.90','33300000000000'),
('333002','Amortecedores e Molas','599.99','33300000000000'),
('333003','Barra de Direção','499.99','33300000000000'),
('333004','Kit Reparo Caixa de Transmissão','120.00','33300000000000'),
('444001','Pastilha de Freio','128.90','44400000000000'),
('444002','Barra de Direção','499.99','44400000000000'),
('444003','Kit Reparo Caixa de Transmissão','120.00','44400000000000'),
('444004','Suspensão a Ar','2799.00','44400000000000'),
('555001','Óleo','30.20','55500000000000'),
('555002','Fluído de Freio','20.40','55500000000000'),
('666001','Pneu','349.90','66600000000000');
insert into Servico values
('1190319','2019-01-01','2019-01-
02','Concluído','Alinhamento','XXX1950','12493678455',NULL,NULL),
('1190320','2019-01-03','2019-01-04','Concluído','Troca de
Óleo','XXX1955','12496227981','555001','1'),
('1190321','2019-01-05','2019-01-06','Concluído','Troca de
Pneu','XXX1960','12498777507','666001','1'),
('1190322','2019-01-07','2019-01-08','Concluído','Troca de pastilhas de
freios','XXX1965','12501327033','444001','1'),
('1190323','2019-01-09','2019-01-10','Concluído','Troca da barra de
direção','XXX1970','12503876559','444002','1'),
('1190324','2019-01-11','2019-01-12','Concluído','Troca de
Pneu','XXX1975','12506426085','666001','1'),
('1190325','2019-01-13','2019-01-14','Concluído','Troca de pastilhas de
freios','XXX1980','12508975611','333001','1'),
('1190326','2019-01-15','2019-01-
16','Concluído','Alinhamento','XXX1985','12511525137',NULL,NULL),
('1190327','2019-01-17','2019-01-
18','Concluído','Alinhamento','XXX1990','12514074663',NULL,NULL),
('1190328','2019-01-19','2019-01-20','Concluído','Troca de fluídos de
freios','XXX1995','12516624189','555002','1'),
('1190329','2019-01-21','2019-01-22','Concluído','Reparo de suspensão a
ar','XXX2000','12519173715','111001','1'),
('1190330','2019-01-23','2019-01-24','Concluído','Troca de amortecedores e
molas','XXX2005','12521723241','333002','1'),
('1190331','2019-01-25','2019-01-26','Concluído','Troca da barra de
direção','XXX2010','12524272767','333003','1'),
('1190332','2019-01-27','2019-01-28','Concluído','Reparo de Caixa de
Transmissão','XXX2015','12526822293','444003','1'),
('1190333','2019-01-29','2019-01-
30','Concluído','Balanceamento','XXX2020','12529371819',NULL,NULL),
('1190334','2019-01-31','2019-02-01','Concluído','Troca de fluídos de
freios','XXX2025','12531921345','555002','1'),
('1190335','2019-02-02','2019-02-03','Concluído','Troca de
Óleo','XXX2030','12534470871','555001','1'),
('1190336','2019-02-04','2019-02-
05','Concluído','Alinhamento','XXX2035','12537020397',NULL,NULL),
('1190337','2019-02-06','2019-02-07','Concluído','Troca de
Pneu','XXX2040','12539569923','666001','1'),
('1190338','2019-02-08','2019-02-09','Concluído','Troca de
Pneu','XXX2045','12542119449','666001','1'),
('1190339','2019-02-10','2019-02-
11','Concluído','Alinhamento','XXX2050','12544668975',NULL,NULL),
('1190340','2019-02-12','2019-02-
13','Concluído','Alinhamento','XXX2055','12547218501',NULL,NULL),
('1190341','2019-02-14','2019-02-15','Concluído','Troca de amortecedores e
molas','XXX2060','12549768027','222001','1'),
('1190342','2019-02-16','2019-02-
17','Concluído','Balanceamento','XXX2065','12552317553',NULL,NULL),
('1190343','2019-02-18','2019-02-19','Concluído','Troca de pastilhas de
freios','XXX2070','12554867079','222002','1'),
('1190344','2019-02-20','2019-02-21','Concluído','Troca de
Óleo','XXX2075','12557416605','555001','1'),
('1190345','2019-02-22','2019-02-23','Concluído','Troca da barra de
direção','XXX2080','12559966131','444002','1'),
('1190346','2019-02-24','2019-02-25','Concluído','Troca de fluídos de
freios','XXX2085','12493678455','555002','1'),
('1190347','2019-02-26','2019-02-27','Concluído','Troca de suspensão a
ar','XXX2090','12496227981','444004','1'),
('1190348','2019-02-28','2019-03-01','Concluído','Reparo de Caixa de
Transmissão','XXX2095','12498777507','111002','1'),
('1190350','2019-03-02','2019-03-03','Concluído','Troca de amortecedores e
molas','XXX2105','12501327033','111003','1'),
('1190351','2019-03-04','2019-03-
05','Concluído','Balanceamento','XXX2110','12503876559',NULL,NULL),
('1190353','2019-03-06','2019-03-
07','Concluído','Balanceamento','XXX2120','12506426085',NULL,NULL),
('1190354','2019-03-08','2019-03-09','Concluído','Troca de
Óleo','XXX2125','12508975611','555001','1'),
('1190355','2019-03-10','2019-03-11','Concluído','Troca da barra de
direção','XXX2130','12511525137','444002','1'),
('1190356','2019-03-12','2019-03-13','Concluído','Troca de pastilhas de
freios','XXX2135','12514074663','222002','1'),
('1190357','2019-03-14','2019-03-15','Concluído','Troca de
Pneu','XXX2140','12516624189','666001','1'),
('1190358','2019-03-16','2019-03-17','Concluído','Troca de
Pneu','XXX2145','12519173715','666001','1'),
('1190359','2019-03-18','2019-03-19','Concluído','Troca de
Pneu','XXX2150','12521723241','666001','1'),
('1190360','2019-03-20','2019-03-
21','Concluído','Alinhamento','XXX2155','12524272767',NULL,NULL),
('1190361','2019-03-22','2019-03-23','Concluído','Troca de fluídos de
freios','XXX2160','12526822293','555002','1'),
('1190362','2019-03-24','2019-03-25','Concluído','Reparo de Caixa de
Transmissão','XXX2165','12529371819','444003','1'),
('1190363','2019-03-26','2019-03-27','Pendente','Troca de amortecedores e
molas','XXX2170','12531921345','222001','1'),
('1190364','2019-03-28','2019-03-29','Pendente','Reparo de suspensão a
ar','XXX2175','12534470871','222003','1'),
('1190365','2019-03-30','2019-03-31','Pendente','Troca de
Pneu','XXX2180','12537020397','666001','1'),
('1190366','2019-04-01','2019-04-02','Pendente','Troca de
Óleo','XXX2185','12539569923','555001','1'),
('1190367','2019-04-03','2019-04-04','Pendente','Troca de
Pneu','XXX2190','12542119449','666001','1'),
('1190368','2019-04-05','2019-04-06','Pendente','Troca da barra de
direção','XXX2195','12544668975','444002','1'),
('1190369','2019-04-07','2019-04-
08','Pendente','Balanceamento','XXX2200','12547218501',NULL,NULL),
('1190370','2019-04-09','2019-04-10','Pendente','Troca e reparo de suspensão a
ar','XXX2205','12549768027','222004','1'),
('1190371','2019-04-11','2019-04-12','Pendente','Reparo de Caixa de
Transmissão','XXX2210','12552317553','111002','1'),
('1190372','2019-04-13','2019-04-14','Pendente','Troca de pastilhas de
freios','XXX2215','12554867079','222002','1'),
('1190373','2019-04-15','2019-04-16','Pendente','Troca de amortecedores e
molas','XXX2220','12557416605','111003','1'),
('1190374','2019-04-17','2019-04-18','Pendente','Troca de fluídos de
freios','XXX2225','12559966131','555002','1'),
('1190375','2019-04-19','2019-04-20','Pendente','Troca de
Óleo','XXX2230','12493678455','555001','1'),
('1190376','2019-04-21','2019-04-
22','Pendente','Balanceamento','XXX2235','12496227981',NULL,NULL),
('1190377','2019-04-23','2019-04-24','Pendente','Reparo de Caixa de
Transmissão','XXX2240','12498777507','333004','1'),
('1190378','2019-04-25','2019-04-26','Pendente','Troca de
Pneu','XXX2245','12501327033','666001','1'),
('1190379','2019-04-27','2019-04-28','Pendente','Troca de
Pneu','XXX2250','12503876559','666001','1'),
('1190380','2019-04-29','2019-04-
30','Pendente','Alinhamento','XXX2255','12506426085',NULL,NULL);

insert into Conta values


('319001','Receber','Pago','40.00','1190319','12345678912'),
('320001','Receber','Pago','70.20','1190320','98765432198'),
('320002','Pagar','Pago','30.20','1190320','98765432198'),
('321001','Receber','Pago','409.90','1190321','12345678912'),
('321002','Pagar','Pago','349.90','1190321','12345678912'),
('322001','Receber','Pago','188.90','1190322','98765432198'),
('322002','Pagar','Pago','128.90','1190322','98765432198'),
('323001','Receber','Pago','559.99','1190323','12345678912'),
('323002','Pagar','Pago','499.99','1190323','12345678912'),
('324001','Receber','Pago','409.90','1190324','98765432198'),
('324002','Pagar','Pago','349.90','1190324','98765432198'),
('325001','Receber','Pago','188.90','1190325','12345678912'),
('325002','Pagar','Pago','128.90','1190325','12345678912'),
('326001','Receber','Pago','40.00','1190326','98765432198'),
('327001','Receber','Pago','40.00','1190327','12345678912'),
('328001','Receber','Pago','60.40','1190328','98765432198'),
('328002','Pagar','Pago','20.40','1190328','98765432198'),
('329001','Receber','Pago','410.00','1190329','12345678912'),
('329002','Pagar','Pago','350.00','1190329','12345678912'),
('330001','Receber','Pago','659.99','1190330','98765432198'),
('330002','Pagar','Pago','599.99','1190330','98765432198'),
('331001','Receber','Pago','559.99','1190331','12345678912'),
('331002','Pagar','Pago','499.99','1190331','12345678912'),
('332001','Receber','Pago','180.00','1190332','98765432198'),
('332002','Pagar','Pago','120.00','1190332','98765432198'),
('333001','Receber','Pago','40.00','1190333','12345678912'),
('334001','Receber','Pago','60.40','1190334','98765432198'),
('334002','Pagar','Pago','20.40','1190334','98765432198'),
('335001','Receber','Pago','70.20','1190335','12345678912'),
('335002','Pagar','Pago','30.20','1190335','12345678912'),
('336001','Receber','Pago','40.00','1190336','98765432198'),
('337001','Receber','Pago','409.90','1190337','12345678912'),
('337002','Pagar','Pago','349.90','1190337','12345678912'),
('338001','Receber','Pago','409.90','1190338','98765432198'),
('338002','Pagar','Pago','349.90','1190338','98765432198'),
('339001','Receber','Pago','40.00','1190339','12345678912'),
('340001','Receber','Pago','40.00','1190340','98765432198'),
('341001','Receber','Pago','659.99','1190341','12345678912'),
('341002','Pagar','Pago','599.99','1190341','12345678912'),
('342001','Receber','Pago','40.00','1190342','98765432198'),
('343001','Receber','Pago','188.90','1190343','12345678912'),
('343002','Pagar','Pago','128.90','1190343','12345678912'),
('344001','Receber','Pago','70.20','1190344','98765432198'),
('344002','Pagar','Pago','70.20','1190344','98765432198'),
('345001','Receber','Pago','559.99','1190345','12345678912'),
('345002','Pagar','Pago','499.99','1190345','12345678912'),
('346001','Receber','Pago','60.40','1190346','98765432198'),
('346002','Pagar','Pago','20.40','1190346','98765432198'),
('347001','Receber','Pago','2859.00','1190347','12345678912'),
('347002','Pagar','Pago','2799.00','1190347','12345678912'),
('348001','Receber','Pago','180.00','1190348','98765432198'),
('348002','Pagar','Pago','120.00','1190348','98765432198'),
('350001','Receber','Pago','659.99','1190350','12345678912'),
('350002','Pagar','Pago','599.99','1190350','12345678912'),
('351001','Receber','Pago','40.00','1190351','98765432198'),
('353001','Receber','Pago','40.00','1190353','12345678912'),
('354001','Receber','Pago','70.20','1190354','98765432198'),
('354002','Pagar','Pago','30.20','1190354','98765432198'),
('355001','Receber','Pago','559.99','1190355','12345678912'),
('355002','Pagar','Pago','499.99','1190355','12345678912'),
('356001','Receber','Pago','188.90','1190356','98765432198'),
('356002','Pagar','Pago','128.90','1190356','98765432198'),
('357001','Receber','Pago','409.90','1190357','12345678912'),
('357002','Pagar','Pago','349.90','1190357','12345678912'),
('358001','Receber','Pago','409.90','1190358','98765432198'),
('358002','Pagar','Pago','349.90','1190358','98765432198'),
('359001','Receber','Pago','409.90','1190359','12345678912'),
('359002','Pagar','Pago','349.90','1190359','12345678912'),
('360001','Receber','Pago','40.00','1190360','98765432198'),
('361001','Receber','Pago','60.40','1190361','12345678912'),
('361002','Pagar','Pago','20.40','1190361','12345678912'),
('362001','Receber','Pago','180.00','1190362','98765432198'),
('362002','Pagar','Pago','120.00','1190362','98765432198'),
('363001','Receber','Pendente','659.99','1190363','12345678912'),
('363002','Pagar','Pago','599.99','1190363','12345678912'),
('364001','Receber','Pendente','410.00','1190364','98765432198'),
('364002','Pagar','Pendente','350.00','1190364','98765432198'),
('365001','Receber','Pendente','409.90','1190365','12345678912'),
('365002','Pagar','Pendente','349.90','1190365','12345678912'),
('366001','Receber','Pendente','70.20','1190366','98765432198'),
('366002','Pagar','Pendente','30.20','1190366','98765432198'),
('367001','Receber','Pendente','409.90','1190367','12345678912'),
('367002','Pagar','Pendente','349.90','1190367','12345678912'),
('368001','Receber','Pendente','559.99','1190368','98765432198'),
('368002','Pagar','Pendente','499.99','1190368','98765432198'),
('369001','Receber','Pendente','40.00','1190369','12345678912'),
('370001','Receber','Pendente','2859.00','1190370','98765432198'),
('370002','Pagar','Pendente','2799.00','1190370','98765432198'),
('371001','Receber','Pendente','180.00','1190371','12345678912'),
('371002','Pagar','Pendente','120.00','1190371','12345678912'),
('372001','Receber','Pendente','188.90','1190372','98765432198'),
('372002','Pagar','Pendente','128.90','1190372','98765432198'),
('373001','Receber','Pendente','659.99','1190373','12345678912'),
('373002','Pagar','Pendente','599.99','1190373','12345678912'),
('374001','Receber','Pendente','60.40','1190374','98765432198'),
('374002','Pagar','Pendente','20.40','1190374','98765432198'),
('375001','Receber','Pendente','70.20','1190375','12345678912'),
('375002','Pagar','Pendente','30.20','1190375','12345678912'),
('376001','Receber','Pendente','40.00','1190376','98765432198'),
('377001','Receber','Pendente','180.00','1190377','12345678912'),
('377002','Pagar','Pendente','120.00','1190377','12345678912'),
('378001','Receber','Pendente','409.90','1190378','98765432198'),
('378003','Pagar','Pendente','349.90','1190378','98765432198'),
('379001','Receber','Pendente','409.90','1190379','12345678912'),
('379004','Pagar','Pendente','349.90','1190379','12345678912'),
('380001','Receber','Pendente','40.00','1190380','98765432198');
Consultas

Simples:

Objetivo: Saber quais são os dependentes de cada funcionário.


Processo de construção: A consulta compara através da cláusula where uma condição
onde o CPF da tabela funcionário deve ser igual ao CPF_Funcionario da tabela
Dependente, e assim recupera o funcionário correto para cada dependente, exibindo os
CPF, os nomes dos funcionários e de seus dependentes.

select CPF_Funcionario, Funcionario.Nome as Funcionario, Dependente.Nome as


Dependente
from Dependente, Funcionario
where Dependente.CPF_Funcionario = Funcionario.CPF;

Objetivo: Recuperar o nome do funcionário responsável pelo serviço, o ID do serviço,


qual a descrição do serviço e a placa do veículo.
Processo de construção: A consulta exibirá o nome do funcionário responsável, o ID do
serviço, descrição e placa do veículo através da projeção feita pelo select, assim exibindo
o nome do funcionário correto através da comparação (where) do CPF da tabela
funcionário e o CPF_Funcionario da tabela serviço.

select Nome as Funcionario, ID as ID_Serviço, Descricao as Serviço, Placa_Veiculo


from Funcionario, Servico
where Funcionario.CPF = Servico.CPF_Funcionario;

Objetivo: Recuperar todas as contas a pagar referente a determinado gerente.


Processo de construção: A consulta exibirá todas as colunas da tabela Conta através do
comando select, usando a cláusula where e o conectivo lógico and, especificando duas
condições, uma em que o tipo da conta deve ser ‘Pagar’ e outra na qual o CPF_Gerente
deve ser igual a 12345678912.

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.

Processo de construção: A projeção select exibirá através da cláusula where todas as


contas com as seguintes condições, ter na coluna Tipo o valor ‘Receber’ e em Valor os
valores entre 100 e 500.

select *
from Conta
where Tipo = 'Receber'
and Valor between 100 and 500;

Like:

Objetivo: Saber os funcionários nascidos de 1990 a 1999.


Processo de construção: A consulta recupera através do operador de comparação like
na condição ‘199%’ todos os colaboradores nascidos entre 1990 a 1999.

select Nome, DataNascimento


from Funcionario
where DataNascimento like '199%';

Objetivo: Recuperar todos os alinhamentos concluídos em fevereiro de 2019.


Processo de construção: A consulta exibirá todas as colunas da tabela Servico através
do comando select, e pelo conectivo lógico and ele terá duas condições, uma em que a
data de conclusão está em fevereiro, independente do dia (2019-02-__) e outra na
descrição do serviço, que deve ser ‘Alinhamento’.
select *
from Servico
where DataConclusao like '2019-02-__'
and Descricao = 'Alinhamento';

Objetivo: Recuperar os serviços do mês de março em que foram utilizadas peças.

Processo de construção: A projeção tem duas condições, a primeira em que através do


operador like recupera os serviços do mês de março e a segunda com a cláusula is not
null definindo que o valor de ID_Peca não pode ser nulo.

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.

Processo de construção: A consulta recupera através do operador de comparação like


na condição ‘%22__’ todos os veículos cuja placa contém 22 como os dois primeiros
numerais.

select *
from Veiculo
where Placa like '%22__';

Objetivo: Recuperar nome, data de aniversário e o funcionário relacionado dos


dependentes que tiverem nascidos dos anos 2000 em diante.

Processo de construção: O comando select projeta nome do dependente, sua data de


nascimento e o funcionário relacionado a ele, que é identificado na cláusula where com a
condição do CPF, além da condição do operador like que determina o ano de 2000 em
diante, e então a consulta ordena a projeção em ordem alfabética refente ao nome do
dependente.

select Dependente.Nome as Dependente, Dependente.DataNascimento as


Nascimento_Dependente, Funcionario.Nome as Funcionario
from Dependente, Funcionario
where Dependente.CPF_Funcionario = Funcionario.CPF
and Dependente.DataNascimento like '20%'
order by Dependente.Nome asc;
Ordenação:

Objetivo: Recuperar de forma ordenada o nome e a data de nascimento de cada


funcionário do colaborador mais velho para o mais novo.

Processo de construção: A consulta recuperará da tabela Funcionario o nome e a data


de nascimento e através da cláusula ‘order by DataNascimento asc’ classifica em ordem
crescente as datas de nascimento, a segunda classificação serve para colocar em ordem
alfabética os nomes caso haja a mesma data de nascimento.

select Nome, DataNascimento


from Funcionario
order by DataNascimento asc, Nome asc;

Objetivo: Recuperar por ordem alfabética os nomes dos clientes físicos e seus
respectivos ID.

Processo de construção: A consulta projetará em ordem alfabética os nomes dos


clientes físicos e seus respectivos ID, usando asc (ou seja, crescente) na ordenação feita
com a cláusula order by indicando Nome como referência.

select Nome, Cliente.ID


from Cliente, Fisico
where Cliente.ID = Fisico.ID_Cliente
order by Nome asc;

Objetivo: Recuperar todas as peças do menor para o maior valor, exibindo nome, valor e
sua respectiva agência.

Processo de construção: A projeção da consulta é construída de semelhante a anterior,


apenas mudando a referência de ordenação.

select Nome, Valor, RazaoSocial as Agencia


from Peca, Agencia
where Peca.CNPJ_Agencia = Agencia.CNPJ
order by Valor asc;
Objetivo: Recuperar todos os serviços onde foram usadas peças e ordenar pelo valor em
decrescência e também ordenar pela ID do serviço de maneira crescente.

Processo de construção: A consulta recuperará das tabelas Servico e Peca todos os


dados, e através da cláusula order by classificar em ordem decrescente o valor das
peças, assim também como classificar pela ID do serviço.

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.

Processo de construção: A projeção exibirá as contas de acordo com as condições


determinadas na claúsula where, ou seja, quando status for pendente e o tipo for pagar, e
então ordenará de forma decrescente em relação ao valor da conta.

select *
from Conta
where `Status` = 'Pendente'
and Tipo = 'Pagar'
order by Valor desc;

Group by:

Objetivo: Contar a quantidade de dependentes de cada Funcionário.

Processo de construção: A consulta exibirá o nome do funcionário e a quantidade de


dependente através da função select. A função de agregação count faz a contagem de
quantas vezes o CPF do funcionário aparece na tabela de dependentes, a condição
where serve para que o banco retorne não apenas o CPF do funcionário, mas também o
nome do colaborador e a função group by forma grupos de dependentes com o mesmo
CPF_Funcionario.

select distinct Funcionario.Nome as Funcionario, count(CPF_Funcionario) as


QTD_Dependente
from Dependente, Funcionario
where Dependente.CPF_Funcionario = Funcionario.CPF
group by CPF_Funcionario;
Objetivo: Contar a quantidade de cada serviço executado.

Processo de construção: Através da função de agregação Count o banco recupera a


quantidade de cada tipo de serviço e o argumento ‘group by’ separa cada tipo de serviço.

select distinct Descricao as Servico, count(distinct ID) as QTD_Serviço


from Servico
group by Descricao;

Objetivo: Contar a quantidade de serviços executados por funcionário.

Processo de construção: A consulta exibirá o nome do funcionário e a quantidade de


serviços executados através do comando select. A função de agregação count faz a
contagem de quantas vezes o CPF do funcionário aparece na tabela de serviços, a
condição where serve para que o banco retorne não apenas o CPF do funcionário, mas
também o nome do colaborador e a função group by forma grupos de dependentes com o
mesmo CPF_Funcionario.

select distinct Funcionario.Nome as Funcionario, count(CPF_Funcionario) as


Serviços_executados
from Servico, Funcionario
where Servico.CPF_Funcionario = Funcionario.CPF
group by CPF_Funcionario;

Objetivo: Recuperar a agência, ID, nome e valor da peça fornecida e ordenar pelo ID da
peça.

Processo de construção: A projeção exibirá a razão social nomeada como agência, o


ID, nome e valor da peça que são fornecidos por agência, e então ordenar de forma
crescente pela ID da peça.

select RazaoSocial as Agencia, Peca.ID as ID_Peca, Nome as Peca, Valor


from Peca, Agencia
where Peca.CNPJ_Agencia = Agencia.CNPJ
group by Peca.ID asc;

Objetivo: Recuperar serviços que um determinado funcionário realizou e ordernar pela ID


do serviço.
Processo de construção: A projeção exibirá todas as colunas da tabela Servico, com as
tuplas referentes aos serviços que o funcionário de CPF igual a 12493678455 realizou, e
assim ordená-las pelo ID do serviço.

select *
from Servico
where CPF_Funcionario = 12493678455
group by ID;

Função de agregação:

Objetivo: Saber o valor total das contas a pagar e receber.

Processo de construção: A consulta através da função agregada SUM somará o valor


das contas a pagar e receber através da função Where com duas condições, uma no tipo
da conta e outra no status da conta.

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;

Objetivo: Recupera o valor máximo em uma conta pendente

Processo de construção: A consulta recupera o valor máximo através da função de


agregação max e define a condição em que a conta deve estar com a cláusula where.

select max(Valor)
from Conta
where `Status` = 'Pendente';

Objetivo: Recupera a quantidade de serviços realizados.

Processo de construção: Pela função agregada count, a consulta recupera quantos ID


existem na tabela Servico, o que por sua vez também significa a quantidade de serviços
realizados.
select count(ID) as Quantidade
from Servico;

Objetivo: Contar a quantidade de cada serviço executado.

Processo de construção: Com a função de agregação count a consulta recupera várias


projeções que contam a quantidade existente de serviços de cada tipo.

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;

Objetivo: Recuperar menor preço de cada tipo de peça.

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.

select Nome, min(Valor) as Preco


from Peca
group by Nome
order by Preco asc;
Operação de conjunto:

Objetivo: Recuperar todos os clientes, sejam eles físicos, jurídicos ou ambos.

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 Cliente.ID, CPF as CPF_CNPJ, Nome as Nome_RazaoSocial


from Cliente
join Fisico
on Cliente.ID = Fisico.ID_Cliente
order by Cliente.ID)
union all
(select Cliente.ID, CNPJ as CPF_CNPJ, RazaoSocial as Nome_RazaoSocial
from Cliente
join Juridico
on Cliente.ID = Juridico.ID_Cliente
order by Cliente.ID);

Objetivo: Recuperar os serviços de alinhamento e com status concluído.

Processo de construção: A consulta poderia ser simples, usando apenas um conectivo


lógico na cláusula where, mas nesse caso, foi feito duas projeções com apenas uma
condição e pela função union, foram ligadas uma a outra.

(select ID, Placa_Veiculo, CPF_Funcionario


from Servico
where Descricao = 'Alinhamento')
union
(select ID, Placa_Veiculo, CPF_Funcionario
from Servico
where `Status` = 'Concluído');

Objetivo: Recuperar todos os serviços concluídos antes do mês de fevereiro e também


depois do mês de março.

Processo de construção: Utilizando duas subconsultas aninhadas, e fazendo união dos


conjuntos pela função union, a projeção é determinada pelo primeiro conjunto para exibir
todos os serviços concluídos antes de fevereiro e no segundo os concluídos após o mês
de março.
(select *
from Servico
where DataConclusao < all
(select DataConclusao
from Servico
where DataConclusao like '2019-02-__'))
union
(select *
from Servico
where DataConclusao > all
(select DataConclusao
from Servico
where DataConclusao like '2019-03-__'));

Objetivo: Recuperar contas nos valores iguais a 40 e maiores que 600.

Processo de construção: Utilizando duas subconsultas aninhadas, e fazendo união dos


conjuntos pela função union, a projeção é determinada pelo primeiro conjunto para exibir
todos as contas no valor igual a 40 e no segundo nos valores acima de 600.

(select *
from Conta
where Valor = 40)
union
(select *
from Conta
where Valor > 600);

Objetivo: Recuperar funcionários com data de nascimento abaixo do ano de 1985 e


acima de 1995.

Processo de construção: Utilizando duas subconsultas aninhadas, e fazendo união dos


conjuntos pela função union, a projeção é determinada pelo primeiro conjunto para exibir
todos os funcionários com data de nascimento antes do ano de 1985 e no segundo depois
do ano de 1995, e ordenando ambos em ordem crescente.

(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 Nome, Conta.ID as ID_Conta, Tipo as Tipo_Conta, `Status` as Status_Conta, Valor


as Valor_Conta, ID_Servico
from Gerente
join Conta
on Gerente.CPF = Conta.CPF_Gerente;

Objetivo: Recupera a agência, nome das peças fornecidas e seu valor.

Processo de construção: Exibe a projeção da razão social da agência, o nome da peça


que fornece e o valor. Isso é feito pela junção da tabela Agencia com Peca através da
condição que determina a igualdade dos valores do CNPJ em ambas as tabelas.

select RazaoSocial, Nome as Nome_Peca, Valor


from Agencia
join Peca
on Agencia.CNPJ = Peca.CNPJ_Agencia;

Objetivo: Selecionar os serviços que foram executados com mais de 1 dia.

Processo de construção: A consulta exibirá todos os dados do serviço e o veículo ligado


a ele, através da função select, e pelo conectivo lógico and ele terá duas condições, uma
para vincular o modelo do veículo ao serviço e outra para selecionar a diferença entre as
datas de conclusão e emissão do serrviço, tudo isso através da junção das tabelas
Servico e Veiculo.

select ID, DataEmissao, DataConclusao, (DataConclusao - DataEmissao) as Dias,


`Status`, Veiculo.Placa as Placa, Modelo, Servico.Descricao as Servico,
CPF_Funcionario
from Servico
join Veiculo
on Servico.Placa_Veiculo = Veiculo.Placa
and (DataConclusao - DataEmissao) > 1;
Objetivo: Recuperar dados dos veículos e os clientes relacionados a eles.

Processo de construção: A consulta exibirá todos os dados do veículo pela projeção e


junção entre as tabelas Cliente e Veiculo, com a condição (on) determinando que o ID do
cliente deve ser igual em ambas as tabelas.

select *
from Cliente
join Veiculo
on Veiculo.ID_Cliente = Cliente.ID;

Objetivo: Recuperar os dependentes de cada funcionário.

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.

select Funcionario.Nome as Funcionario, Relacao, Dependente.Nome as Dependente


from Dependente
join Funcionario
on Dependente.CPF_Funcionario = Funcionario.CPF
order by Funcionario.Nome desc;

Left outer join/Right outer join:

Objetivo: Selecionar as contas a pagar 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çã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';

Objetivo: Verificar qual agência fornece determinada peça.

Processo de construção: A consulta recuperará através da função select todos os dados


das tabelas agência e Peça, pela função right outer join eu vou exibir os dados referente a
agência a direita das peças.

select *
from Peca
right outer join Agencia
on Peca.CNPJ_Agencia = Agencia.CNPJ;

Objetivo: Recuperar os dados dos funcionários e seus respectivos dependentes.

Processo de construção: A consulta recuperará através da função select todos os dados


das tabelas Funcionário e dependentes, pela função left outer join eu vou exibir os dados
referente a funcionário a direita dos dependentes.

select *
from Dependente
left outer join Funcionario
on Dependente.CPF_Funcionario = Funcionario.CPF;

Objetivo: Verificar qual o veículo corresponde a determinado serviço.

Processo de construção: A consulta recuperará através da função select todos os dados


das tabelas serviço e Veiculo, pela função right outer join eu vou exibir os dados referente
a Veiculo a direita dos dados do serviço.
select *
from Servico
right outer join Veiculo
on Servico.Placa_Veiculo = Veiculo.Placa;

Subconsulta aninhada:

Objetivo: Recuperar todas as peças com valor abaixo de todos os resultados da segunda
projeção.

Processo de construção: É realizada uma subconsulta em que é recuperado as peças


com valor maior ou igual a 100, e na projeção principal exibirá todas as peças com valor
menor que todos esses resultados.

select Nome, Valor


from Peca
where Valor < all
(select Valor
from Peca
where Valor >= 100);

Objetivo: Recuperar todos os serviços concluídos a partir do mês de março.

Processo de construção: É realizada uma subconsulta em que são recuperados os


serviços com data de conclusão no mês de fevereiro, e na projeção principal exibirá todos
os serviços que ocorreram pós esse mês, ou seja, a partir de março.

select *
from Servico
where DataConclusao > all
(select DataConclusao
from Servico
where DataConclusao like '2019-02-__');

Objetivo: Recuperar funcionários que não realizaram algum serviço.

Processo de construção: É realizada uma subconsulta em que são recuperados os CPF


de funcionários presentes na tabela Servico, e na projeção principal exibirá todos os
funcionários que não tem CPF correspondente.
select *
from Funcionario
where CPF not in
(select CPF_Funcionario
from Servico);

Objetivo: Recuperar todos os funcionários que realizaram algum serviço.

Processo de construção: É realizada uma subconsulta em que são recuperados os CPF


de funcionários presentes na tabela Servico, e na projeção principal exibirá todos os
funcionários que tem CPF correspondente.

select *
from Funcionario
where CPF in
(select CPF_Funcionario
from Servico);

Objetivo: Recuperar todas as peças usadas nos serviços.

Processo de construção: É realizada uma subconsulta em que são recuperados os ID


das peças presentes na tabela Servico, e na projeção principal exibirá todos as peças que
tem ID correspondente.

select *
from Peca
where ID in
(select ID_Peca
from Servico);

View:

Objetivo: Criação da view com os dados do serviço, visualização de quem forneceu as


peças e os dados da agência, além do modelo do veículo.

Processo de construção: A view recuperará através da função select dados de 4 tabelas


diferentes determinadas no from, e através do where determinará as condições de ligação
entre as tabelas. Com a função create view será criado a visualização da tabela.
create view Dados_Serv as
select Servico.ID as ID_Servico, DataEmissao, DataConclusao, `Status` as
Situacao_Servico, Placa_Veiculo, Modelo, CPF_Funcionario, QuantPeca,
Agencia.RazaoSocial, Email, Endereco, Telefone
from Servico, Veiculo, Agencia, Peca
where Servico.Placa_Veiculo = Veiculo.Placa
and Servico.ID_Peca = Peca.ID
and Peca.CNPJ_Agencia = Agencia.CNPJ;

Objetivo: Criação de uma view com os dados do funcionário e seus respectivos


dependentes.

Processo de construção: A view recuperará através da função select os dados dos


dependentes e funcionarios, pela função left outer join eu vou fazer a junção das tabelas
Dependente e Funcionario. O comando create view cria a visualização, enquanto o
comando select * from exibe a view.

create view dependente_funcionario as


select Dependente.Nome as Dependente, Dependente.Sexo as Sexo_dependente,
Relacao, Funcionario.Nome as Funcionario, Endereco, Funcionario.Telefone, Cargo
from Dependente
left outer join Funcionario
on Dependente.CPF_Funcionario = Funcionario.CPF;

Objetivo: Criação de uma view com os dados do funcionário e seus respectivos gerentes.

Processo de construção: A view recuperará através da função select o nome do


funcionário, cargo e o respectivo gerente, pela função from determina as tabelas a serem
pesquisadas (Funcionario, Gerente). O comando create view cria a visualização,
enquanto o comando select * from exibe a view.

create view Funcionario_Gerente as


select Funcionario.Nome as Funcionario, Cargo, Gerente.Nome as Gerente
from Funcionario, Gerente
where Funcionario.CPF_Gerente = Gerente.CPF;

Objetivo: Criação de uma view com os dados das peças e as agências onde encontrar
essas peças.

Processo de construção: A view recuperará através da função select os dados das


peças e agência (Nome as Peca, Valor, RazaoSocial, Email, Telefone, Endereco), pela
função from determina as tabelas a serem pesquisadas (Peca, Agencia). O comando
create view cria a visualização, enquanto o comando select * from exibe a view.

create view Peca_Agencia as


select Nome as Peca, Valor, RazaoSocial, Email, Telefone, Endereco
from Peca, Agencia
where Peca.CNPJ_Agencia = Agencia.CNPJ;

Objetivo: Criação de uma view com os dados dos serviços pendentes.

Processo de construção: A view recuperará através da função select todos os dados


dos serviços pendentes, pela função from determina a tabela a ser pesquisadas (Serviço).
O comando create view cria a visualização, enquanto o comando select * from exibe a
view.

create view Serv_Pendente as


select *
from Servico
where `Status` = 'Pendente';

Você também pode gostar