Académique Documents
Professionnel Documents
Culture Documents
Structured Query
Language (SQL)
3
SQL
Manipulao de Dados
SELECT/ORDER BY
Classifica o resultado da consulta ( em ordem ascendente, caso
nada seja especificado)
Itens especificados no ORDER BY no precisam aparecer na
lista da seleo
Com ORDER BY nulos so listados primeiros.
select [distinct] lista from tabela
[where condicao]
[order by {coluna | expressao} [asc|desc]]
Select matricula, nome from empregado order by nome
Select nome, salario from empregado order by salario desc
Structured Query Language - Slide 2
SQL
Manipulao de Dados
FUNO DE AGREGAO e AGRUPAMENTO
Funes comuns aplicadas a colees de valores numrico,
incluem SUM(soma), AVG(mdia), MAX (mximo) e MIN
(mnimo);
Funo COUNT utilizada para contagem de tuplas
Funo SUM e AVG s funcionam com valores numricos;
Utilizadas no SELECT e na clusula HAVING;
SQL
Manipulao de Dados
FUNO DE AGREGAO
No podem ser utilizadas num comando WHERE;
Podem ser aplicados a todas as linhas em uma tabela ou
num grupo de linhas de uma tabela.
select funcao_agregada ([distinct] expressao)
from tabela [where condicoes]
SQL
Manipulao de Dados
FUNO DE AGREGAO - COUNT
Soma o nmero de linhas resultante de uma condio
estabelecida.
Determinar o nmero de linhas da tabela
select count(*) from empregado
Nmero de valores no nulos de um atributo
select count(atributo) from empregado
SQL
Manipulao de Dados
FUNO DE AGREGAO MAX/ MIN
Determinar o maior valor
select max(salario) from empregado
Determina o menor valor
select min(salario) from empregado
SQL
Manipulao de Dados
FUNO DE AGREGAO SUM/AVG
Determinar o somatrio dos valores da coluna especificada
select sum(salario) from empregado where coddep = 4
Determina a mdia dos valores da coluna especificada
select avg(salario) from empregado where funcao = analista
SQL
Manipulao de Dados
FUNO DE AGREGAO DISTINCT
SQL
Manipulao de Dados
FUNO DE AGREGAO
Funes de agregao, com exceo do COUNT(*), ignoram
valores nulos;
SUM e AVG s funcionam com valores numricos;
Retorna apenas uma linha (sem GROUP BY );
SQL
Manipulao de Dados
FUNO DE AGRUPAMENTO - SELECT/GROUP BY
Divide os dados em grupos;
Normalmente utilizada com uma funo de agregao na
lista de seleo;
Os valores nulos na coluna do group by so tratados como
um grupo;
select [distinct] lista from tabela group by expressao
SQL
Manipulao de Dados
SELECT/GROUP BY/HAVING
HAVING estabelece condies para a sentena GROUP BY;
select [distinct] lista from tabela
group by expressao
having condicoes
Select codproj, avg(horas) from Trabalhaem group by
codproj having avg(horas) > 30
SQL
Manipulao de Dados
Exerccios
1. Qual a mdia de salrios dos empregados:
a) por departamento?
b) por funcao?
2. Qual o salario mais baixo e mais alto de cada departamento?
3. Quantos horas cada empregado trabalhou em projetos ?
4. Para os empregado que trabalharam menos de 10 horas por
projeto, calcule a mdia de horas trabalhadas em projetos destes
funcionrios.
5. Quantos empregados existem por funcao ?
Structured Query Language - Slide 12
SQL
Manipulao de Dados
Exerccios
6. Qual o nmero de empregados por departamento?
7. Quantas horas foram gastas por projeto?
8. Quantos horas cada empregado trabalhou em projetos?
9. Quantos salarios distintos existem na tabela de
empregados?
10. Por codigo do projeto recupere quantos funcionrios
trabalharam nele e qual a valor minimo e mximo do nmero
de horas trabalhadas em cada projeto.
Structured Query Language - Slide 13
SQL
Manipulao de Dados
Exerccios
11. Sem utilizar AVG calcule a mdia de slario dos empregados por
departamento.
12. Listar o codigo do departamento e nome de todos os empregados
classificados por codigo do departamento e nome.
13. Qual o nmero de dependentes filhos de sexo feminino?
14. Selecione as matriculas dos empregados que trabalham em mais
de 2 projetos.
15. Selecione os projetos onde trabalham mais de 3 empregados.
Structured Query Language - Slide 14
SQL
Manipulao de Dados
Junes
Pode-se utilizar tabelas do mesmo banco ou de banco diferentes;
Atributos comparados devem ter valores similares;
Valores nulos no participam da operao de juno;
Os atributos na condio de juno no precisam estar na lista de
seleo
Select e. nome, d.nome from empregado e, departamento d
where codepart = cod
SQL
Manipulao de Dados
Junes
Recupera dados de duas ou mais tabelas;
SQL
Manipulao de Dados
Junes
Idnticas
Os atributos de juno so do mesmo tipo e fazem parte de
um relacionamento entre as tabelas. (integridade referencial,
chaves primria e estrangeira).
No idnticas
Os atributos de juno podem no ser do mesmo tipo e nem
fazer parte de um relacionamento entre as tabelas.
Muito utilizada para associar o resultado de uma funo de
agregao com outras tabelas.
SQL
Manipulao de Dados
Exerccios
1. Mostre nome do departamento e todos os seus
empregados classificado por nome do departamento e
nome empregado;
SQL
Manipulao de Dados
Junes Expresso JOIN
SQL2 - Possibilidade de colocar na clusula FROM a
especificao da juno
[CROSS, NATURAL, INNER, LEFT OUTER, RIGHT OUTER,
FULL OUTER] JOIN
Cross Join Produto cartesiano
Natural Join Juno Natural - Junta tabelas sem precisar
declarar a condio seleo. Para isso as relaes devem
possuir atributos com mesmo nome. Ser executada uma
igualdade para cada par de atributos com o mesmo nome.
Structured Query Language - Slide 19
SQL
Manipulao de Dados
Junes Expresso JOIN
Inner Join Juno Interna - Padro para join. Junta tabelas
a partir de uma condio especificada. Uma tupla ser includa
no resultado somente se existir uma tupla que combine na
outra relao.
Outer Join Juno Externa - Junta tabelas a partir de uma
condio especificada. Uma tupla ser includa no resultado se
existir uma tupla que combine na outra relao, caso no
combine, a tupla ser includa para a relao sinalizada
(esquerda ou direita) e os atributos da outra relao sero
preenchidos com nulo.
LEFT OUTER JOIN Juno externa direita
RIGHT OUTER JOIN Juno externa esquerda
FULL OUTER JOIN Juno externa completa
Structured Query Language - Slide 20
SQL
Manipulao de Dados
Junes Expresso JOIN
Produto cartesiano
SELECT * FROM departamento, empregado;
pode ser :
SELECT * FROM departamento CROSS JOIN empregado;
SQL
Manipulao de Dados
Junes interna Expresso INNER JOIN
Selecione o nome e funo dos empregados que trabalham no
departamento de Pesquisa
SELECT empregado. nome, empregado.funcao FROM
(empregado INNER JOIN departamento ON
empregado.codepart = departamento.cod )
WHERE departamento.nome = Pesquisa;
semelhante a :
SELECT empregado. nome, empregado.funcao FROM
empregado, departamento WHERE empregado.codepart =
departamento.cod
AND departamento.nome = Pesquisa;
Structured Query Language - Slide 22
SQL
Manipulao de Dados
Junes interna Expresso INNER JOIN
Para os projetos concludos, liste o nmero do projeto,
departamento controlador e o nome do gerente do
departamento.
SELECT projeto.cod, departamento.nome, empregado. nome
FROM ((projeto JOIN departamento ON projeto.coddepar =
departamento.cod )
JOIN empregado on departamento.matgerente=empregado.mat)
WHERE projeto.situacao=Concluido;
semelhante a :
SELECT projeto.cod, departamento.nome, empregado. nome
FROM projeto, departamento, empregado
WHERE projeto.coddepar = departamento.cod AND
departamento.matgerente=empregado.mat AND
projeto.situacao=Concluido;
Structured Query Language - Slide 23
SQL
Manipulao de Dados
SQL
Manipulao de Dados
Junes externas Expresso OUTER JOIN
No juno externa (outer join) as tuplas que no atendem a
condio aparecero com os atributos da relao indicada (ou
right ou left ou full) e com os atributos da outra relao nulos.
SELECT empregado.nome, dependente. nome
FROM (empregado LEFT OUTER JOIN dependente ON
empregado.mat = dependente.mat)
Neste caso todos os empregados aparecero, nos empregados
sem dependentes o nome do dependente ficar nulo.
SQL
Manipulao de Dados
Exerccios
1. Listar para cada empregado, o nome de todos os seus
dependentes e sexo dos dependentes, ordenados por sexo do
dependente;
2.Mostre para cada nome de departamento o total de salrio
de seus empregados, ordenado por total de salrio;
3.Recupere o matrcula, nome e salrio total (salrio +
comisso) de todos os empregados que ganham mais que seu
gerente;
SQL
Manipulao de Dados
Exerccios
4. Selecione os nomes e funes dos empregados que
trabalham no projeto Sistema de Pagamento e so do
departamento Informtica;
5. Mostre para cada nome de departamento, o nome de seu
gerente e salrio, ordenado por salrio em ordem
descendente;
6. Mostre o nome, horas trabalhadas e situao dos projetos
que Ana Santos trabalhou.
7. Calcule o salrio mais comisso de todos os funcionarios do
departamento Informtica que tm funcao Analista;
Structured Query Language - Slide 27
SQL
Manipulao de Dados
Exemplos
8. Selecionar todos os projetos em andamento com seus
empregados em ordem de projetos e empregados.
9. Selecionar os empregados e quantidade de dependentes
para empregados que tm mais de 2 dependentes.
10. Selecionar todos os empregados com seus dependentes.
11. Selecione o nome de todos os empregados e dos projetos
em que esto envolvidos.