Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Usando linguagem SQL para geração de relatórios - Parte 2
Usando linguagem SQL para geração de relatórios - Parte 3
Usando linguagem SQL para geração de relatórios - Parte 4
Usando linguagem SQL para geração de relatórios - Parte 5
Uso de linguagem SQL para criação de relatórios, desde recursos básicos até os mais avançados. Este artigo é parte de uma série e neste texto apresento recursos básicos, como uso de funções escalares, agrupamentos de dados, cláusulas SQL disponíveis e alguns operadores úteis. O estudo destes itens irá auxiliar o leitor iniciante em SQL a criar consultas e relatórios básicos. O artigo cobre também conceitos que servem de embasamento para que qualquer leitor, seja iniciante ou experiente, compreenda os recursos mais sofisticados que serão apresentados ao longo desta série.
Em que situação o tema é útil
Este artigo se destina ao leitor que trabalha com bancos de dados, seja ele administrador, arquiteto ou desenvolvedor, e apresenta recursos da linguagem SQL que o auxiliam na execução de tarefas comuns como a criação de consultas e/ou relatórios.
Resumo DevMan
Todo profissional que trabalha com bancos de dados sabe que é fundamental ter conhecimento necessário para extrair dados de um banco de dados, seja na forma de uma consulta simples ou de relatórios mais elaborados.
Este artigo é o primeiro de uma série que visa apresentar recursos da linguagem SQL que ajudem desde o leitor iniciante até o mais experiente.
Neste texto são apresentados recursos básicos, seguindo o padrão ANSI SQL sempre que possível, de modo que o leitor possa aplicar estes conceitos no sistema gerenciador de bancos de dados da sua preferência (DB2, ORACLE, SQL SERVER, POSTGRESQL, etc).
Recentemente apresentei aos colegas da empresa onde trabalho uma palestra sobre os recursos da linguagem SQL para criação de relatórios (ler Nota DevMan 1). Ao concluir este material, decidi converter esta palestra numa série de três artigos que mostram o uso de recursos básicos e avançados do SQL que nos ajudam na criação de relatórios.
A linguagem SQL é um padrão de banco de dados. Isto decorre da sua simplicidade e facilidade de uso. Ela se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem.
A SQL é subdividida em três sub-linguagens, que são:
• DDL (Data Definition Language): que apresenta uma série de comandos que permitem a definição dos dados. Dentre os principais comandos, podemos destacar o CREATE, que é destinado à criação do banco de dados e das tabelas que o compõe, além das relações existentes entre as tabelas. Outros exemplos de comandos DDL que podemos citar neste momento são: ALTER e DROP;
• DML (Data Manipulation Language): que apresenta uma série de comandos destinados à manipulação de dados, tais como: consultas, inserções, exclusões e alterações, para um ou mais registros de uma ou mais tabelas de maneira simultânea. Dentre alguns exemplos de comandos DML destacam-se: SELECT, INSERT, UPDATE e DELETE;
• DCL (Data Control Language): que apresenta uma série de comandos para controlar o acesso aos dados, usuários e grupos. Dentre alguns exemplos de comandos DCL, destaca-se o comando GRANT.
O SQL, embora padronizado pela ANSI e ISO, possui muitas variações e extensões produzidas pelos diferentes fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a linguagem pode ser migrada de plataforma para plataforma sem mudanças estruturais principais.
É consenso entre os especialistas que SQL não é a melhor linguagem para criação de consultas complexas, já que sua função principal é a recuperação e gerenciamento de dados. Apesar de estas serem uma verdade inegável, é muito comum nos depararmos com situações em que ele, o SQL, é a única ferramenta que temos à mão para criação de um relatório. Isso ocorre muitas vezes por questão de custos, já que nem sempre é economicamente viável optar pela compra de uma solução especializada. Este cenário é muito comum no dia-a-dia das empresas e, no fim das contas, somos forçados a usá-lo.
Por esta razão, eu considero importante que todo profissional de banco de dados conheça os principais recursos do SQL para atender as solicitações dos seus usuários. Neste sentido, é importante termos em mente uma definição básica ao se trabalhar com consultas SQL que é a definição de expressão SQL. A definição que temos para o termo expressão é bastante simples: uma expressão retorna um valor. Os tipos utilizados em uma expressão variam bastante, cobrindo diferentes tipos de dados como string, numeric e boolean. Na verdade, quase tudo que inserirmos depois do SELECT ou FROM em um comando SQL pode ser considerado uma expressão. Caso você queria encontrar um item ou grupo de itens em particular em seu banco de dados, você precisará fazer uso de uma ou mais condições em suas queries. Podemos definir condições em consultas SQL utilizando a cláusula where.
Esta é a primeira parte de uma série de artigos. Neste texto, apresento recursos básicos da linguagem SQL, como principais cláusulas, funções e alguns operadores. Operadores são os elementos que você utiliza dentro de expressões para definir como você quer restringir os dados retornados por uma busca. De uma forma geral, os operadores são divididos em seis grupos: aritméticos, comparação, caractere, lógico, conjunto e outros (ler Nota DevMan 2).
• Operadores aritméticos: os operadores aritméticos utilizados em comandos SQL são: adição (+), subtração (-), divisão (/), multiplicação (*) e módulo (%). Os quatro primeiros são bastante conhecidos, já módulo retorna o resto inteiro de uma divisão.
• Operadores de comparação: operadores de comparação permitem comparar expressões e retornar um dos seguintes valores: TRUE, FALSE, ou UNKNOWN.
• Operadores de texto: você pode utilizar operadores de texto para manipular a forma como strings são representadas, tanto na saída dos dados quanto no processo de filtro através da definição de condições em cláusulas where.
• Operadores lógicos: operadores lógicos separam duas ou mais condições na cláusula where de uma consulta SQL permitindo a elaboração de consultas SQL mais aprimoradas.
• Operadores de conjunto: operadores de conjunto são utilizados para combinar diferentes conjuntos de dados retornados por diferentes consultas em uma mesma consulta, gerando assim um conjunto de dados final.
O objetivo é que o leitor menos experiente aprenda aqui os conceitos básicos para que possa acompanhar os recursos mais sofisticados que serão apresentados nos próximos artigos, como a cláusula OVER e recursos programáveis, por exemplo.
Originalmente esta palestra tratava de recursos oferecidos pelo DB2, um sistema gerenciador de bancos de dados (SGBD) que é um dos grandes líderes do mercado mundial. Porém iremos priorizar nestes artigos os recursos SQL e as sintaxes que sejam padrão ANSI SQL, ou seja, que estão ou deveriam estar disponíveis em qualquer SGBD.
Tópicos discutidos neste artigo
Para começar esta série, vamos falar do uso dos seguintes recursos SQL:
• ordenando dados;
• usando funções escalares;
• juntando tabelas;
• usando funções de agregação;
• usando cláusulas de agregação;
• usando operador ROLLUP;
• usando operador CUBE;
• usando função GROUPING.
Base de dados e considerações
Para situarmos os recursos SQL que vamos estudar, é preciso ter uma base de dados como amostra. Usaremos nestes artigos uma base com dados fictícios de demanda de produtos farmacêuticos. A Figura 1 mostra o modelo desta base.
Figura 1: Modelo de dados da base de exemplo.
Assumiremos nestes artigos que o leitor já está familiarizado com declarações do tipo SELECT, conhecendo sua sintaxe básica. Feito este comentário, vamos começar o estudo.
Ordenando dados
É possível que a ordenação seja o recurso mais básico para manipulação dos dados selecionados. E como aprendemos nas primeiras aulas de SQL, isso é feito usando-se a cláusula ORDER BY.
Importante observar no plano de execução de uma consulta que a última cláusula a ser executada numa declaração de seleção de dados é exatamente o ...