Upload
internet
View
123
Download
0
Embed Size (px)
Citation preview
1
Comandos SQL
2
Comandos SQL - DML
3
• 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
4
Comandos SQL - DML
• Os exemplos serão elaborados para o esquema de dados a seguir:
5
• Operações de manipulação:
- SELECT
- INSERT
- UPDATE
- DELETE
Comandos SQL - DML
6
• O comando SELECT: forma básicaSELECT <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
7
• Q1. Obtenha todos os atributos de todos os empregados
Comandos SQL – DML - Desafio
8
• Q1. Obtenha todos os atributos de todos os empregadosSELECT *
FROM empregado;
Comandos SQL – DML - Desafio
9
Comandos SQL – DML - Desafio
• Q2. Selecione as matrículas dos empregados
10
• Q2. Selecione as matrículas dos empregadosSELECT matricula FROM empregado;
Comandos SQL – DML - Desafio
11
• Q3. Obtenha o salário do empregado ‘José’
Comandos SQL – DML - Desafio
12
• Q3. Obtenha o salário do empregado ‘José’SELECT salario FROM empregado WHERE nome = 'José';
Comandos SQL – DML - Desafio
13
• Q4. Selecione todos os atributos de todos os empregados do departamento código 5
Comandos SQL – DML - Desafio
14
• Q4. Selecione todos os atributos de todos os empregados do departamento código 5SELECT * FROM empregado WHERE codigoDepartamento = 5;
Comandos SQL – DML - Desafio
15
• 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
16
• 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
17
• 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
18
• Q6. Selecione o nome e o endereço de todos os empregados que trabalham no departamento de ‘Produção’
Comandos SQL – DML - Desafio
19
• 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 - Desafio
20
• 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
21
• 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
22
• Q8. Para cada empregado, recupere seu nome e o nome do seu supervisor
Comandos SQL – DML - Exemplos
23
• 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
24
- Q9. Selecione todos os atributos de todos os empregados do departamento ‘Pessoal’
Comandos SQL – DML - Exemplos
25
- 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
26
- Q10. Recupere os salários dos empregados
Comandos SQL – DML - Exemplos
27
- Q10. Recupere os salários dos empregados
SELECT salario FROM empregado;
Comandos SQL – DML - Exemplos
28
• 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
29
• 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
30
• Q12. Liste todos os nomes de projetos que envolvem o empregado ‘Silva’ como trabalhador
Comandos SQL – DML - Exemplos
31
• 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
32
• Q13. Liste todos os nomes de projetos que envolvem o empregado ‘Silva’ como gerente do departamento que controla o projeto
Comandos SQL – DML - Exemplos
33
• 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
34
• SQL implementa a operação UNIAO da álgebra relacional. É requerido que asrelaçõ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
35
- 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 - Exemplos
36
• Exercício:
1. Defina as tabelas dos slides 3 e 4 usando SQL;
2. Crie scripts para inserir registros em todas as tabelas;• 15 funcionários (4 supervisores)• 5 dependentes• 6 departamentos• 8 projetos
3. Testes todas as consultas que foram apresentadas em aula.
Comandos SQL - DML