Vous êtes sur la page 1sur 28

Banco de Dados

Structured Query
Language (SQL)
3

Livros Texto : Introduo a Sistemas de Banco de Dados - Date


Sistemas de Banco de Dados Korth & Silberschatz
Sistemas de Banco de Dados Fundamentos e
Aplicaes Elmasri & Navathe
Structured Query Language - Slide 1

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;

Structured Query Language - Slide 3

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]

Structured Query Language - Slide 4

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

Structured Query Language - Slide 5

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

Structured Query Language - Slide 6

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

Structured Query Language - Slide 7

SQL
Manipulao de Dados
FUNO DE AGREGAO DISTINCT

Opcional com sum, avg e count;


No permitida com min, max e count (*);
Permitida com count (atributo);
Usado apenas com atributos, no com expresses aritmticas

Mdia dos salarios distintos


select avg(distinct salario) from empregado
Conta as funes distintas
Select count (distinct funcao) from empregado

Structured Query Language - Slide 8

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 );

Structured Query Language - Slide 9

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

Select codproj, avg(horas) from Trabalhaem group by


codproj
Structured Query Language - Slide 10

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

Structured Query Language - Slide 11

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

Structured Query Language - Slide 15

SQL
Manipulao de Dados
Junes
Recupera dados de duas ou mais tabelas;

Combina tabelas atravs da correspondncia de valores de


linhas em cada tabela;
Qualificar os atributos que tm o mesmo nome, usando o
nome do atributo precedido pelo nome da tabela; Ex:
tabela.atributo

Structured Query Language - Slide 16

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.

Structured Query Language - Slide 17

SQL
Manipulao de Dados
Exerccios
1. Mostre nome do departamento e todos os seus
empregados classificado por nome do departamento e
nome empregado;

2.Recupere os nome departamento, nome empregado e


nome do projeto ordenados por departamento e nome;

Structured Query Language - Slide 18

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;

Structured Query Language - Slide 21

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

Na juno interna (inner join) uma tupla includa no resultado


somente se as tuplas das duas relaes combinarem.
SELECT empregado.nome, dependente. nome
FROM (empregado JOIN dependente ON empregado.mat =
dependente.mat)
Neste caso os empregados sem dependentes no
aparecero

Structured Query Language - Slide 24

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.

Structured Query Language - Slide 25

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;

Structured Query Language - Slide 26

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.

Structured Query Language - Slide 28

Vous aimerez peut-être aussi