370 likes | 543 Views
Comandos SQL. Comandos SQL - DML. Comandos SQL - DML. • Os exemplos serão elaborados para o esquema de dados a seguir: EMPREGADO ( matricula , nome, endereco , salario, matriculaSupervisor , codigoDepartamento )
E N D
Comandos SQL - DML • Os exemplos serão elaborados para o esquema de dados a seguir: EMPREGADO (matricula, nome, endereco, salario, matriculaSupervisor, codigoDepartamento) DEPARTAMENTO (codigoDepartamento, nome, matriculaGerente, dataInicio) PROJETO (codigoProjeto, nome, local, codigoDepartamento) ALOCACAO (matricula, codigoProjeto, horas) DEPENDENTE (codigoDependente, matricula, nome, sexo)
Comandos SQL - DML • Os exemplos serão elaborados para o esquema de dados a seguir:
Comandos SQL - DML • • Operações de manipulação: • SELECT • INSERT • UPDATE • DELETE
Comandos SQL - DML • O comando SELECT: forma básica SELECT <lista atributos> FROM <lista tabelas> WHERE <condição> • O resultado de qualquer comando SELECT é uma tabela - O campo FROM realiza produto cartesiano das tabelas relacionadas - WHERE deve trazer as condições de junção
Comandos SQL – DML - Desafio • Q1. Obtenha todos os atributos de todos os empregados
Comandos SQL – DML - Desafio • Q1. Obtenha todos os atributos de todos os empregados SELECT * FROM empregado;
Comandos SQL – DML - Desafio • Q2. Selecione as matrículas dos empregados
Comandos SQL – DML - Desafio • Q2. Selecione as matrículas dos empregados SELECT matricula FROM empregado;
Comandos SQL – DML - Desafio • Q3. Obtenha o salário do empregado ‘José’
Comandos SQL – DML - Desafio • Q3. Obtenha o salário do empregado ‘José’ SELECT salario FROM empregado WHERE nome = 'José';
Comandos SQL – DML - Desafio • Q4. Selecione todos os atributos de todos os empregados do departamento código 5
Comandos SQL – DML - Desafio • Q4. Selecione todos os atributos de todos os empregados do departamento código 5 SELECT * FROM empregado WHERE codigoDepartamento= 5;
Comandos SQL – DML - Desafio • Q5. Faça o produto cartesiano, seguido de projeção de Empregados X Departamento retornando a matrícula do empregado e o nome do departamento
Comandos SQL – DML - Desafio • • Q5. Faça o produto cartesiano, seguido de projeção de Empregados X Departamento retornando a matrícula do empregado e o nome do departamento • SELECT empregado.matricula, • departamento.nome • FROM empregado, • departamento; • A cláusula FROM realiza o produto cartesiano • Departamento.nome é especificado para não haver confusão com o atributo nome de empregado • - Empregados são relacionados com outros departamentos além daquele em que trabalham
Comandos SQL – DML - Desafio • Q5. Faça o produto cartesiano, seguido de projeção de Empregados X Departamento retornando a matrícula do empregado e o nome do departamento SELECT empregado.matricula, departamento.nome FROM empregado, departamento WHERE empregado.codigoDepertamento = departamento.codigoDepartamento; A cláusula FROM realiza o produto cartesiano - Departamento.nomeé especificado para não haver confusão com o atributo nome de empregado - Empregados são relacionados com outros departamentos além daquele em que trabalham(problema resolvido no WHERE)
Comandos SQL – DML - Desafio • Q6. Selecione o nome e o endereço de todos os empregados que trabalham no departamento de ‘Produção’
Comandos SQL – DML - Desafio • Q6. Selecione o nome e o endereço de todos os empregados que trabalham no departamento de produção SELECT e.nome, e.endereco FROM empregado e, departamento d WHERE d.nome = 'Produção' AND d.codigoDepartamento= e.codigoDepartamento;
Comandos SQL – DML - Exemplos • Q7. Para cada projeto em ‘Fortaleza’, liste o código do projeto, o departamento que controla o projeto e o nome do gerente com endereço e salário
Comandos SQL – DML - Exemplos • Q7. Para cada projeto em ‘Fortaleza’, liste o código do projeto, o departamento que controla o projeto e o nome do gerente com endereço e salário SELECT p.codigoProjeto, d.nome, e.nome, e.endereco, e.salario FROM projeto p, departamento d, empregado e WHERE p.codigoDepartamento= d.codigoDepartamento AND d.matriculaGerente= e.matricula AND p.local = 'Fortaleza';
Comandos SQL – DML - Exemplos • Q8. Para cada empregado, recupere seu nome e o nome do seu supervisor
Comandos SQL – DML - Exemplos • Q8. Para cada empregado, recupere seu nome e o nome do seu supervisor SELECT e.nome, s.nome FROM empregado e s WHERE s.matricula = e.matriculaSupervisor;
Comandos SQL – DML - Exemplos - Q9. Selecione todos os atributos de todos os empregados do departamento ‘Pessoal’
Comandos SQL – DML - Exemplos - Q9. Selecione todos os atributos de todos os empregados do departamento ‘Pessoal’ SELECT * FROM empregado e, departamento d WHERE d.nome = 'Pessoal' AND d.codigoDepartamento= e.codigoDepartamento;
Comandos SQL – DML - Exemplos - Q10. Recupere os salários dos empregados
Comandos SQL – DML - Exemplos - Q10. Recupere os salários dos empregados SELECT salario FROM empregado;
Comandos SQL – DML - Exemplos • Algumas vezes surgem duplicatas como resposta a uma query. Podemos eliminá-las usando o comando DISTINCT na cláusula SELECT - Q11. Selecione os diferentes salários pagos pela empresa aos empregados
Comandos SQL – DML - Exemplos • Algumas vezes surgem duplicatas como resposta a uma query. Podemos eliminá-las usando o comando DISTINCT na cláusula SELECT - Q11. Selecione os diferentes salários pagos pela empresa aos empregados SELECT DISTINCT salario FROM empregado;
Comandos SQL – DML - Exemplos • Q12. Liste todos os nomes de projetos que envolvem o empregado ‘Silva’ como trabalhador
Comandos SQL – DML - Exemplos • Q12. Liste todos os nomes de projetos que envolvem o empregado ‘Silva’ como trabalhador SELECT p.nome FROM projeto p, alocação a, empregado e WHERE p.codigoProjeto = a.codigoProjeto AND e.matricula = a.matricula AND e.nome = 'Silva';
Comandos SQL – DML - Exemplos • Q13. Liste todos os nomes de projetos que envolvem o empregado ‘Silva’ como gerente do departamento que controla o projeto
Comandos SQL – DML - Exemplos • Q13. Liste todos os nomes de projetos que envolvem o empregado ‘Silva’ como gerente do departamento que controla o projeto SELECT p.nome FROM projeto p, departamento d, empregado e WHERE d.codigoDepartamento = p.codigoDepartamento AND d.matriculaGerente = e.matricula AND e.nome = 'Silva‘;
Comandos SQL – DML - Exemplos • SQL implementa a operação UNIAO da álgebra relacional. É requerido que as relações sejam compatíveis de união - Q14. Liste todos os nomes de projetos que envolvem o empregado ‘Silva’ como trabalhador ou como gerente do departamento que controla o projeto
Comandos SQL – DML - Exemplos - Q14. (SELECT p.nome FROM projeto p, departamento d, empregado e WHERE d.codigoDepartamento= p.codigoDepartamento AND d.matriculaGerente= e.matricula AND e.nome = 'Silva') UNION (SELECT p.nome FROM projeto p, alocação a, empregado e WHERE p.codigoProjeto= a.codigoProjeto AND e.matricula = a.matricula AND e.nome = 'Silva');
Comandos SQL - DML • • Exercício: • Defina as tabelas dos slides 3 e 4 usando SQL; • Crie scripts para inserir registros em todas as tabelas; • 15 funcionários (4 supervisores) • 5 dependentes • 6 departamentos • 8 projetos • Testes todas as consultas que foram apresentadas em aula.