Prof.: Bruno Rafael de Oliveira Rodrigues

Slides:



Advertisements
Apresentações semelhantes
3.6) Utilização de várias tabelas
Advertisements

O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Banco de Dados Prof. Antonio.
SQL Avançado Continuação
SQL Structured Query Language (continuação)
SQL Structured Query Language (continuação)
TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula /08/2011 Professor Leomir J. Borba- –
Prof.: Bruno Rafael de Oliveira Rodrigues
Prof.: Bruno Rafael de Oliveira Rodrigues
Banco de Dados Bruno Rafael de Oliveira Rodrigues.
Prof. Bruno Rafael de Oliveira Rodrigues
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone: 9531 – 7555.
Visões Marilde Santos.
SQL – Comandos de Agregação
SQL – Consultas Aninhadas e Agregação Profa. Sandra de Amo Capitulo 5 – Livro Texto Database Management Systems Ramakrishnan - Gehrke.
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
SQL – DML Consultas envolvendo relacionamentos entre tabelas
Ordenação de Resultados
Operadores Especiais da SQL
Introdução à Engenharia da Computação
Oficina sobre banco de dados
SCC Bancos de Dados e Suas Aplicações
SCC Bancos de Dados e Suas Aplicações
Eduardo Costa Gabriel Cypriano Rodrigo Calhau
Banco de Dados SQL 2 Profa. Ceça.
Banco de dados Profª Kelly Medeiros.
Equipe de monitoria Aula prática 2. Apresentação do caso de estudo Conceitual Lógico Algumas informações iniciais Consultas e exercícios Surpresa... =)
Query Tuning Lílian Simão Oliveira.
Comandos de SQL Excel VBA II.
SQL Álvaro Vinícius de Souza Coêlho
Cronograma Formato do Comando SELECT – 1ª Seção Uso de Funções (DATE_FORMAT, DAY, MONTH, NOW, CONCAT, FORMAT, COUNT, AVG, MAX, MIN e FORMAT) AS DISTINCT.
BANCO DE DADOS UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Design Patterns / Acesso ao banco de dados (java.sql)
Tuning Lílian Simão Oliveira.
Banco de Dados Aplicado ao Desenvolvimento de Software
Otimização de Consultas em SQL Planos de Execução
Especialização em Tecnologia da Informação
Oracle 9i: SQL e PL/SQL Bruno Celso Cunha de Freitas
Desenvolvendo um script SQL
Treinamento sobre SQL.
QBE e QUEL Ana Carolina Salgado Fernando Fonseca Valéria Times.
Baseado no material do Professor Raul Paradeda
Comandos SQL.
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Treinamento SQL Server
SQL Server Comando PIVOT.
AULA DE DÚVIDAS 9 de Abril de Especialização  Simplifica-se quando:  especialização é disjunta e  especialização é total e  não há relações.
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
Linguagem SQL Prof. Juliano.
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
1 Structured Query Language (SQL) 4 SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.
Subconsulta na Cláusula FROM
Aula 3 – Conceitos de banco de dados relacionais
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Daniel Paulo SQL Módulo I Daniel Paulo
Daniel Paulo SQL Módulo I Daniel Paulo
Recuperação de Dados Banco de Dados Carina Farias
VBA – Visual Basic para Aplicativos
UCSal – Bacharelado em Informática
Linguagem de definição de dados - SQL
SELECT Professor: Virgílio Fries Müller www. vfm.com.br
Banco de Dados Introdução à Linguagem SQL – Junção Manipulação com 3 Tabelas ou + em relacionamentos n/1 Esta aula é baseada em material produzido pelo.
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
José Antônio da Cunha CEFET - RN José Antônio -
Programação para Internet Aula 12 SQL (Comandos de Consulta ao BD)
José Antônio da Cunha 2/6/2016 José Antônio - CEFET-RN 1 Disciplina: Banco de Dados.
José Antônio da Cunha 3/6/2016 José Antônio - CEFET-RN 1 Copyright © Dale Carnegie & Associates, Inc.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Transcrição da apresentação:

Prof.: Bruno Rafael de Oliveira Rodrigues Banco de Dados Prof.: Bruno Rafael de Oliveira Rodrigues

Funcionario Cod_Funcionario Nome_Funcionario Cidade Cod_Setor Cargo Para melhor compreensão dessa aula monte as tabelas abaixo povoando-as: Funcionario Cod_Funcionario Nome_Funcionario Cidade Cod_Setor Cargo Salario Setor Cod_Setor Nome_Setor

Consulta com duas tabelas ou mais tabelas select Funcionario.Nome_Funcionario, Setor.Nome_Setor from Funcionario, Setor where Funcionario.Cod_Setor = 1 and Setor.Cod_Setor=1;

Group By A cláusula GROUP BY organiza dados em grupos, produzindo sumários. Exemplos: select cargo, count(*) from funcionario group by cargo; select Nome_Funcionario, Cidade from funcionario group by Cidade, Nome_Funcionario; select cidade, avg(salario) from funcionario group by cidade;

Group By x Order By ORDER BY é usado para ordenar um conjunto de informações sendo ela exposta crescente ou decrescente. O GROUP BY é usando para agrupar dados comuns, ou seja, informações repetidas.

Group By e Order By podem ser usados juntos select cidade, avg(salario) from funcionario group by cidade order by cidade;

Clausula Having A cláusula HAVING restringe os resultados do GROUP BY. É aplicada a cada grupo da tabela agrupada, de forma parecida como a cláusula WHERE é aplicada à lista de seleção. Exemplo: select cidade, avg(salario) from funcionario where cidade <> 'Pirapora' group by cidade having avg(salario) > 3000 order by cidade; select cargo, (*) from funcionario group by cargo having count(*) > 2;

Questionário 1- As instruções SQL a seguir funcionarão? a) SELECT SUM(SALARIO), FUNC_ID FROM FUNCIONARIO GROUP BY 1 AND 2; B)SELECT FUNC_ID, MAX(SALARIO) FROM FUNCIONARIO GROUP BY SALARIO, FUNC_ID; C) SELECT FUNC_ID, COUNT(SALARIO) FROM FUNCIONARIO ORDER BY FUNC_ID, GROUP BY SALARIO;

Verdadeiro ou Falso: Quando usa a clausula HAVING, você também tem que usar a cláusula Group By. A instrução SQL a seguir retorna um total de salarios por grupo: Select SUM(Salario) from funcionario; As colunas selecionadas devem aparecer na clausula Group by na mesma ordem A clausula HAVING informa à clausula GROUP BY quais grupos deverão ser incluidos.

Respostas: 1 – a) Não, essa instrução não funcionará. O operador AND na clausula Group By não está no local correto e não é possível usar um número inteiro na clausula Group By. A sintaxe correta é: SELECT SUM(SALARIO), FUNC_ID FROM FUNCIONARIO GROUP BY SALARIO, FUNC_ID; b) Sim, a instrução funcionará.

c) Não, essa instrução não funcionará c) Não, essa instrução não funcionará. As clausulas ORDER BY e GROUP BY não estão corretas. Além disso, a coluna FUNC_ID é obrigatória na clausula GROUP BY . Forma correta: SELECT FUNC_ID, COUNT(SALARIO) FROM FUNCIONARIO GROUP BY FUNC_ID ORDER BY FUNC_ID;

Verdadeiro ou falso falso, a clausula HAVING pode ser usada sem a cláusula GROUP BY. Exemplo: => select avg(preco) from produtos having count(*)>=5; b) Falso, a instrução não pode retornar um total de salário por grupo porque não foi incluída a clausula GROUP BY. c) Falso, a ordem das colunas na cláusula SELECT pode ser diferente da existente na cláusula GROUP BY d) Verdadeiro

Atividades Complementares O que faz as clausulas group by? E o que ela tem de diferente da order by? Quando se usa clausula Having? Como selecionar mais de duas tabelas em uma mesma consulta? O que faz a consulta: select tipo_produto, avg(preco_unitario) from produtos group by tipo_produto having avg(preco_unitario)>=200?

Produto Pedido CodProduto Produto Tipo_Produto PrecoUn 1 TV 21’’ LED Eletrodomestico R$ 599,00 2 DVD R$ 99,00 3 Sofa 3 lugares Movel R$ 400,00 4 Rack R$ 299,00 5 Cama Box R$ 999,00 NumPedido CodCliente CodProduto DataPedido QtdProduto 1 2 20/05/2011 3 5 25/05/2011 4 21/05/2011 CodCliente NomeCliente Endereco 1 Rafael Guimarães Rua A nº14 2 Thiago Moreira Rua B nº15 3 Samira Martins Rua J nº112 Cliente

Prática Usando as tabelas de Cliente, Produtos e Pedidos*. Escreva as consultas para: Agrupar a quantidade de produtos por tipo do produto. Fazer uma consulta para saber quem comprou o produto de codigo 2 e qual produto é este. Consulte o produto com sua media de preço agrupada por tipo do produto tendo o preço do produto maior que 100.

Junção de Tabelas Uma junção combina duas ou mais tabelas para recuperar dados de múltiplas tabelas

Junção de Igualdade (Equijoins) Também conhecida como Inner Join, efetua junção de duas tabelas com uma coluna comum na qual cada uma é normalmente a chave primária. Ex.: Select funcionario.cod_setor, setor.nome_setor from funcionario, setor where funcionario.cod_setor=setor.cod_setor

Alias Nomes alternativos para as tabelas. Exs.: Select f.cod_setor, s.nome_setor from funcionario f, setor s where f.cod_setor=s.cod_setor Select f.*, s.nome_setor from funcionario f, setor s where f.cod_setor=s.cod_setor

Outras Junções Junções Naturais: idêntica a equijoin, a diferença é que ela elimina colunas repetidas nas colunas cujas junções são efetuadas. Junções de Desigualdade: efetua junção de duas ou mais tabelas com base no valor de uma coluna especificada que não seja igual ao valor de uma outra coluna especificada em uma outra tabela. Junções Externas: é usada para retornar todas as linhas que existem em uma tabela, embora não existam linhas correspondentes na tabela unida. Auto-junções: usada para efetuar junção de uma tabela a si mesma, como se a tabela fosse duas tabelas, renomeando temporariamente, pelo menos, uma tabela na instrução SQL.

Usando uma tabela Base table Usada para efetuar junção de uma ou mais tabelas que contenham colunas comuns ou para efetuar junção de tabelas que não possuam tabelas comuns.

Use as tabelas abaixo para o próximo exemplo Tabela Detalhes_Vendas Tabela Produtos Cod_Relatorio Cod_Produto Qtd 1101 101 1100 102 300 1102 103 1700 1103 104 500 1104 2500 1105 2000 700 Cod_Produto Nome_Produto Preco_Unt 101 Melão 1.50 102 Morango 2.49 103 Maça 2.99 104 Limão 1.20

Subconsultas São consultas embutidas dentro de outras. Pode-se utilizar essas duas tabelas para pesquisar por nomes de produtos cujo volume de vendas seja maior ou igual a 1000. Ex.: Select * from produtos where cod_produto in (select cod_produto from detalhes_vendas where qtd>=1000)

Subconsulta Correlata É uma subconsulta que esteja contida dentro de outra subconsulta. Ex.: Select * from detalhes_vendas u where qtd > (select avg(qtd) from detalhes_vendas where cod_produto=u.cod_produto)

FAQ 1 - Quando tabelas apresentam junções, é necessário que as junções sejam efetuadas na mesma ordem. Por que? 2 – Quando usa-se uma base table para efetuar junção de tabelas não-relacionadas, tem-se que selecionar alguma coluna da tabela base. 3 – Pode-se efetuar junção com mais de uma coluna entre tabelas? 4 – Em que parte da instrução SQL as condições de junção estão localizadas? 5 – Que tipo de junção usa-se para avaliar a igualdade entre as linhas de tabelas relacionadas? 6 – Qual a função de uma subconsulta quando usada com uma instrução select? 7- O que aconteceria com ao executar a instrução: Delete from funcionario where func_id in (select func_id from tabela_pagamento) 8 – Encontre o detalhe de venda para frutas com preços unitários maiores ou iguais a 300. 9 – Obtenha o volume médio de vendas por produto e encontre itens que tenham vendas abaixo da média.

Respostas: 1 – Não, elas não precisam necessariamente aparecer na mesma ordem. 2 – Não, a utilização de uma Base Table para efetuar junção de tabelas não-relacionadas não faz com que seja obrigatório selecionar colunas na tabela base. 3 – Sim, para algumas consultas pode ser que seja necessário efetuar junção de mais de uma coluna por tabela para criar um relacionamento completo entre linhas de dados de tabelas associadas. 4 – As condições de junção estão localizadas na cláusula where. 5 – Equijoin 6 – A principal função de uma subconsulta quando usada com uma instrução SELECT é retornar os dados que a consulta principal usar para resolver a consulta 7 – Todas as linhas que fossem recuperadas a partir da tabela tabela_pagamento seriam usadas por DELETE para removê-las da tabela funcionario. 8 – Select * from detelhes_vendas where cod_produto in (select cod_produto from produto where preco_unt >= 300) 9 – Select * from detalhes_vendas u where qtd < (select avg(qtd) from detalhes_vendas where cod_produto = u.cod_produto);