Introdução ao SQL Avançado Introdução as consultas, manipulação e a filtragem de dados com a linguagem SQL Prof. MSc. Hugo Vieira L. Souza
Este documento está sujeito a copyright. Todos os direitos estão reservados para o todo ou quaisquer partes do documento, em especial a interpretação de tradução, reprodução, distribuição ou comercialização física ou na Web do conteúdo contido nos slides, estão sujeitas a autorização prévia pelo autor. Hugo Vieira Lucena de Souza, 2015 Documento reproduzido e atualizado com base no formato do texto original, em sua primeira versão, sob a autorização da autora. Renata F. Viegas, 2008 Todos os textos, nomes, marcas e figuras de outras publicações e autores contidos neste documento estão devidamente referenciados através de suas obras originais e protegidos pelas leis de propriedades intelectuais.
Agenda Introdução ao SQL Avançado Fundamentos da sintaxe Structured Query Language [SQL] Consultas simples Cláusulas adicionais Manipulação de expressões Funções matemáticas Funções de caracteres Funções de data e hora Funções de conversão Filtragem e ordenação de dados Filtragem utilizando Listas Filtragem com valores nulos Filtragem usando strings Funções agregadas Referências
Introdução ao SQL Avançado Revisando a sintaxe SQL: SELECT, UPDATE, INSERT, DELETE Manipulando expressões Funções matemáticas, etc; Condições de Pesquisa Funções de Agregação e Agrupamento; Junção de tabelas; Sub-consultas e tabelas temporárias;
Introdução ao SQL Avançado Principais características: Linguagem não-procedural que requer do usuário qual dado é necessário sem a possibilidade especificar como obtê-lo; Poupa o tempo de programação, mas exige um determinado treino para se dominar; Suporte ao modelo Cliente-Servidor; Controle de Acesso ao Banco e dos Usuários
Introdução ao SQL Avançado Principais características: Busca garantir a Integridade dos Dados; É independente em um contexto de padronização e fabricação: está incorporada em quase todos os SGBDs em seu padrão ANSI, com extensões proprietárias de cada fabricante;
Introdução ao SQL Avançado Sintaxe básica:
Introdução ao SQL Avançado Cláusulas adicionais: INTO: especifica uma nova tabela que conterá o resultado da consulta; ORDER BY: classifica o resultado da consulta; GROUP BY: agrupa as linhas das consultas com base nos valores de uma ou mais colunas; HAVING: especifica as condições usadas para filtrar um agrupamento de dados no resultado da consulta. Só deve ser utilizado com o GROUP BY
Introdução ao SQL Avançado Exemplo 01: exibir todos os dados de todos os clientes: Exemplo 02: exibir código, nome e telefones de todos os clientes:
Introdução ao SQL Avançado Exemplo 03: exibir código, nome e telefone dos vinte primeiros clientes cadastrados na empresa:
Introdução ao SQL Avançado Exemplo 04: exibir código, nome e preço de venda dos dez porcento primeiros produtos cadastrados:
Introdução ao SQL Avançado Exemplo 05: exibir código, nome e uma coluna contendo classificado para todos os clientes:
Introdução ao SQL Avançado Exemplo 06: exibir código, nome e uma coluna contendo classificado com o cabeçalho Classificação para todos os clientes:
Introdução ao SQL Avançado Exemplo 07: exibir número, descrição e preço de um produto renomeado a coluna número para código:
Manipulação de expressões Um comando SELECT também pode retornar como coluna de resultado um valor calculado; Exemplo 08: exibir código, quantidade em estoque, preço de venda e valor total [quantidade * preço da venda] para cada produto
Manipulação de expressões Além de operadores aritméticos, podemos usar funções matemáticas de acordo com o SGBD: ROUND: [valor, n]: arredonda o valor para n casas decimais; POWER: [valor, p]: retorna o valor elevado à potência p; Exemplo 09: exibir o código, preço e o valor arredondado do preço de cada produto para uma casa decimal:
Manipulação de expressões Exemplo 10: exiba o preço do produto elevado a terceira potência: As funções de caracteres também são muito úteis para manipular os dados do tipo caractere. Os principais tipos estão descritos como: SUBSTRING: [Exp, inicio, tam]: extrai uma parte de uma strings desde o início e com o tamanho de caracteres; LOWER: [Exp]: converte para minúsculo;
Manipulação de expressões Exemplo 11: exiba os dez primeiros caracteres do título de um livro em minúsculo e seu preço de tabela livros:
Manipulação de expressões As funções de data e hora podem ser implementadas em colunas do tipo datetime, que armazenam data e hora. A nomenclatura para a implementaçãoo segue o padrão: DatePart[parte,data]: retorna a parte especificada da data.
Manipulação de expressões Exemplo 12: exiba o nome e mês de aniversário de todos os funcionários
Manipulação de expressões GetDate(): retorna a data e hora atuais Exemplo 13: exiba a data de aniversário e o dia atual para todos os funcionários:
Manipulação de expressões A função de conversão é implementada quando é realizada a conversão de um tipo de dado em outro. A sintaxe segue o padrão: CONVERT [Tipo de dado, valor] Exemplo 14: exiba o preço de um produto convertido para string apenas no select
Manipulação de expressões Com valores datetime, converte pode ter um parâmetro a mais que especifica o formato da data a ser usado. Exemplo 15: exiba a data de hoje no formato brasileiro:
Manipulação de expressões Quer enriquecer suas expressões com o SQL? Pesquise as seguintes funções no SQL Server: Funções de caracteres: Upper(), Ltrim(), Rtrim(), Space(), Str(); Funções de data e hora: DateAdd(), DateDiff(), DateName();
Manipulação de expressões Uma vantagem que podemos aprender é a acerca da eliminação da duplicação de linhas. A sintaxe para este comando pode ser escrita: da seguinte forma: Exemplo 16: exibir o código de todos os clientes que já fizeram pedidos na empresa
Filtragem e ordenação de dados A ordenação dos dados pode seguir um conjunto de regras que delimitam como os dados deverão estar apresentados ao usuário. A sintaxe básica para ordenar informações de um banco de dados pode ser descrita: Exemplo 17: exibir o código, nome e telefone de todos os clientes, ordenando pelo nome do cliente de forma ascendente:
Filtragem e ordenação de dados Outra cláusula de ordenação tem como foco a filmagem dos dados. A sintaxe é simples, baseada na seguinte regra: Exemplo 19: exibir todos os nomes dos funcionários que nasceram a partir de 1950:
Filtragem e ordenação de dados Sintaxe: Exemplo 20: exibir todos os dados de produtos cujo estoque esteja entre dez e trinta unidades, ordenados pelo nome do produto
Filtragem e ordenação de dados Exemplo 21: exibir todos os dados de funcionários que nasceram na década de sessenta, ordenados pela data de nascimento em ordem descendente, e pelo nome do funcionário em ordem ascendente;
Filtragem e ordenação de dados Sintaxe: Exemplo 22: exibir todos os dados dos funcionários que residam no Bessa ou Manaíra ordenados pelo nome;
Filtragem e ordenação de dados Exemplo 23: exibir todos os produtos que não sejam do tipo dois ou do tipo quatro, ordenados pelo tipo em ordem descendente;
Filtragem e ordenação de dados Sintaxe: Significado: Valores não formatados ou desconhecidos;
Filtragem e ordenação de dados Exemplo 24: exibir os dados dos funcionários que não tenham e-mail Exemplo 25: exibir os dados dos funcionários cujo o número do telefone seja conhecido;
Filtragem e ordenação de dados Você acha que as linhas com valores NULL serão retornadas de acordo com o select abaixo?
Filtragem e ordenação de dados Sintaxe: Significado: Casamento de padrão: uma strings contendo caracteres que podem ser combinados com outra parte da strings; % [porcentagem]: sequencia de caracteres; _ [sublinhado]: combina com um único caractere;
Filtragem e ordenação de dados Outras combinações: [] [colchetes]: combina uma faixa de caracteres; ^ [circunflexo]: significa negação; Como encontrar todos nomes que começam com A ou B? Usar LIKE `[AB]%` Como encontrar todos os nomes que começam com letras de A até E? Usar LIKE `[A-E]%` E todos os nomes que não iniciam com V? Usar `[^V]%`
Funções agregadas COUNT[]: conta o número de valores de uma coluna; SUM []: soma os valores de uma coluna de dados numéricos; AVG[]: calcula a média de uma coluna de dados numéricos; MAX[]: determina o maior valor de uma coluna; MIN[]: determina o menor valor de uma coluna; Obs.: A cláusula DISTINCT pode ser usada como parte do argumento para eliminar linhas repetidas antes da aplicação da função; Exemplo 26: exibir a quantidade de produtos vendidos com preço acima de dez reais:
Funções agregadas Sintaxe: Para que serve? Gerar totalizadores que aparecem como colunas adicionais resumo no final do conjunto resultado O que devo fazer? Pesquisar três exemplos práticos desta cláusula;
Referências VIEGAS, Renata F.; Material institucional de Banco de Dados Avançados do Centro Universitário de João Pessoa. 2008;