Buscar

Introdução ao SQL

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Banco de Dados
Structured Query Language (SQL)
3
 Livros Texto : Introdução a Sistemas de Banco de Dados - Date
 Sistemas de Banco de Dados – Korth & Silberschatz 		Sistemas de Banco de Dados Fundamentos e 			Aplicações – Elmasri & Navathe
		
Structured Query Language - Slide ‹nº›
1
SQL 
 Manipulação de Dados
	
	SELECT/ORDER BY 
	Classifica o resultado da consulta ( em ordem ascendente, caso nada seja especificado)
Itens especificados no ORDER BY não precisam aparecer na lista da seleção
Com ORDER BY nulos são 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 ‹nº›
2
SQL 
 Manipulação de Dados
FUNÇÃO DE AGREGAÇÃO e AGRUPAMENTO
Funções comuns aplicadas a coleções de valores numérico, incluem SUM(soma), AVG(média), MAX (máximo) e MIN (mínimo);
Função COUNT é utilizada para contagem de tuplas
Função SUM e AVG só funcionam com valores numéricos;
 
Utilizadas no SELECT e na cláusula HAVING;
Structured Query Language - Slide ‹nº›
3
SQL 
 Manipulação de Dados
FUNÇÃO DE AGREGAÇÃO
Não 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 ‹nº›
4
SQL 
 Manipulação de Dados
	
	FUNÇÃO DE AGREGAÇÃO - COUNT 
	Soma o número de linhas resultante de uma condição estabelecida. 
Determinar o número de linhas da tabela
	select count(*) from empregado
Número de valores não nulos de um atributo
	select count(atributo) from empregado
 
Structured Query Language - Slide ‹nº›
5
SQL 
 Manipulação de Dados
	
	FUNÇÃO DE AGREGAÇÃO – MAX/ MIN 
Determinar o maior valor
select max(salario) from empregado
Determina o menor valor
	
	 select min(salario) from empregado
 
Structured Query Language - Slide ‹nº›
6
SQL 
 Manipulação de Dados
	
	FUNÇÃO DE AGREGAÇÃO – SUM/AVG 
Determinar o somatório dos valores da coluna especificada
select sum(salario) from empregado where coddep = 4
Determina a média dos valores da coluna especificada
	
	 select avg(salario) from empregado where funcao = ‘analista’
 
Structured Query Language - Slide ‹nº›
7
SQL 
 Manipulação de Dados
	
	FUNÇÃO DE AGREGAÇÃO – DISTINCT
Opcional com sum, avg e count;
Não permitida com min, max e count (*);
Permitida com count (atributo);
Usado apenas com atributos, não com expressões aritméticas
	
	Média dos salarios distintos
	 select avg(distinct salario) from empregado 
	Conta as funções distintas
 	Select count (distinct funcao) from empregado
 
Structured Query Language - Slide ‹nº›
8
SQL 
 Manipulação de Dados
	
	FUNÇÃO DE AGREGAÇÃO
Funções de agregação, com exceção do COUNT(*), ignoram valores nulos;
SUM e AVG só funcionam com valores numéricos;
 Retorna apenas uma linha (sem GROUP BY );
Structured Query Language - Slide ‹nº›
9
SQL 
 Manipulação de Dados
	FUNÇÃO DE AGRUPAMENTO - SELECT/GROUP BY
Divide os dados em grupos;
Normalmente utilizada com uma função de agregação na lista de seleção;
Os valores nulos na coluna do group by são 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 ‹nº›
10
SQL 
 Manipulação de Dados
	
	SELECT/GROUP BY/HAVING
	
	HAVING estabelece condições para a sentença 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 ‹nº›
11
SQL 
 Manipulação de Dados
	Exercícios
	
	1. Qual é a média de salários 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 média de horas trabalhadas em projetos destes funcionários.
	
	5. Quantos empregados existem por funcao ?
	
Structured Query Language - Slide ‹nº›
12
SQL 
 Manipulação de Dados
	Exercícios
	
	6. Qual o número 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 funcionários trabalharam nele e qual a valor minimo e máximo do número de horas trabalhadas em cada projeto.	
Structured Query Language - Slide ‹nº›
13
SQL 
 Manipulação de Dados
	Exercícios
	
	11. Sem utilizar AVG calcule a média de sálario 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 número 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 ‹nº›
14
SQL 
 Manipulação de Dados
	Junções
	
	Pode-se utilizar tabelas do mesmo banco ou de banco diferentes;
	
	Atributos comparados devem ter valores similares;
	Valores nulos não participam da operação de junção;
	Os atributos na condição de junção não precisam estar na lista de seleção
	Select e. nome, d.nome from empregado e, departamento d
			where codepart = cod 
	
Structured Query Language - Slide ‹nº›
15
SQL 
 Manipulação de Dados
	Junções
	
	Recupera dados de duas ou mais tabelas;
	Combina tabelas através da correspondência de valores de linhas em cada tabela;
	Qualificar os atributos que têm o mesmo nome, usando o nome do atributo precedido pelo nome da tabela; Ex: tabela.atributo
	 	
Structured Query Language - Slide ‹nº›
16
SQL 
 Manipulação de Dados
	Junções
	
	Idênticas
 Os atributos de junção são do mesmo tipo e fazem parte de um relacionamento entre as tabelas. (integridade referencial, chaves primária e estrangeira).
Não idênticas
 Os atributos de junção podem não ser do mesmo tipo e nem fazer parte de um relacionamento entre as tabelas.
 Muito utilizada para associar o resultado de uma função de agregação com outras tabelas.
	
Structured Query Language - Slide ‹nº›
17
SQL 
 Manipulação de Dados
	Exercícios
	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 ‹nº›
18
SQL 
 Manipulação de Dados
	Junções – Expressão JOIN 
	SQL2 - Possibilidade de colocar na cláusula FROM a especificação da junção 
	[CROSS, NATURAL, INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER] JOIN
 Cross Join – Produto cartesiano
	Natural Join – Junção Natural - Junta tabelas sem precisar declarar a condição seleção. Para isso as relações devem possuir atributos com mesmo nome. Será executada uma igualdade para cada par de atributos com o mesmo nome. 
Structured Query Language - Slide ‹nº›
19
SQL 
 Manipulação de Dados
	Junções – Expressão JOIN 
	Inner Join – Junção Interna - Padrão para join. Junta tabelas a partir de uma condição especificada. Uma tupla será incluída no resultado somente se existir uma tupla que combine na outra relação.
	
 	Outer Join – Junção Externa - Junta tabelas a partir de uma condição especificada. Uma tupla será incluída no resultado se existir uma tupla que combine na outrarelação, caso não combine, a tupla será incluída para a relação sinalizada (esquerda ou direita) e os atributos da outra relação serão preenchidos com nulo.
	LEFT OUTER JOIN – Junção externa à direita
	RIGHT OUTER JOIN – Junção externa à esquerda
	FULL OUTER JOIN – Junção externa completa
Structured Query Language - Slide ‹nº›
20
SQL 
 Manipulação de Dados
	Junções – Expressão JOIN 
	
 	Produto cartesiano
	
	SELECT * FROM departamento, empregado;
	pode ser : 
	SELECT * FROM departamento CROSS JOIN empregado;
	
Structured Query Language - Slide ‹nº›
21
SQL 
 Manipulação de Dados
	Junções interna – Expressão INNER JOIN 
	
	Selecione o nome e função 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 ‹nº›
22
SQL 
 Manipulação de Dados
	Junções interna – Expressão INNER JOIN 
	
	Para os projetos concluídos, liste o número 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 ‹nº›
23
SQL 
 Manipulação de Dados
	
	
	Na junção interna (inner join) uma tupla é incluída no resultado somente se as tuplas das duas relações combinarem. 
	
	SELECT empregado.nome, dependente. nome 
 FROM (empregado JOIN dependente ON empregado.mat = dependente.mat)
	Neste caso os empregados sem dependentes não aparecerão
	
		
Structured Query Language - Slide ‹nº›
24
SQL 
 Manipulação de Dados
	Junções externas – Expressão OUTER JOIN 
	No junção externa (outer join) as tuplas que não atendem a condição aparecerão com os atributos da relação indicada (ou right ou left ou full) e com os atributos da outra relação nulos.
	
	
	SELECT empregado.nome, dependente. nome 
 FROM (empregado LEFT OUTER JOIN dependente ON empregado.mat = dependente.mat)
	Neste caso todos os empregados aparecerão, nos empregados sem dependentes o nome do dependente ficará nulo.
	
		
Structured Query Language - Slide ‹nº›
25
SQL 
 Manipulação de Dados
	Exercícios
	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 salário de seus empregados, ordenado por total de salário;
	3.Recupere o matrícula, nome e salário total (salário + comissão) de todos os empregados que ganham mais que seu gerente; 
	
Structured Query Language - Slide ‹nº›
26
SQL 
 Manipulação de Dados
	Exercícios
	4. Selecione os nomes e funções dos empregados que trabalham no projeto Sistema de Pagamento e são do departamento Informática; 
	5. Mostre para cada nome de departamento, o nome de seu gerente e salário, ordenado por salário em ordem descendente;
	6. Mostre o nome, horas trabalhadas e situação dos projetos que Ana Santos trabalhou. 
	7. Calcule o salário mais comissão de todos os funcionarios do departamento Informática que têm funcao Analista;
	
Structured Query Language - Slide ‹nº›
27
SQL 
 Manipulação 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 têm 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 estão envolvidos.
	
Structured Query Language - Slide ‹nº›
28

Continue navegando

Outros materiais