A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SQL Server 2012 SQL – Consultas

Apresentações semelhantes


Apresentação em tema: "SQL Server 2012 SQL – Consultas"— Transcrição da apresentação:

1 SQL Server 2012 SQL – Consultas
Bancos de Dados SQL Server 2012 SQL – Consultas

2 SQL - Consultas Elementos Básicos do SQL Agrupamento e Sumarização
Junção de dados de múltiplas tabelas Subqueries

3 Elementos Básicos do SQL
Selecionando dados com o comando SELECT Filtrando Dados Formatando os resultados (Result Sets)

4 Selecionando dados com o comando SELECT
Usando o comando SELECT Especificando as colunas a serem retornadas Usando a cláusula WHERE para especificar as linhas a serem retornadas

5 Usando o comando SELECT
A “Select List” especifica as colunas A cláusula WHERE especifica as linhas A cláusula FROM especifica a tabela Sintaxe Parcial SELECT [ALL | DISTINCT] <select_list> FROM {<table_source>} [,…n] WHERE <search_condition>

6 Especificando as colunas a serem retornadas
USE northwind SELECT employeeid, lastname, firstname, title FROM employees GO employeeid lastname firstname title 1 Davolio Nancy Sales Representative 2 Fuller Andrew Vice President, Sales 3 Leverling Janet 4 Peacock Margaret 5 Buchanan Steven Sales Manager 6 Suyama Michael 7 King Robert 8 Callahan Laura Inside Sales Coordinator 9 Dodsworth Anne

7 Usando a cláusula Where para especificar as linhas retornadas
employeeid lastname firstname title 5 Buchanan Steven Sales Manager USE northwind SELECT employeeid, lastname, firstname, title FROM employees WHERE employeeid = 5 GO

8 Filtragem Usando Operadores de Comparação Comparando Strings
Usando Operadores Lógicos Selecionando Faixas de Valores Usando uma Lista de Valores como critério para busca Selecionando Valores Desconhecidos (Null)

9 Usando Operadores de Comparação
Exemplo 1 USE northwind SELECT lastname, city FROM employees WHERE country = 'USA‘ GO lastname city Davolio Seattle Fuller Tacoma Leverling Kirkland Peacock Redmond Callahan

10 Comparando Strings USE northwind SELECT companyname FROM customers
WHERE companyname LIKE '%Restaurant%‘ GO companyname GROSELLA-Restaurante Lonesome Pine Restaurant Tortuga Restaurante

11 Usando Operadores Lógicos
Exemplo 1 USE northwind SELECT productid, productname, supplierid, unitprice FROM products WHERE (productname LIKE 'T%' OR productid = 46) AND (unitprice > 16.00) GO productid productname supplierid unitprice 14 Tofu 6 23.25 29 Thüringer Rostbratwurst 12 123.79 62 Tarte au sucre 49.3

12 Selecionando uma Faixa de Valores
Exemplo 1 USE northwind SELECT productname, unitprice FROM products WHERE unitprice BETWEEN 10 AND 20 GO productname unitprice Chai 18 Chang 19 Aniseed Syrup 10 Genen Shouyu 15.5 Pavlova 17.45 Sir Rodney’s Scones

13 Usando uma Lista de Valores para busca
Exemplo 1 USE northwind SELECT companyname, country FROM suppliers WHERE country IN ('Japan', 'Italy') GO companyname country Tokyo Traders Japan Mayumi’s Formaggi Fortini s.r.l. Italy Pasta Buttini s.r.l.

14 Buscando Valores Desconhecidos
USE northwind SELECT companyname, fax FROM suppliers WHERE fax IS NULL GO companyname fax Exotic Liquids NULL New Orleans Cajun Delights Tokyo Traders Cooperativa de Quesos ‘Las Cabras’

15 Formatando os Resultados
Ordenando Dados (Sort) Eliminando linhas duplicadas Mudando nomes de colunas Usando Literais

16 Ordenando Dados USE northwind
Exemplo 1 USE northwind SELECT productid, productname, categoryid, unitprice FROM products ORDER BY categoryid, unitprice DESC GO productid productname categoryid unitprice 38 Cote de Blaye 1 43 Ipoh Coffee 2 Chang 63 Vegie-spread 8 Northwoods Cranberry Sauce 61 Sirop d'érable

17 Eliminando linhas duplicadas
country Australia Brazil Canada Denmark Finland France Germany Italy Japan Netherlands Norway Singapore Spain Sweden UK USA Exemplo 1 USE northwind SELECT DISTINCT country FROM suppliers ORDER BY country GO

18 Mudando nomes de colunas
USE northwind SELECT firstname AS First, lastname AS Last ,employeeid AS 'Employee ID:' FROM employees GO First Last Employee ID: Nancy Davolio 1 Andrew Fuller 2 Janet Leverling 3 Margaret Peacock 4 Steven Buchanan 5 Michael Suyama 6 Robert King 7 Laura Callahan 8 Anne Dodsworth 9

19 Usando Literais USE northwind SELECT firstname, lastname
,'Identification number:', employeeid FROM employees GO First Last Employee ID: Nancy Davolio Identification Number: 1 Andrew Fuller Janet Leverling Margaret Peacock Steven Buchanan Michael Suyama Robert King Laura Callahan Anne Dodsworth Identification Number: 2 Identification Number: 3 Identification Number: 4 Identification Number: 5 Identification Number: 6 Identification Number: 7 Identification Number: 8 Identification Number: 9

20 Considerações de Performance
Buscas envolvendo NOT podem reduzir o desempenho de consultas Algumas Buscas envolvendo LIKE podem reduzir o desempenho de consultas Buscas exatas ou por faixas podem aumentar o desempenho de consultas ORDER BY pode reduzir o desempenho de consultas

21 Agrupamento e Sumarização
Selecionando os TOP n Valores Usando Funções de Agregação GROUP BY Fundamentals Usando as cláusulas COMPUTE e COMPUTE BY

22 Selecionando os TOP n Valores
Lista somente as primeiras n linhas do Result Set Order By determina a faixa de valores Retorna empates se WITH TIES é usado USE northwind SELECT TOP 5 orderid, productid, quantity FROM [order details] ORDER BY quantity DESC GO SELECT TOP 5 WITH TIES orderid, productid, quantity Exemplo 1 Exemplo 2

23 Usando Funções de Agregação
Aggregate function Description AVG Average of values in a numeric expression COUNT Number of values in an expression COUNT (*) Number of selected rows MAX Highest value in the expression MIN Lowest value in the expression SUM Total values in a numeric expression STDEV Statistical deviation of all values STDEVP Statistical deviation for the population VAR Statistical variance of all values VARP Statistical variance of all values for the population

24 Usando Funções de Agregação com valores NULL
A maioria das funções de agregação ignora valores Null Função COUNT(*) também conta as linhas com valores Null Exemplo 1 USE northwind SELECT COUNT (*) FROM employees GO Exemplo 2 USE northwind SELECT COUNT(reportsto) FROM employees GO

25 Fundamentos GROUP BY Usando a cláusula GROUP BY
Usando a cláusula GROUP BY com a cláusula HAVING

26 Usando a cláusula GROUP BY
USE northwind SELECT productid, orderid ,quantity FROM orderhist GO USE northwind SELECT productid ,SUM(quantity) AS total_quantity FROM orderhist GROUP BY productid GO productid orderid quantity 1 5 10 2 25 3 15 30 productid total_quantity 1 15 2 35 3 45 Somente linhas que satisfazem a cláusula Where são agrupadas productid total_quantity 2 35 USE northwind SELECT productid ,SUM(quantity) AS total_quantity FROM orderhist WHERE productid = 2 GROUP BY productid GO

27 Usando a cláusula GROUP BY com a cláusula HAVING
USE northwind SELECT productid, orderid ,quantity FROM orderhist GO SELECT productid, SUM(quantity) AS total_quantity FROM orderhist GROUP BY productid HAVING SUM(quantity)>=30 GO productid total_quantity 2 35 3 45 orderid quantity 1 5 10 25 15 30

28 Usando as cláusulas COMPUTE e COMPUTE BY
USE northwind SELECT productid, orderid ,quantity FROM orderhist ORDER BY productid, orderid COMPUTE SUM(quantity) GO USE northwind SELECT productid, orderid, quantity FROM orderhist ORDER BY productid, orderid COMPUTE SUM(quantity) BY productid COMPUTE SUM(quantity) GO productid orderid quantity 1 5 2 10 sum 15 25 35 3 30 45 95 productid orderid quantity 1 5 2 10 25 3 15 30 sum 95

29 Junção de dados de múltiplas tabelas
Usando Aliases (apelidos) para Tabelas Combinando dados de múltiplas Tabelas Combinando múltiplos Result Sets Criando uma Tabela de um Result Set

30 Usando Aliases (apelidos) para Tabelas
Exemplo 1 (sem alias) Exemplo 2 (com alias) USE joindb SELECT buyer_name, sales.buyer_id, qty FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id GO USE joindb SELECT buyer_name, s.buyer_id, qty FROM buyers AS b INNER JOIN sales AS s ON b.buyer_id = s.buyer_id GO

31 Combinando dados de múltiplas Tabelas
Fazendo Inner Joins Fazendo Outer Joins Fazendo Cross Joins Fazendo Joins de mais de Duas Tabelas Fazendo um Join de uma tabela com ela mesma (Self-Join)

32 Fazendo Inner Joins Exemplo 1 sales buyers Result USE joindb
SELECT buyer_name, sales.buyer_id, qty FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id GO Exemplo 1 sales buyer_id prod_id qty 1 4 3 2 5 15 37 11 1003 buyers buyer_name Adam Barr Sean Chai Eva Corets Erin O’Melia Result buyer_name Adam Barr Erin O’Melia Eva Corets buyer_id qty 1 4 3 15 5 37 11 1003

33 Fazendo Outer Joins Exemplo 1 sales buyers Result USE joindb
SELECT buyer_name, sales.buyer_id, qty FROM buyers LEFT OUTER JOIN sales ON buyers.buyer_id = sales.buyer_id GO Exemplo 1 sales buyer_id prod_id qty 1 4 3 2 5 15 37 11 1003 buyers buyer_name Adam Barr Sean Chai Eva Corets Erin O’Melia Result NULL

34 Fazendo Cross Joins Result sales buyers Exemplo 1 USE joindb
SELECT buyer_name, qty FROM buyers CROSS JOIN sales GO Result buyer_name Adam Barr qty 15 5 37 11 1003 Sean Chai Eva Corets ... sales buyer_id prod_id 1 4 3 2 buyers Erin O’Melia Exemplo 1

35 Fazendo Joins de mais de duas tabelas
SELECT buyer_name, prod_name, qty FROM buyers INNER JOIN sales ON buyers.buyer_id = sales.buyer_id INNER JOIN produce ON sales.prod_id = produce.prod_id GO Exemplo 1 produce prod_id prod_name 1 2 3 4 Apples Pears Oranges Bananas 5 Peaches buyers buyer_id buyer_name Adam Barr Sean Chai Eva Corets Erin O’Melia sales qty 15 37 11 1003 Result

36 Fazendo um Self-Join sales b sales a Result Exemplo 3 USE joindb
SELECT a.buyer_id AS buyer1, a.prod_id ,b.buyer_id AS buyer2 FROM sales AS a JOIN sales AS b ON a.prod_id = b.prod_id WHERE a.buyer_id > b.buyer_id GO sales b buyer_id prod_id qty 1 4 3 2 5 15 37 11 1003 sales a Result buyer1 buyer2 Exemplo 3

37 Combinando múltiplos Result Sets
Use o Operador UNION para Criar um único Result Set a partir de múltiplas consultas Cada consulta deve ter: Tipos de dados similares Mesmo número de colunas Colunas na Lista do Select na mesma ordem USE northwind SELECT (firstname + ' ' + lastname) AS name ,city, postalcode FROM employees UNION SELECT companyname, city, postalcode FROM customers GO

38 Criando uma Tabela de um Result Set
Use o comando SELECT INTO Requer um nome exclusivo para a tabela Pode-se criar uma tabela temporária local (#) ou global (##) USE northwind SELECT productname AS products, unitprice AS price, (unitprice * 1.1) AS tax INTO #pricetable FROM products

39 Subqueries Introdução Usando uma Subquery como uma Tabela Derivada
Usando uma Subquery como uma Expressão Usando uma Subquery para correlacionar dados Usando as cláusulas EXISTS e NOT EXISTS

40 Introdução as Subqueries
Para que usar Subqueries? Quebrar um problema complexo numa série de passos lógicos Para executar uma consulta que depende dos dados de uma outra consulta Porque usar Joins em vez de Subqueries SQL Server tende a executar Joins mais rápido que Subqueries Como usar Subqueries

41 Usando uma Subquery como uma Tabela Derivada
É um Recordset dentro de uma consulta que funciona como uma Tabela Toma o lugar de uma tabela na cláusula FROM É otimizada normalmente junto com o resto da consulta USE northwind SELECT T.orderid, T.customerid FROM ( SELECT orderid, customerid FROM orders ) AS T GO

42 Usando uma Subquery como uma Expressão
É avaliada e tratada como uma expressão É executada somente uma vez USE pubs SELECT title, price ,( SELECT AVG(price) FROM titles) AS average ,price-(SELECT AVG(price) FROM titles) AS difference FROM titles WHERE type='popular_comp' GO

43 Usando uma Subquery para correlacionar dados
Executando a Subquery correlacionada Simulando a cláusula JOIN Simulando a cláusula HAVING

44 Executando a Subquery correlacionada
Consulta de fora passa os valores para a de dentro Consulta de dentro é executada com valores passados pela de fora USE northwind SELECT orderid, customerid FROM orders AS or1 WHERE 20 < (SELECT quantity FROM [order details] AS od WHERE or1.orderid = od.orderid AND od.productid = 23) GO Exemplo 1 Consulta de dentro retorna os valores para a consulta de fora O mesmo proceso é repetido para cada uma das linhas da consulta de fora Back to Step 1

45 Simulando a cláusula JOIN
Subqueries correlacionadas podem produzir o mesmo resultado que um JOIN Joins permitem que o Query Optimizer determine como correlacionar os dados mais eficientemente Exemplo 1 USE pubs SELECT DISTINCT t1.type FROM titles AS t1 WHERE t1.type IN (SELECT t2.type FROM titles AS t2 WHERE t1.pub_id <> t2.pub_id) GO

46 Simulando a cláusula HAVING
Subquery com o mesmo resultado de se usar HAVING Usando a cláusula HAVING sem a Subquery USE pubs SELECT t1.type, t1.title, t1.price FROM titles AS t1 WHERE t1.price > ( SELECT AVG(t2.price) FROM titles AS t2 WHERE t1.type = t2.type ) GO Exemplo 1 USE pubs SELECT t1.type, t1.title, t1.price FROM titles AS t1 INNER JOIN titles AS t2 ON t1.type = t2.type GROUP BY t1.type, t1.title, t1.price HAVING t1.price > AVG(t2.price) GO Exemplo 2

47 Usando uma Subquery correlacionada na cláusula HAVING
Use a Subquery correlacionada na cláusula HAVING da consulta externa (Outer Query) USE pubs SELECT t1.type FROM titles t1 GROUP BY t1.type HAVING MAX(t1.advance) >= ALL (SELECT 2 * AVG(t2.advance) FROM titles t2 WHERE t1.type = t2.type)

48 Usando as cláusulas EXISTS e NOT EXISTS
Use com consultas correlacionadas Determine se o dados Existe ou não numa Lista de Valores Como o SQL Server processa a consulta Consulta externa testa se existem linhas a retornar Consulta interna retorna TRUE ou FALSE Nenhum dado é produzido Exemplo 1 USE northwind SELECT lastname, employeeid FROM employees AS e WHERE EXISTS (SELECT * FROM orders AS o WHERE e.employeeid = o.employeeid AND o.orderdate = '9/5/97') GO

49 Exercícios 1. Fazer download do script instnwnd.sql de ftp://ftp.cefetes.br/Cursos/Informatica/ELE-BancosdeDados/Scripts 2. Abrir o SQL Server Management Studio e executar o script para criar o banco Northwind 3. Verificar se o banco Northwind foi mesmo criado 4. Criar um diagrama de todas as tabelas do banco, organizando as tabelas como no próximo slide

50 Exercícios

51 Exercícios Básicos 5. Selecione as colunas FirstName e LastName da tabela Employees organizando a saída por Lastname 6. Selecione as colunas Title, FirstName e LastName da tabela Employees organizando a saída primeiro por Title e depois Lastname 7. Selecione as colunas Title, FirstName e LastName da tabela Employees organizando a saída primeiro pela coluna 1 e depois pela coluna 3 8. Selecione as colunas Title, FirstName e LastName da tabela Employees organizando a saída primeiro por Title em ordem ascendente e depois Lastname em ordem descendente 9. Selecione as colunas Title, FirstName e LastName da tabela Employees listando apenas os funcionários que não tenham o título de ‘Sales Representative’

52 Exercícios Básicos 10. Selecione as colunas FirstName e LastName da tabela Employees listando apenas os funcionários cujo Sobrenome comece com a letra "N" 11. Selecione as colunas FirstName e LastName da tabela Employees listando apenas os funcionários cujo Sobrenome comece da letra "N" em diante (O,P,Q,R...) 12. Selecione as colunas FirstName e LastName da tabela Employees listando apenas os funcionários cujo Nome comece da letra “M”, e tendo como segunda letra a letra “a” ou “i” 13. Selecione as colunas FirstName , LastName e Region da tabela Employees listando apenas os funcionários em que se conhece a região em que os mesmos estão localizados

53 Exercícios Básicos 14. Selecione as colunas FirstName e LastName da tabela Employees listando apenas os funcionários cujo Sobrenome comece com as letras de “J” a “M” 15. Selecione as colunas TitleOfCourtesy, FirstName e LastName da tabela Employees listando apenas os funcionários cujo TitleOfCourtesy comece pela letra “M” 16. Selecione as colunas TitleOfCourtesy, FirstName e LastName da tabela Employees listando apenas os funcionários cujo TitleOfCourtesy comece pela letra “M”, seguida por qualquer caracter e um sinal de ponto “.” 17. Selecione as colunas TitleOfCourtesy, FirstName e LastName da tabela Employees listando apenas os funcionários cujo TitleOfCourtes não seja "Ms." ou "Mrs."

54 Exercícios Básicos 18. Selecione as colunas FirstName e LastName da tabela Employees listando apenas os funcionários cujo TitleOfCourtesy comece pela letra “M” e cujo título seja de ‘Sales Representative’ 19. Selecione as colunas City, FirstName e LastName da tabela Employees listando apenas os funcionários que vivem nas cidades de Seattle ou Redmond 20. Selecione as colunas FirstName e LastName da tabela Employees listando apenas os funcionários cujo título seja de ‘Sales Representative’ e vivam nas cidades de Seattle ou Redmond

55 Exercícios Avançados 1. Retorne os nomes dos produtos que começam com as letras a, d, e de m a z, ordenados por nome 2. Retorne os nomes dos fornecedores que estão sem homepage informada 3. Mostre a lista de países dos clientes da empresa (tabela Customers), sem repetições 4. Mostre os nomes dos clientes que não fizeram pedidos 5. Mostre os nomes dos clientes que fizeram pedidos, informando a data em que os mesmos foram feitos 6. Mostre os nomes de todos os clientes que fizeram ou não pedidos, informando a data em que os pedidos foram feitos ou a data com o valor NULL caso o cliente nunca tenha feito um pedido

56 Exercícios Avançados 7. Mostre o nome de todos os clientes que nunca fizeram nenhum pedido, usando JOINS para resolver o problema 8. Mostre o nome de todos os clientes que nunca fizeram nenhum pedido, usando SUBQUERIES para resolver o problema 9. Gere uma lista de nomes de funcionários contendo a data dos pedidos feitos pelos mesmos e nome dos clientes que fizeram os pedidos 10. Gere uma lista de pedidos feitos em 1996 e 1997, contendo a descrição de todos os produtos vendidos e a quantidade vendida dos mesmos por pedido 11. Liste a quantidade total de itens de cada produto, vendidos até o presente momento 12. Liste a quantidade total de itens de cada produto, vendidos em 1996

57 Exercícios Avançados 13. Liste todos os produtos e quantidade totais vendidas, desde que tenham vendido mais que 3 unidades 14. Gere uma listagem contendo nomes de clientes fictícios que consistirão da combinação de nomes e sobrenomes de cada um dos clientes existentes 15. Mostrar quantos produtos existem em cada categoria, incluindo o nome o nome de cada categoria 16. Listar o valor total em vendas realizadas por empregado no mês de Abril/1997 17. Listar o nome e a soma dos valores de pedidos feitos para cada produto no mês de Março/1998. Listar somente os 10 mais pedidos em função do valor total pedido 18. Listar os 5 fornecedores que mais foram acionados no ano de 1997, por total de vendas. Mostrar o nome do fornecedor e o total da venda de cada um deles.

58 Exercícios Avançados 19. Listar o total de vendas realizadas mês a mês. Mostrar o mês/ano e o total de vendas realizadas naquele mês/ano 20. Gerar uma listagem de funcionários contendo o nome completo dos mesmos (Nome + Sobrenome) 21. Gerar uma listagem de funcionários contendo o nome completo do mesmos e o nome completo dos seus chefes imediatos 22. Exibir um ranking dos três países que mais compraram produtos desde Exiba uma listagem contendo o valor de comissão pago a cada vendedor, mês a mês, durante o ano de Supor que a comissão paga seja de 1% das vendas


Carregar ppt "SQL Server 2012 SQL – Consultas"

Apresentações semelhantes


Anúncios Google