Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE DATABASE empresa;
- USE empresa;
- CREATE TABLE Departamentos
- (
- codigo INT NOT NULL PRIMARY KEY,
- nome VARCHAR(60) NOT NULL,
- localizacao VARCHAR(80) NOT NULL
- );
- INSERT INTO
- Departamentos(codigo, nome, localizacao)
- VALUES
- (456, "Tecnologia da Informação", "quadra A-31"),
- (231, "Financeiro", "quadra A-25"),
- (556, "Marketing", "quadra A-12"),
- (211, "Jurídico", "quadra A-13"),
- (120, "Comercial", "quadra B-01"),
- (466, "Recursos Humanos", "quadra C-14"),
- (560, "Presidência", "quadra C-11");
- CREATE TABLE Funcionarios
- (
- cpf VARCHAR(11) NOT NULL PRIMARY KEY,
- nome VARCHAR(60) NOT NULL,
- endereco VARCHAR(80) NOT NULL,
- telefone VARCHAR(12) NOT NULL,
- salario DECIMAL(10,2) NOT NULL,
- codigo_departamento INT NOT NULL,
- codigo_departamentoGerenciar INT,
- FOREIGN KEY (codigo_departamento) REFERENCES Departamentos (codigo),
- FOREIGN KEY (codigo_departamentoGerenciar) REFERENCES Departamentos (codigo)
- );
- INSERT INTO
- Funcionarios (CPF, nome, endereco, telefone, salario, codigo_departamento, codigo_departamentoGerenciar)
- VALUES
- ("10022256232", "Olívia de Paula Brito", "São Paulo", "314430089", 1200.00, 556, NULL),
- ("90856251432", "Fernando Marciel", "Santo Andre", "318907654", 2500.00, 456, NULL),
- ("3985699025", "Adilson Fernandes Souza", "São Paulo", "314220065", 4500.00, 231, 231),
- ("29845651111", "Vanessa Brito", "Sorocaba", "312678904", 950.00, 466, NULL),
- ("10546222142", "Marcos Antonio da Silva", "Jundiai", "319786874", 980.00, 456, NULL);
- CREATE TABLE Dependentes
- (
- codigo INT NOT NULL PRIMARY KEY,
- nome VARCHAR(60) NOT NULL,
- endereco VARCHAR(80),
- parentesco VARCHAR(10) NOT NULL
- );
- INSERT INTO
- Dependentes(codigo, nome, parentesco)
- VALUES
- (3768, "Leonardo Silva Marciel", "filho"),
- (3776, "Mariana Lemos de Souza", "filha"),
- (2763, "José Francisco Brito", "pai"),
- (3322, "André Silva Marciel", "filho"),
- (7316, "Leandro Silva Marciel", "filho");
- CREATE TABLE Projetos
- (
- numero INT NOT NULL PRIMARY KEY,
- nome VARCHAR(40) NOT NULL,
- verba VARCHAR(60) NOT NULL,
- codigo_departamento INT NOT NULL,
- cpf_funcionario VARCHAR(11),
- tipo VARCHAR(60) NOT NULL,
- FOREIGN KEY (codigo_departamento) REFERENCES Departamentos (codigo),
- FOREIGN KEY (cpf_funcionario) REFERENCES Funcionarios (cpf)
- );
- INSERT INTO
- projetos(numero, nome, tipo, verba, codigo_departamento)
- VALUES
- (56, "Alfa", "integral-2 anos", "5 bolsas integrais IF", 556),
- (12, "D3RE", "integral-1 anos", "5 bolsas integrais IF",211 ),
- (46, "X3", "parcial-2 anos", "não determinada", 456),
- (47, "Beta", "parcial-2 anos", "5 bolsas parciais IF", 556),
- (21, "XR3", "integral-5 anos", "2 bolsas integrais IF", 456);
- CREATE TABLE Funcionarios_Dependentes
- (
- cpf_funcionario VARCHAR(11) NOT NULL,
- codigo_dependente INT NOT NULL,
- PRIMARY KEY (cpf_funcionario, codigo_dependente),
- FOREIGN KEY (cpf_funcionario) REFERENCES Funcionarios (cpf),
- FOREIGN KEY (codigo_dependente) REFERENCES Dependentes (codigo)
- );
- INSERT INTO
- Funcionarios_Dependentes(cpf_funcionario, codigo_dependente)
- VALUES
- ("90856251432", 3322),
- ("90856251432", 7316),
- ("3985699025", 2763),
- ("29845651111", 2763),
- ("10546222142", 3776),
- ("10546222142", 3768);
- CREATE TABLE Funcionarios_Projetos
- (
- cpf_funcionario VARCHAR(11) NOT NULL,
- numero_projeto INT NOT NULL,
- numero_horas INT NOT NULL,
- PRIMARY KEY (cpf_funcionario, numero_projeto),
- FOREIGN KEY (cpf_funcionario) REFERENCES Funcionarios (cpf),
- FOREIGN KEY (numero_projeto) REFERENCES Projetos (numero)
- );
- INSERT INTO
- Funcionarios_Projetos(cpf_funcionario, numero_projeto, numero_horas)
- VALUES
- ("90856251432", 12, 230),
- ("90856251432", 56, 300),
- ("3985699025", 56, 120),
- ("29845651111", 46, 248),
- ("10546222142", 21, 30),
- ("10546222142", 47, 20);
- UPDATE Dependentes SET endereco = "São Paulo";
- UPDATE Dependentes SET endereco = "Jundiaí" WHERE codigo = 3768 OR codigo = 3776;
- UPDATE Dependentes SET endereco = "Sorocaba" WHERE nome = "José Francisco Brito";
- DELETE FROM departamentos WHERE codigo = 120;
- # Visão 1:
- # Nesse sistema, vemos que os projetos possuem verbas controladas pelos departamentos, e é comum serem
- # solicitadas informações a esse respeito. Utilizando este recurso, podemos criar a visão que contém
- # essas importantes informa- ções, para que não seja preciso pesquisar a base.
- # Visão ‘departamentos_projetos’:
- # selecione o tipo e a verba dos projetos que os departamentos controlam.
- CREATE VIEW
- departamentos_projetos
- AS
- SELECT
- d.codigo, d.nome, p.numero, p.tipo, p.verba
- FROM
- departamentos d JOIN projetos p
- ON
- d.codigo = p.codigo_departamento;
- SELECT * FROM departamentos_projetos;
- # Visão 2:
- # Visão ‘funcionarios_projetos_horas’:
- # selecione o número de horas que os funcionários trabalham em projeto.
- CREATE VIEW
- funcionarios_projetos_horas
- AS
- SELECT
- f.cpf, f.nome, f.salario, p.numero, p.tipo, fp.numero_horas
- FROM
- funcionarios f JOIN funcionarios_projetos fp JOIN projetos p
- ON
- cpf = fp.cpf_funcionario AND p.numero = fp.numero_projeto;
- SELECT
- cpf, nome AS Funcionario, salario, numero AS Projeto, tipo, numero_horas
- FROM
- funcionarios_projetos_horas;
- # Visão 3:
- # Agora, vamos criar uma visão que contenha informações sobre os funcionários e seus dependentes,
- # acompanhando o código e as informações que seguem.
- # Visão ‘funcionarios_dependentes1’:
- # seleciona os dependentes dos funcionários.
- CREATE VIEW
- funcionarios_dependentes1
- AS
- SELECT
- f.CPF, f.nome, f.salario, d.codigo, d.parentesco
- FROM
- funcionarios f JOIN dependentes d JOIN funcionarios_dependentes fd
- ON
- f.cpf = fd.cpf_funcionario AND d.codigo = fd.codigo_dependente;
- SELECT * FROM funcionarios_dependentes1;
- # Se quisermos, por exemplo, excluir a visão ‘funcionarios_dependentes1’, devemos executar o seguinte código.
- DROP VIEW funcionarios_dependentes1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement