ALUNOS: Flávia Paloma, Gabriela Maia e Tairone Oliveira
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZER
O_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`Produtos`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Produtos` (
`idProdutos` INT NOT NULL,
`nome` VARCHAR(100) NOT NULL,
`descricao` VARCHAR(150) NOT NULL,
`preco` DECIMAL(7,2) NOT NULL,
`tamanho` VARCHAR(3) NOT NULL,
`cor` VARCHAR(45) NOT NULL,
`marca` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idProdutos`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Estoque`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Estoque` (
`idEstoque` INT NOT NULL,
`quabtidade` INT NOT NULL,
`data-entrada` DATETIME NOT NULL,
`data-saida` DATETIME NOT NULL,
`Produtos_idProdutos` INT NOT NULL,
PRIMARY KEY (`idEstoque`),
INDEX `fk_Estoque_Produtos1_idx` (`Produtos_idProdutos` ASC) VISIBLE,
CONSTRAINT `fk_Estoque_Produtos1`
FOREIGN KEY (`Produtos_idProdutos`)
REFERENCES `mydb`.`Produtos` (`idProdutos`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Fornecedores`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Fornecedores` (
`cnpj` INT NOT NULL,
`nome` VARCHAR(100) NOT NULL,
`email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`cnpj`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Clientes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Clientes` (
`cpf` INT NOT NULL,
` nome` VARCHAR(150) NOT NULL,
`endereco` VARCHAR(100) NOT NULL,
`email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`cpf`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Cargo`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Cargo` (
`cbo` INT NOT NULL,
`nome` VARCHAR(90) NOT NULL,
`faixa_salarial` DECIMAL(10,2) NOT NULL,
PRIMARY KEY (`cbo`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Funcionarios`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Funcionarios` (
`idFuncionarios` INT NOT NULL,
`nome` VARCHAR(150) NOT NULL,
`cargo` VARCHAR(50) NOT NULL,
`contato` VARCHAR(100) NOT NULL,
`Cargo_cbo` INT NOT NULL,
PRIMARY KEY (`idFuncionarios`),
INDEX `fk_Funcionarios_Cargo1_idx` (`Cargo_cbo` ASC) VISIBLE,
CONSTRAINT `fk_Funcionarios_Cargo1`
FOREIGN KEY (`Cargo_cbo`)
REFERENCES `mydb`.`Cargo` (`cbo`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Vendas`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Vendas` (
`idVendas` INT NOT NULL,
`date` DATE NOT NULL,
`status_entrega` VARCHAR(100) NOT NULL,
`Funcionarios_idFuncionarios` INT NOT NULL,
`Clientes_cpf` INT NOT NULL,
`Clientes_cpf1` INT NOT NULL,
`Funcionarios_idFuncionarios1` INT NOT NULL,
PRIMARY KEY (`idVendas`, `Funcionarios_idFuncionarios`, `Clientes_cpf`, `Clientes_cpf1`),
INDEX `fk_Vendas_Clientes1_idx` (`Clientes_cpf1` ASC) VISIBLE,
INDEX `fk_Vendas_Funcionarios1_idx` (`Funcionarios_idFuncionarios1` ASC) VISIBLE,
CONSTRAINT `fk_Vendas_Clientes1`
FOREIGN KEY (`Clientes_cpf1`)
REFERENCES `mydb`.`Clientes` (`cpf`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Vendas_Funcionarios1`
FOREIGN KEY (`Funcionarios_idFuncionarios1`)
REFERENCES `mydb`.`Funcionarios` (`idFuncionarios`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Telefone`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Telefone` (
`idTelifone` INT NOT NULL,
`numero` VARCHAR(15) NOT NULL,
`Fornecedores_cnpj` INT NOT NULL,
`Funcionarios_idFuncionarios` INT NOT NULL,
PRIMARY KEY (`idTelifone`),
INDEX `fk_Telefone_Fornecedores1_idx` (`Fornecedores_cnpj` ASC) VISIBLE,
INDEX `fk_Telefone_Funcionarios1_idx` (`Funcionarios_idFuncionarios` ASC) VISIBLE,
CONSTRAINT `fk_Telefone_Fornecedores1`
FOREIGN KEY (`Fornecedores_cnpj`)
REFERENCES `mydb`.`Fornecedores` (`cnpj`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Telefone_Funcionarios1`
FOREIGN KEY (`Funcionarios_idFuncionarios`)
REFERENCES `mydb`.`Funcionarios` (`idFuncionarios`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Dependentes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Dependentes` (
`cpf` INT NOT NULL,
`paretesco` VARCHAR(90) NOT NULL,
`nome` VARCHAR(90) NOT NULL,
`data_nasc` DATE NOT NULL,
`Funcionarios_idFuncionarios` INT NOT NULL,
PRIMARY KEY (`cpf`, `Funcionarios_idFuncionarios`),
INDEX `fk_Dependentes_Funcionarios1_idx` (`Funcionarios_idFuncionarios` ASC) VISIBLE,
CONSTRAINT `fk_Dependentes_Funcionarios1`
FOREIGN KEY (`Funcionarios_idFuncionarios`)
REFERENCES `mydb`.`Funcionarios` (`idFuncionarios`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Ferias`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Ferias` (
`idFerias` INT NOT NULL,
`quants_dias` INT NOT NULL,
`ano_ref` YEAR NOT NULL,
`data_inicio` DATE NOT NULL,
`data_fim` DATE NOT NULL,
`Funcionarios_idFuncionarios` INT NOT NULL,
PRIMARY KEY (`idFerias`, `Funcionarios_idFuncionarios`),
INDEX `fk_Ferias_Funcionarios1_idx` (`Funcionarios_idFuncionarios` ASC) VISIBLE,
CONSTRAINT `fk_Ferias_Funcionarios1`
FOREIGN KEY (`Funcionarios_idFuncionarios`)
REFERENCES `mydb`.`Funcionarios` (`idFuncionarios`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Forma_pagamento`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Forma_pagamento` (
`id` INT NOT NULL,
`parcela` INT NOT NULL,
`valor` DECIMAL(7,2) NOT NULL,
`tipo` VARCHAR(50) NOT NULL,
`Vendas_idVendas` INT NOT NULL,
`Vendas_Funcionarios_idFuncionarios` INT NOT NULL,
`Vendas_Clientes_cpf` INT NOT NULL,
PRIMARY KEY (`id`, `Vendas_idVendas`, `Vendas_Funcionarios_idFuncionarios`,
`Vendas_Clientes_cpf`),
INDEX `fk_Forma_pagamento_Vendas1_idx` (`Vendas_idVendas` ASC,
`Vendas_Funcionarios_idFuncionarios` ASC, `Vendas_Clientes_cpf` ASC) VISIBLE,
CONSTRAINT `fk_Forma_pagamento_Vendas1`
FOREIGN KEY (`Vendas_idVendas` , `Vendas_Funcionarios_idFuncionarios` , `Vendas_Clientes_cpf`)
REFERENCES `mydb`.`Vendas` (`idVendas` , `Funcionarios_idFuncionarios` , `Clientes_cpf`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Produtos_has_Fornecedores`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Produtos_has_Fornecedores` (
`Produtos_idProdutos` INT NOT NULL,
`Fornecedores_idFornecedores` INT NOT NULL,
PRIMARY KEY (`Produtos_idProdutos`, `Fornecedores_idFornecedores`),
INDEX `fk_Produtos_has_Fornecedores_Fornecedores1_idx` (`Fornecedores_idFornecedores` ASC)
VISIBLE,
INDEX `fk_Produtos_has_Fornecedores_Produtos1_idx` (`Produtos_idProdutos` ASC) VISIBLE,
CONSTRAINT `fk_Produtos_has_Fornecedores_Produtos1`
FOREIGN KEY (`Produtos_idProdutos`)
REFERENCES `mydb`.`Produtos` (`idProdutos`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Produtos_has_Fornecedores_Fornecedores1`
FOREIGN KEY (`Fornecedores_idFornecedores`)
REFERENCES `mydb`.`Fornecedores` (`cnpj`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Endereco`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Endereco` (
`idEndereco` INT NOT NULL,
`rua` VARCHAR(45) NOT NULL,
`cep` INT NULL,
`bairro` VARCHAR(45) NOT NULL,
`cidade` VARCHAR(45) NOT NULL,
`Fornecedores_cnpj` INT NOT NULL,
PRIMARY KEY (`idEndereco`, `Fornecedores_cnpj`),
INDEX `fk_Endereco_Fornecedores1_idx` (`Fornecedores_cnpj` ASC) VISIBLE,
CONSTRAINT `fk_Endereco_Fornecedores1`
FOREIGN KEY (`Fornecedores_cnpj`)
REFERENCES `mydb`.`Fornecedores` (`cnpj`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`categoria_produto`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`categoria_produto` (
`idcategoria_produto` INT NOT NULL,
`nome` VARCHAR(100) NOT NULL,
PRIMARY KEY (`idcategoria_produto`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Produtos_has_categoria_produto`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Produtos_has_categoria_produto` (
`Produtos_idProdutos` INT NOT NULL,
`categoria_produto_idcategoria_produto` INT NOT NULL,
PRIMARY KEY (`Produtos_idProdutos`, `categoria_produto_idcategoria_produto`),
INDEX `fk_Produtos_has_categoria_produto_categoria_produto1_idx`
(`categoria_produto_idcategoria_produto` ASC) VISIBLE,
INDEX `fk_Produtos_has_categoria_produto_Produtos1_idx` (`Produtos_idProdutos` ASC) VISIBLE,
CONSTRAINT `fk_Produtos_has_categoria_produto_Produtos1`
FOREIGN KEY (`Produtos_idProdutos`)
REFERENCES `mydb`.`Produtos` (`idProdutos`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Produtos_has_categoria_produto_categoria_produto1`
FOREIGN KEY (`categoria_produto_idcategoria_produto`)
REFERENCES `mydb`.`categoria_produto` (`idcategoria_produto`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`promocao_desconto`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`promocao_desconto` (
`Vendas_idVendas` INT NOT NULL,
`Vendas_Funcionarios_idFuncionarios` INT NOT NULL,
`Vendas_Clientes_cpf` INT NOT NULL,
`Vendas_Clientes_cpf1` INT NOT NULL,
`Produtos_idProdutos` INT NOT NULL, -- Alterado para NOT NULL
`desconto` DECIMAL(7,2) NULL,
PRIMARY KEY (`Vendas_idVendas`, `Vendas_Funcionarios_idFuncionarios`, `Vendas_Clientes_cpf`,
`Vendas_Clientes_cpf1`), -- Removido `Produtos_idProdutos` da chave primária
INDEX `fk_Vendas_has_Produtos_Produtos1_idx` (`Produtos_idProdutos` ASC) VISIBLE,
INDEX `fk_Vendas_has_Produtos_Vendas1_idx` (`Vendas_idVendas` ASC,
`Vendas_Funcionarios_idFuncionarios` ASC, `Vendas_Clientes_cpf` ASC, `Vendas_Clientes_cpf1` ASC)
VISIBLE,
CONSTRAINT `fk_Vendas_has_Produtos_Vendas1`
FOREIGN KEY (`Vendas_idVendas` , `Vendas_Funcionarios_idFuncionarios` , `Vendas_Clientes_cpf` ,
`Vendas_Clientes_cpf1`)
REFERENCES `mydb`.`Vendas` (`idVendas` , `Funcionarios_idFuncionarios` , `Clientes_cpf` ,
`Clientes_cpf1`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Vendas_has_Produtos_Produtos1`
FOREIGN KEY (`Produtos_idProdutos`)
REFERENCES `mydb`.`Produtos` (`idProdutos`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
) ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
1. 10 DDL (ALTER)
ALTER TABLE `mydb`.`Produtos`
ADD COLUMN `peso` DECIMAL(10,2) NOT NULL AFTER `marca`;
ALTER TABLE `mydb`.`Produtos`
CHANGE COLUMN `descricao` `descricao_produto` VARCHAR(150) NOT NULL;
ALTER TABLE `mydb`.`Produtos`
ADD INDEX `idx_nome` (`nome` ASC);
ALTER TABLE `mydb`.`Estoque`
CHANGE COLUMN `data-entrada` `data_entrada` DATE NOT NULL;
ALTER TABLE `mydb`.`Clientes`
ADD COLUMN `telefone2` VARCHAR(15) NULL AFTER `email`;
ALTER TABLE `mydb`.`Funcionarios`
DROP COLUMN `contato`;
ALTER TABLE `mydb`.`Forma_pagamento`
RENAME TO `Formas_pagamento`;
ALTER TABLE `mydb`.`Telefone`
ADD CONSTRAINT `uk_numero` UNIQUE (`numero`);
ALTER TABLE `mydb`.`Clientes`
MODIFY COLUMN `nome` VARCHAR(200) NOT NULL;
ALTER TABLE `mydb`.`Produtos`
ADD COLUMN `data_modificacao` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
AFTER `marca`;
ALTER TABLE `mydb`.`Cargo`
ADD COLUMN `descricao` VARCHAR(150) NOT NULL AFTER `nome`;
ALTER TABLE `mydb`.`Cargo`
CHANGE COLUMN `faixa_salarial` `faixa_salarial_minima` DECIMAL(10,2) NOT NULL;
ALTER TABLE `mydb`.`Dependentes`
ADD COLUMN `sobrenome` VARCHAR(90) NOT NULL AFTER `nome`;
ALTER TABLE `mydb`.`Dependentes`
CHANGE COLUMN `paretesco` `parentesco` VARCHAR(90) NOT NULL;
ALTER TABLE `mydb`.`Estoque`
CHANGE COLUMN `quabtidade` `quantidade` INT NOT NULL;
ALTER TABLE `mydb`.`Ferias`
ADD COLUMN `status` ENUM('Aprovado', 'Pendente', 'Rejeitado') NOT NULL AFTER `data_fim`;
2. DESTRUIR TODAS AS TABELAS, VIEWS, PROCEDIMENTOS, FUNÇÕES E
DEPENDÊNCIA DO SEU BANCO DE DADOS .
-- Desativar verificação de chaves estrangeiras
SET FOREIGN_KEY_CHECKS = 0;
-- Excluir todas as tabelas
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables
FROM information_schema.tables
WHERE table_schema = 'mydb';
SET @tables = CONCAT('DROP TABLE IF EXISTS ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Excluir todas as views
SET @views = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @views
FROM information_schema.views
WHERE table_schema = 'mydb';
SET @views = CONCAT('DROP VIEW IF EXISTS ', @views);
PREPARE stmt FROM @views;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Excluir todos os procedimentos armazenados
SET @procedures = NULL;
SELECT GROUP_CONCAT('`', routine_schema, '`.`', routine_name, '`') INTO @procedures
FROM information_schema.routines
WHERE routine_schema = 'mydb' AND routine_type = 'PROCEDURE';
SET @procedures = CONCAT('DROP PROCEDURE IF EXISTS ', @procedures);
PREPARE stmt FROM @procedures;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Excluir todas as funções armazenadas
SET @functions = NULL;
SELECT GROUP_CONCAT('`', routine_schema, '`.`', routine_name, '`') INTO @functions
FROM information_schema.routines
WHERE routine_schema = 'mydb' AND routine_type = 'FUNCTION';
SET @functions = CONCAT('DROP FUNCTION IF EXISTS ', @functions);
PREPARE stmt FROM @functions;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- Ativar verificação de chaves estrangeiras
SET FOREIGN_KEY_CHECKS = 1;
3. DML(INSERT)
INSERT INTO Produtos (idProdutos, nome, descricao, preco, tamanho, cor, marca) VALUES
(1, 'Camiseta', 'Camiseta de algodão', 25.99, 'M', 'Azul', 'Nike'),
(2, 'Calça Jeans', 'Calça jeans skinny', 59.99, '32', 'Preto', 'Levis'),
(3, 'Tênis', 'Tênis esportivo', 79.99, '41', 'Branco', 'Adidas'),
(4, 'Relógio', 'Relógio analógico', 99.99, '', 'Prata', 'Casio'),
(5, 'Bolsa', 'Bolsa de couro', 129.99, '', 'Marrom', 'Michael Kors'),
(6, 'Óculos de Sol', 'Óculos de sol estilo aviador', 49.99, '', 'Dourado', 'Ray-Ban'),
(7, 'Sapato Social', 'Sapato social de couro', 89.99, '40', 'Preto', 'Calvin Klein'),
(8, 'Perfume', 'Perfume masculino', 69.99, '', 'Amadeirado', 'Dior'),
(9, 'Mochila', 'Mochila escolar', 39.99, '', 'Azul', 'Puma'),
(10, 'Jaqueta de Couro', 'Jaqueta de couro sintético', 119.99, 'M', 'Marrom', 'Zara');
INSERT INTO Estoque (idEstoque, quabtidade, data_entrada, data_saida, Produtos_idProdutos)
VALUES
(1, 50, '2024-05-01 10:00:00', NULL, 1),
(2, 30, '2024-05-02 11:30:00', NULL, 2),
(3, 40, '2024-05-03 09:45:00', NULL, 3),
(4, 20, '2024-05-04 08:15:00', NULL, 4),
(5, 15, '2024-05-05 14:20:00', NULL, 5),
(6, 25, '2024-05-06 16:45:00', NULL, 6),
(7, 35, '2024-05-07 13:10:00', NULL, 7),
(8, 45, '2024-05-08 12:00:00', NULL, 8),
(9, 55, '2024-05-09 12:03:00', NULL, 9),
(10, 75, '2024-05-10 12:53:00', NULL, 10);
INSERT INTO Cargo (cbo, nome, faixa_salarial) VALUES
(123456, 'Gerente', 10000.00),
(234567, 'Analista de Marketing', 8000.00),
(345678, 'Desenvolvedor de Software', 9000.00),
(456789, 'Analista Financeiro', 8500.00),
(567890, 'Analista de Recursos Humanos', 8000.00),
(678901, 'Designer Gráfico', 7500.00),
(789012, 'Assistente Administrativo', 7000.00),
(890123, 'Analista de Qualidade', 8500.00),
(901234, 'Analista de Vendas', 8000.00),
(1234567, 'Estoquista', 7000.00);
INSERT INTO Clientes (cpf, nome, endereco, email) VALUES
(12345678901, 'Maria Silva', 'Rua A, 123', 'maria@[Link]'),
(23456789012, 'João Santos', 'Rua B, 456', 'joao@[Link]'),
(34567890123, 'Ana Oliveira', 'Rua C, 789', 'ana@[Link]'),
(45678901234, 'Pedro Souza', 'Rua D, 1011', 'pedro@[Link]'),
(56789012345, 'Juliana Lima', 'Rua E, 1213', 'juliana@[Link]'),
(67890123456, 'Lucas Pereira', 'Rua F, 1415', 'lucas@[Link]'),
(78901234567, 'Mariana Costa', 'Rua G, 1617', 'mariana@[Link]'),
(89012345678, 'Fernando Martins', 'Rua H, 1819', 'fernando@[Link]'),
(90123456789, 'Camila Almeida', 'Rua I, 2021', 'camila@[Link]'),
(12345678901, 'Rodrigo Nunes', 'Rua J, 2223', 'rodrigo@[Link]');
INSERT INTO Dependentes (cpf, paretesco, nome, data_nasc, Funcionarios_idFuncionarios)
VALUES
(12345678901, 'Filho', 'João da Silva', '2010-03-15', 1),
(23456789012, 'Filha', 'Maria Oliveira', '2008-05-20', 2),
(34567890123, 'Filho', 'Pedro Santos', '2015-08-10', 3),
(45678901234, 'Filho', 'Lucas Lima', '2012-10-25', 4),
(56789012345, 'Filha', 'Ana Pereira', '2009-12-12', 5),
(67890123456, 'Cônjuge', 'Carla Fernandes', '1980-07-05', 6),
(78901234567, 'Cônjuge', 'José Almeida', '1975-09-18', 7),
(89012345678, 'Filho', 'Marcos Costa', '2017-04-01', 8),
(90123456789, 'Filha', 'Juliana Martins', '2014-11-20', 9),
(12345678901, 'Cônjuge', 'Renata Souza', '1972-02-28', 10);
INSERT INTO Ferias (idFerias, quants_dias, ano_ref, data_inicio, data_fim,
Funcionarios_idFuncionarios) VALUES
(1, 30, 2024, '2024-07-01', '2024-07-30', 1),
(2, 20, 2024, '2024-08-05', '2024-08-25', 2),
(3, 25, 2024, '2024-09-10', '2024-10-05', 3),
(4, 15, 2024, '2024-11-03', '2024-11-17', 4),
(5, 30, 2024, '2024-12-01', '2025-01-01', 5),
(6, 20, 2024, '2025-02-10', '2025-03-02', 6),
(7, 25, 2024, '2025-03-15', '2025-04-09', 7),
(8, 15, 2024, '2025-05-05', '2025-05-20', 8),
(9, 30, 2024, '2025-06-01', '2025-06-30', 9),
(10, 20, 2024, '2025-07-10', '2025-07-30', 10);
INSERT INTO Forma_pagamento (id, parcela, valor, tipo, Vendas_idVendas,
Vendas_Funcionarios_idFuncionarios, Vendas_Clientes_cpf) VALUES
(1, 1, 100.00, 'À vista', 1, 1, 12345678901),
(2, 2, 50.00, 'Parcelado', 2, 2, 23456789012),
(3, 1, 80.00, 'À vista', 3, 3, 34567890123),
(4, 3, 40.00, 'Parcelado', 4, 4, 45678901234),
(5, 1, 120.00, 'À vista', 5, 5, 56789012345),
(6, 2, 70.00, 'Parcelado', 6, 6, 67890123456),
(7, 1, 90.00, 'À vista', 7, 7, 78901234567),
(8, 3, 60.00, 'Parcelado', 8, 8, 89012345678),
(9, 1, 150.00, 'À vista', 9, 9, 90123456789),
(10, 2, 80.00, 'Parcelado', 10, 10, 12345678901);
INSERT INTO Fornecedores (cnpj, nome, email) VALUES
(12345678901234, 'Fornecedor A', 'fornecedor_a@[Link]'),
(23456789012345, 'Fornecedor B', 'fornecedor_b@[Link]'),
(34567890123456, 'Fornecedor C', 'fornecedor_c@[Link]'),
(45678901234567, 'Fornecedor D', 'fornecedor_d@[Link]'),
(56789012345678, 'Fornecedor E', 'fornecedor_e@[Link]'),
(67890123456789, 'Fornecedor F', 'fornecedor_f@[Link]'),
(78901234567890, 'Fornecedor G', 'fornecedor_g@[Link]'),
(89012345678901, 'Fornecedor H', 'fornecedor_h@[Link]'),
(90123456789012, 'Fornecedor I', 'fornecedor_i@[Link]'),
(12345678901234, 'Fornecedor J', 'fornecedor_j@[Link]');
INSERT INTO Funcionarios (idFuncionarios, nome, cargo, contato, Cargo_cbo) VALUES
(1, 'João Silva', 'Gerente de Vendas', '(11) 98765-4321', 123456),
(2, 'Maria Santos', 'Assistente Administrativo', '(11) 98765-4322', 234567),
(3, 'Carlos Oliveira', 'Analista de Marketing', '(11) 98765-4323', 345678),
(4, 'Ana Lima', 'Desenvolvedor Web', '(11) 98765-4324', 456789),
(5, 'Pedro Rocha', 'Técnico de Suporte', '(11) 98765-4325', 567890),
(6, 'Juliana Almeida', 'Analista Financeiro', '(11) 98765-4326', 678901),
(7, 'Luiz Costa', 'Engenheiro de Software', '(11) 98765-4327', 789012),
(8, 'Mariana Carvalho', 'Designer Gráfico', '(11) 98765-4328', 890123),
(9, 'Rafael Pereira', 'Analista de Sistemas', '(11) 98765-4329', 901234),
(10, 'Camila Oliveira', 'Gerente de Recursos Humanos', '(11) 98765-4330', 123456);
INSERT INTO Produtos_has_categoria_produto (Produtos_idProdutos,
categoria_produto_idcategoria_produto) VALUES
(1, 1),
(2, 2),
(3, 1),
(4, 3),
(5, 2),
(6, 1),
(7, 3),
(8, 2),
(9, 1),
(10, 3);
INSERT INTO `promocao_desconto` (`Vendas_idVendas`, `Vendas_Funcionarios_idFuncionarios`,
`Vendas_Clientes_cpf`, `Vendas_Clientes_cpf1`, `Produtos_idProdutos`, `desconto`) VALUES
(1, 1, 12345678900, 12345678900, 1, 10.00),
(2, 2, 98765432100, 98765432100, 2, 15.00),
(3, 3, 13579246800, 13579246800, 3, 20.00),
(4, 4, 24681357900, 24681357900, 4, 25.00),
(5, 5, 36925814700, 36925814700, 5, 30.00),
(6, 6, 98745632100, 98745632100, 6, 35.00),
(7, 7, 75395148600, 75395148600, 7, 40.00),
(8, 8, 15926483700, 15926483700, 8, 45.00),
(9, 9, 85274136900, 85274136900, 9, 50.00),
(10, 10, 36914725800, 36914725800, 10, 55.00);
INSERT INTO `Telefone` (`idTelifone`, `numero`, `Fornecedores_cnpj`,
`Funcionarios_idFuncionarios`) VALUES
(1, '123456789', 12345678900, 1),
(2, '987654321', 98765432100, 2),
(3, '135792468', 13579246800, 3),
(4, '246813579', 24681357900, 4),
(5, '369258147', 36925814700, 5),
(6, '987456321', 98745632100, 6),
(7, '753951486', 75395148600, 7),
(8, '159264837', 15926483700, 8),
(9, '852741369', 85274136900, 9),
(10, '369147258', 36914725800, 10);
INSERT INTO `Vendas` (`idVendas`, `date`, `status_entrega`, `Funcionarios_idFuncionarios`,
`Clientes_cpf`, `Clientes_cpf1`, `Funcionarios_idFuncionarios1`) VALUES
(1, '2024-05-09', 'Entregue', 1, 12345678900, 12345678900, 1),
(2, '2024-05-08', 'Em andamento', 2, 98765432100, 98765432100, 2),
(3, '2024-05-07', 'Pendente', 3, 13579246800, 13579246800, 3),
(4, '2024-05-06', 'Entregue', 4, 24681357900, 24681357900, 4),
(5, '2024-05-05', 'Cancelado', 5, 36925814700, 36925814700, 5),
(6, '2024-05-04', 'Entregue', 6, 98745632100, 98745632100, 6),
(7, '2024-05-03', 'Pendente', 7, 75395148600, 75395148600, 7),
(8, '2024-05-02', 'Em andamento', 8, 15926483700, 15926483700, 8),
(9, '2024-05-01', 'Entregue', 9, 85274136900, 85274136900, 9),
(10, '2024-04-30', 'Entregue', 10, 36914725800, 36914725800, 10);
4. DELETAR OU ATUALIZAR
DELETE FROM `Dependentes` WHERE `cpf` = 12345678900 AND `Funcionarios_idFuncionarios` = 1;
DELETE FROM `Dependentes` WHERE TIMESTAMPDIFF(YEAR, `data_nasc`, CURDATE()) < 18;
DELETE FROM `Dependentes` WHERE `Funcionarios_idFuncionarios` IS NULL;
DELETE FROM `Dependentes` WHERE `cpf` = 12345678900 AND `Funcionarios_idFuncionarios` = 1;
DELETE FROM `Dependentes` WHERE TIMESTAMPDIFF(YEAR, `data_nasc`, CURDATE()) < 18;
DELETE FROM `Dependentes` WHERE `Funcionarios_idFuncionarios` IS NULL;
DELETE FROM `Telefone` WHERE `idTelifone` = 1;
DELETE FROM `Telefone` WHERE `Fornecedores_cnpj` IN (SELECT `cnpj` FROM `Fornecedores`
WHERE `ativo` = 0);
DELETE FROM `Telefone` WHERE `Funcionarios_idFuncionarios` NOT IN (SELECT `idFuncionarios`
FROM `Funcionarios`);
UPDATE `Clientes` SET `endereco` = 'Novo endereço' WHERE `cpf` = 12345678900;
UPDATE `Clientes` SET `email` = 'novoemail@[Link]' WHERE `cpf` = 98765432100;
UPDATE `Clientes` SET `nome` = CONCAT('Novo ', `nome`) WHERE `nome` LIKE 'Antigo%';
DELETE FROM `Fornecedores` WHERE `cnpj` = 12345678901234;
DELETE FROM `Fornecedores` WHERE `nome` = 'Fornecedor Teste';
DELETE FROM `Fornecedores` WHERE `cnpj` NOT IN (SELECT `Fornecedores_cnpj` FROM
`Telefone`);
DELETE FROM `Vendas` WHERE `idVendas` = 1;
DELETE FROM `Vendas` WHERE `status_entrega` = 'Cancelado';
5. PERGUNTAS/RELATÓRIOS
SELECT [Link] AS Funcionario, COUNT(*) AS TotalVendas
FROM Funcionarios f
JOIN Vendas v ON [Link] = v.Funcionarios_idFuncionarios
GROUP BY [Link];
SELECT [Link] AS Cliente, COUNT(*) AS TotalVendas
FROM Clientes c
JOIN Vendas v ON [Link] = v.Clientes_cpf
GROUP BY [Link];
SELECT [Link] AS Produto, COUNT(*) AS TotalVendas
FROM Produtos p
JOIN Produtos_has_categoria_produto pc ON [Link] = pc.Produtos_idProdutos
JOIN Vendas_has_Produtos vp ON [Link] = vp.Produtos_idProdutos
GROUP BY [Link];
SELECT [Link] AS Fornecedor, [Link] AS Produto
FROM Fornecedores f
JOIN Produtos_has_Fornecedores pf ON [Link] = pf.Fornecedores_idFornecedores
JOIN Produtos p ON pf.Produtos_idProdutos = [Link];
SELECT [Link] AS Funcionario, [Link] AS Dependente
FROM Funcionarios f
JOIN Dependentes d ON [Link] = d.Funcionarios_idFuncionarios;
SELECT [Link] AS Produto, SUM([Link]) AS TotalEstoque
FROM Estoque e
JOIN Produtos p ON e.Produtos_idProdutos = [Link]
GROUP BY [Link];
SELECT [Link] AS Cargo, COUNT(*) AS TotalFuncionarios
FROM Cargo c
JOIN Funcionarios f ON [Link] = f.Cargo_cbo
GROUP BY [Link];
SELECT [Link] AS Cargo, AVG(faixa_salarial) AS MediaSalarial
FROM Cargo c
JOIN Funcionarios f ON [Link] = f.Cargo_cbo
GROUP BY [Link];
SELECT [Link] AS Cidade, COUNT(*) AS TotalFornecedores
FROM Fornecedores f
JOIN Endereco e ON [Link] = e.Fornecedores_cnpj
GROUP BY [Link];
SELECT [Link] AS Fornecedor
FROM Fornecedores f
LEFT JOIN Endereco e ON f.c
SELECT YEAR([Link]) AS Ano, COUNT(*) AS TotalVendas
FROM Vendas v
GROUP BY YEAR([Link]);
SELECT [Link] AS Fornecedor, [Link] AS Produto
FROM Fornecedores f
JOIN Produtos_has_Fornecedores pf ON [Link] = pf.Fornecedores_idFornecedores
JOIN Produtos p ON pf.Produtos_idProdutos = [Link]
WHERE [Link] = 'Nome do Produto';
SELECT [Link] AS Cliente, [Link] AS DataCompra
FROM Clientes c
JOIN Vendas v ON [Link] = v.Clientes_cpf
WHERE [Link] = '2024-01-01';
SELECT [Link] AS Produto, COUNT(*) AS TotalVendas
FROM Produtos p
JOIN Vendas_has_Produtos vp ON [Link] = vp.Produtos_idProdutos
JOIN Vendas v ON vp.Vendas_idVendas = [Link]
WHERE v.Clientes_cpf = 'CPF do Cliente';
SELECT [Link] AS Funcionario, COUNT(*) AS TotalVendas
FROM Funcionarios f
JOIN Vendas v ON [Link] = v.Funcionarios_idFuncionarios
WHERE MONTH([Link]) = 1 AND YEAR([Link]) = 2024
GROUP BY [Link]
ORDER BY TotalVendas DESC
LIMIT 1;
SELECT [Link] AS Categoria, AVG([Link]) AS MediaPreco
FROM categoria_produto cp
JOIN Produtos_has_categoria_produto pc ON cp.idcategoria_produto =
pc.categoria_produto_idcategoria_produto
JOIN Produtos p ON pc.Produtos_idProdutos = [Link]
GROUP BY [Link];
SELECT [Link] AS FormaPagamento, COUNT(*) AS TotalVendas
FROM Forma_pagamento fp
JOIN Vendas v ON [Link] = v.Forma_pagamento_id
GROUP BY [Link];
SELECT [Link] AS Cliente, COUNT([Link]) AS TotalDependentes
FROM Clientes c
JOIN Dependentes d ON [Link] = d.Clientes_cpf
GROUP BY [Link]
HAVING TotalDependentes > 1;
SELECT [Link] AS Funcionario, [Link] AS Cargo
FROM Funcionarios f
JOIN Cargo c ON f.Cargo_cbo = [Link]
WHERE [Link] = 'Nome do Cargo';
SELECT [Link] AS Fornecedor, COUNT([Link]) AS NumTelefones
FROM Fornecedores f
JOIN Telefone t ON [Link] = t.Fornecedores_cnpj
GROUP BY [Link];
6. 10 VIEWS
CREATE VIEW Vendas_por_Produto AS
SELECT [Link] AS Produto, COUNT(*) AS Total_Vendas
FROM Produtos p
JOIN Vendas_has_Produtos vp ON [Link] = vp.Produtos_idProdutos
GROUP BY [Link];
CREATE VIEW Vendas_por_Cliente AS
SELECT [Link] AS Cliente, COUNT(*) AS Total_Vendas
FROM Clientes c
JOIN Vendas v ON [Link] = v.Clientes_cpf
GROUP BY [Link];
CREATE VIEW Vendas_por_Funcionario AS
SELECT [Link] AS Funcionario, COUNT(*) AS Total_Vendas
FROM Funcionarios f
JOIN Vendas v ON [Link] = v.Funcionarios_idFuncionarios
GROUP BY [Link];
CREATE VIEW Produtos_em_Estoque AS
SELECT [Link] AS Produto, SUM([Link]) AS Total_Estoque
FROM Produtos p
JOIN Estoque e ON [Link] = e.Produtos_idProdutos
GROUP BY [Link];
CREATE VIEW Fornecedores_e_Produtos AS
SELECT [Link] AS Fornecedor, GROUP_CONCAT([Link] SEPARATOR ', ') AS Produtos_Fornecidos
FROM Fornecedores f
JOIN Produtos_has_Fornecedores pf ON [Link] = pf.Fornecedores_idFornecedores
JOIN Produtos p ON pf.Produtos_idProdutos = [Link]
GROUP BY [Link];
CREATE VIEW Dependentes_por_Funcionario AS
SELECT [Link] AS Funcionario, COUNT([Link]) AS Total_Dependentes
FROM Funcionarios f
JOIN Dependentes d ON [Link] = d.Funcionarios_idFuncionarios
GROUP BY [Link];
CREATE VIEW Produtos_por_Categoria AS
SELECT [Link] AS Categoria, COUNT(*) AS Total_Produtos
FROM categoria_produto cp
JOIN Produtos_has_categoria_produto pc ON cp.idcategoria_produto =
pc.categoria_produto_idcategoria_produto
GROUP BY [Link];
CREATE VIEW Promocoes_e_Descontos AS
SELECT [Link] AS Produto, [Link] AS Desconto
FROM Produtos p
JOIN promocao_desconto pd ON [Link] = pd.Produtos_idProdutos;
CREATE VIEW Vendas_por_Forma_Pagamento AS
SELECT [Link] AS Forma_Pagamento, COUNT(*) AS Total_Vendas
FROM Forma_pagamento fp
JOIN Vendas v ON [Link] = v.Forma_pagamento_id
GROUP BY [Link];
CREATE VIEW Funcionarios_e_Cargos AS
SELECT [Link] AS Funcionario, [Link] AS Cargo
FROM Funcionarios f
JOIN Cargo c ON f.Cargo_cbo = [Link];