0% acharam este documento útil (0 voto)
6 visualizações20 páginas

Estrutura de Banco de Dados MySQL

Enviado por

Flávia paloma
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações20 páginas

Estrutura de Banco de Dados MySQL

Enviado por

Flávia paloma
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

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];

Você também pode gostar