CREATE TABLE `estado` (
  `id_estado` INT NOT NULL primary key auto_increment,
  `nome` VARCHAR(45) Not NULL
);

CREATE TABLE `cidade` (
  `id_cidade` INT NOT NULL primary key  auto_increment,
  `nome` VARCHAR(45) not NULL,
  `id_estado` INT NOT NULL
);

CREATE TABLE `cliente` (
  `id_cliente` INT NOT NULL primary key  auto_increment,
  `nome` VARCHAR(45) not NULL,
  `data_nascimento` DATE NULL,
  `renda` DECIMAL(10,2) NULL,
  `endereco` VARCHAR(45) NULL,
  `tipo` CHAR(1) NOT NULL,
  `cpf` CHAR(11) NULL,
  `cnpj` CHAR(14) NULL,
  `id_cidade` INT NULL
  );

CREATE TABLE `cargo` (
  `id_cargo` INT NOT NULL primary key  auto_increment,
  `descricao` VARCHAR(45) NOT NULL
);


CREATE TABLE `departamento` (
  `id_departamento` INT NOT NULL primary key  auto_increment,
  `nome` VARCHAR(45) NOT NULL
);

CREATE TABLE `empregado` (
  `id_empregado` INT NOT NULL primary key  auto_increment,
  `nome` VARCHAR(45) NOT NULL,
  `salario` VARCHAR(45) NOT NULL,
  `id_cargo` INT NOT NULL,
  `id_empregado_superior` INT NULL,
  `data_contratacao` DATE,
  `sexo` CHAR(1) NULL,
  `data_nascimento` DATE NULL,
  `id_departamento` INT
  );

CREATE TABLE `agencia` (
  `id_agencia` INT NOT NULL primary key  auto_increment,
  `nome` VARCHAR(45) NOT NULL,
  `id_gerente` INT NOT NULL
);

CREATE TABLE `operacao` (
  `id_operacao` INT NOT NULL primary key  auto_increment,
  `descricao` VARCHAR(45) NOT NULL,
  `tipo` CHAR(1) not NULL
 );


CREATE TABLE `conta` (
  `id_conta` INT NOT NULL primary key  auto_increment,
  `saldo` DECIMAL(10,2) NOT NULL,
  `id_agencia` INT NOT NULL,
  `id_empregado` INT NOT NULL,
  `data_abertura` DATE NULL,
  `limite` DECIMAL(10,2) NULL,
  `id_cliente` INT NOT NULL
  );

CREATE TABLE `movimento` (
  `id_movimento`INT NOT NULL primary key  auto_increment,
  `data` DATE NOT NULL,
  `hora` TIME NOT NULL,
  `valor` DECIMAL(10,2) NOT NULL,
  `observacao` VARCHAR(100) NULL,
  `id_conta` INT NOT NULL,
  `id_operacao` INT NOT NULL
  );

alter table cidade add constraint foreign key(id_estado) references estado(id_estado);

alter table cliente add constraint foreign key(id_cidade) references cidade(id_cidade);

alter table conta add constraint foreign key(id_cliente) references cliente(id_cliente);

alter table conta add constraint foreign key(id_agencia) references agencia(id_agencia);

alter table conta add constraint foreign key(id_empregado) references empregado(id_empregado);

alter table empregado add constraint foreign key(id_cargo) references cargo(id_cargo);

alter table empregado add constraint foreign key(id_departamento) references departamento(id_departamento);

alter table empregado add constraint foreign key(id_empregado_superior) references empregado(id_empregado);

alter table agencia add constraint foreign key(id_gerente) references empregado(id_empregado);

alter table movimento add constraint foreign key(id_conta) references conta(id_conta);

alter table movimento add constraint foreign key(id_operacao) references operacao(id_operacao);

INSERT INTO `estado` (`id_estado`, `nome`) VALUES
(1, 'Paraná'),
(2, 'São Paulo'),
(3, 'Minas Gerais'),
(4, 'Santa Catarina');

INSERT INTO `departamento` (`id_departamento`, `nome`) VALUES
(1, 'Diretoria'),
(2, 'Gerencia'),
(3, 'TI'),
(4, 'RH'),
(5, 'Serviços Gerais');

INSERT INTO `cargo` (`id_cargo`, `descricao`) VALUES
(1, 'Diretor'),
(2, 'Gerente Geral'),
(3, 'Gerente de Conta'),
(4, 'Caixa'),
(5, 'Segurança'),
(6, 'TI'),
(7, 'Atendimento'),
(8, 'Estagiário'),
(9, 'Administrativo');

INSERT INTO `cidade` (`id_cidade`, `nome`, `id_estado`) VALUES
(1, 'Guarapuava', 1),
(2, 'Curitiba', 1),
(3, 'Londrina', 1),
(4, 'Florianópolis', 4),
(5, 'Belo Horizonte', 3),
(6, 'Campinas', 2),
(7, 'São Paulo', 2),
(8, 'Joinville', 4),
(9, 'Uberaba', 3),
(10, 'Ponta Grossa', 1);

INSERT INTO `operacao` (`id_operacao`, `descricao`, `tipo`) VALUES
(1, 'Saque', 'S'),
(2, 'Depósito', 'E'),
(3, 'Pagamento de Boleto', 'S'),
(4, 'Transferência', 'S');

INSERT INTO `empregado` (`id_empregado`, `nome`, `salario`, `id_cargo`, `id_empregado_superior`, `data_contratacao`, `sexo`, `data_nascimento`, `id_departamento`) VALUES
(1, 'Leila Pereira', '20000', 1, NULL, '1995-10-09', 'F', '1960-06-02', 1),
(2, 'Abel Ferreira', '15000', 2, 1, '2001-05-10', 'M', '1980-11-17', 2),
(3, 'John Rambo', '8000', 3, 2, '2010-08-09', 'M', '2006-08-22', 2),
(4, 'Ana Paula', '20000', 3, 2, '2023-09-08', 'F', '1980-11-17', 2),
(5, 'Tereza Maria da Silva', '3000', 9, 4, '1995-10-09', 'F', '1986-11-29', 4),
(6, 'Gisele Ortiz', '5000', 9, 4, '2015-09-04', 'F', '2000-08-22', 4),
(7, 'Bill Gates', '5000', 6, NULL, '2023-09-05', 'M', '2000-10-16', 3),
(8, 'Elon Musk', '3000', 6, 7, '2001-05-10', 'M', '1963-10-12', 3),
(9, 'Hulk', '3000', 5, 2, '2023-09-08', 'M', '1990-10-17', 5);

INSERT INTO `cliente` (`id_cliente`, `nome`, `data_nascimento`, `renda`, `endereco`, `tipo`, `cpf`, `cnpj`, `id_cidade`) VALUES
(1, 'Paulo Soares', '1988-10-10', '250000.00', 'Rua Rua Barbosa, 442', 'F', '05699445977', NULL, 2),
(2, 'Pikachu', '2006-08-22', '5000.00', 'Rua Pokemon, 332', 'F', '05699445879', NULL, 5),
(3, 'Mario Bros', '2001-10-17', '10000.00', 'Rua Matador, 2', 'F', '05699445973', NULL, 3),
(4, 'Tony Stark', '2000-08-22', '5000.00', 'Rua Avenger, 332', 'F', '05699445871', NULL, 1),
(5, 'Microsoft', '2001-10-17', '500000.00', 'Rua Rua Barbosa, 478', 'J', NULL, '12345678912345', 1),
(6, 'Google', '2000-10-10', '300000.00', 'Rua Avenger, 332', 'J', NULL, '12345678998745', 2),
(7, 'Nasa', '2003-10-13', '100000.00', 'Rua Nasa, 45', 'J', NULL, '12345678912348', 7),
(8, 'Dino da SIlva Sauro', '2002-08-22', '4000.00', 'Rua Dino, 332', 'F', '05699445875', NULL, 6);


INSERT INTO `agencia` (`id_agencia`, `nome`, `id_gerente`) VALUES
(1, 'Agência 1', 4),
(2, 'Agência 2', 5);



INSERT INTO `conta` (`id_conta`, `saldo`, `id_agencia`, `id_empregado`, `data_abertura`, `limite`, `id_cliente`) VALUES
(1, '10000.00', 1, 2, '2021-10-12', '5000.00', 3),
(2, '20000.00', 1, 3, '2023-10-02', '1000.00', 4);

INSERT INTO `movimento` (`id_movimento`, `data`, `hora`, `valor`, `observacao`, `id_conta`, `id_operacao`) VALUES
(1, '2023-10-03', '11:52:59', '5000.00', NULL, 1, 2),
(2, '2023-10-14', '17:52:59', '5000.00', NULL, 1, 2),
(3, '2022-09-05', '10:46:40', '30000.00', NULL, 2, 2),
(4, '2023-10-17', '12:54:40', '10000.00', NULL, 2, 1);


