Pular para o conteúdo principal

Treinamento para Consultas com SQL Server – Parte 1 – Elementos Básicos

Introdução

Quais são os elementos mínimos necessários para realizar uma consulta para recuperar dados de tabelas armazenadas e gerenciadas em um banco de dados SQL Server? Este post mostra quais.
Para recuperar os dados do banco de dados a linguagem SQL possui uma linguagem bem sucinta que envolve as seguintes etapas:
Ação Instrução SQL
Definição de quais colunas ou dados serão recuperados do banco de dados SELECT <nome das colunas>
Especificação das tabelas de onde se originam as colunas FROM <tabela 1>, <tabela 2>, ..., <tabela n>
JOIN <tabela relacionada> ON <condições>
Filtros a serem usados para restringir quais dados devem ser recuperados <Opcional> WHERE <cláusula 1> AND | OR | IN | EXISTS <cláusula 2> … <cláusula n>
Para realizar a filtragem, as condições usam os operadores “=”, “>”, “<”, “<>”, IN, LIKE
Estes serão abordados com detalhes à frente.

Especificação de ordenação <Opcional> ORDER BY <coluna 1>, <coluna 2>, …, <coluna n>
Assim, considere a seguinte tabela:
Tabela
A tabela Person armazena dados gerais sobre cada pessoa dentro do banco de dados. Está vinculada com o schema[1] PERSON que agrupa as tabelas relacionadas com identificação de pessoas dentro do banco de dados.
No exemplo abaixo, a consulta recupera todos os registros onde o campo LastName seja igual a “Smith” trazendo os campos:
  1. Title (título)
  2. FirstName (primeiro nome)
  3. MiddleName (nome do meio)
  4. ModifiedDate (data de modificação)
E os ordenando pelo título. A consulta fica da seguinte forma:
select title, FirstName, MiddleName, ModifiedDate 
from Person.Person 
where LastName = 'Smith' 
order by title

Esta consulta produz um resultado demonstrado na figura a seguir:
Resultado1

Alerta sobre desempenho
Ao trazer todas as colunas com o asterisco “*” o banco precisa primeiramente descobrir quais colunas deverão ser trazidas e encontrar uma ordem para enviar os resultados. Isto acarreta perda de desempenho e deve ser evitado sempre.

A tabela PERSON, como foi explicado, faz parte do schema de mesmo nome, por isso foi nomeada da seguinte forma:

from person.person 

O SQL Server não faz distinção de letras maiúsculas ou minúsculas na sintaxe dos comandos. Assim é possível usar “Select”, “SELECT”, “SeLEct”.
É possível também renomear as colunas ao trazer os resultados para, por exemplo, exibir em uma planilha do Excel ou qualquer documento do Office, basta, após o nome da coluna incluir um ALIAS usando o termo “AS”. Veja, no exemplo a seguir, como poderíamos traduzir os nomes das colunas da consulta anterior.

select title as Título
  ,FirstName as [Primeiro nome]
  ,MiddleName [Nome do meio]
  ,LastName [Sobrenome]
  ,ModifiedDate [Data da última alteração]
from Person.Person 
where LastName = 'Smith' 
order by title

Como pode ser observado, é possível usar caracteres acentuados como nomes de colunas. Se quiser que os rótulos para os campos contenham espaços, use os colchetes como delimitadores de nomes de colunas para que não ocorra um erro ao executar. O resultado desta consulta pode ser conferido na figura a seguir.
resultado2
Dependendo das configurações do banco de dados, ao filtrar os resultados usando a cláusula WHERE poderá haver diferença entre maiúsculas e minúsculas e acentos. Verifique isto ao executar as consultas.
Para ordenar os resultados com a cláusula ORDER BY é necessário que a coluna esteja especificada no SELECT.
Alerta sobre desempenho
A instrução ORDER BY impacta no tempo de execução de uma consulta. Dependendo do número de registros retornados pode causar uma demora excessiva, caso os índices não estejam corretamente configurados.

Até o próximo post!


[1] No SQL Server os schemas são agrupadores criados para simplificar acesso às tabelas e também facilitar o gerenciamento destas. Todas as tabelas de um schema são precedidas pelo nome deste, separado por um ponto e o nome da tabela.

Postagens mais visitadas deste blog

Como gerar scripts para exportar dados no SQL Server 2008

Uma das tarefas mais comuns no trabalho com desenvolvimento de software que consome dados em bancos como o SQL Server 2008 é a necessidade de em algum momento precisarmos exportar os dados de um banco para outro. Quer seja para realizar testes ou fazer simulações existem várias maneiras de se fazer isto. Neste post eu quero demonstrar um recurso do SQL Server Management Studio (SSMS) que permite realizar esta tarefa rapidamente.Para os que estão acostumados a usar esta ferramenta, já devem saber que é possível gerar scripts para o schema e também transferir os dados entre dois bancos distintos. Isto pode ser feito se o SSMS puder conectar-se com as duas bases, de origem e destino. No exemplo que vou dar, o objetivo é gerar o script apenas para uma tabela do banco de dados de exemplo da Microsoft – Northwind.1. Iniciando o assistenteO assistente deve ser iniciado clicando com o botão direito do mouse sobre o banco onde se encontra a tabela a qual iremos gerar o script. Deve se clicar n…

Pivot dinâmico com SQL Server

Passo a passo para usar pivoteamento dinâmicoOs bancos de dados bem configurados e definidos armazenam os dados de forma a otimizar o acesso, evitando duplicidade e garantindo a integridade. Porém, em muitas situações isto pode dificultar a apresentação de forma adequada sendo necessário preparar os dados usando vários recursos entre os quais, fazer o pivoteamento.Se você não precisou ainda usar ou não sabe o que é consiste em transformar cada linha de uma determinada coluna em colunas de uma nova consulta.Assim, considere uma tabela que armazene as notas bimestrais de um boletim. Uma possível estrutura para esta tabela seria algo assim:ColunaTipo de dado/TamanhoDisciplinanvarchar(50)BimestreIntNotanumeric(5,2)Uma consulta select nesta tabela com alguns dados traria um resultado parecido com o abaixo:Porém pode ser que para apresentar estes dados em um relatório seja necessário transformar cada bimestre em uma coluna e agrupar as notas nestas colunas para que fique dessa forma:Isto po…

Como remover espaços e quebra de linha de documentos XML

A dica de hoje (após um longo e tenebroso inverno, que a propósito continua aqui no Paraná) nasceu de um incêndio que precisou ser apagado nos projetos da vida com prazo de entrega pra “ontem”… mas, vamos a parte divertida.No Framework .NET a geração de documentos XML é facilitada de várias formas. Vamos partir do código abaixo para gerar um documento simples usando apenas System.Xml.var xmlDoc = new XmlDocument();
XmlElement raiz = xmlDoc.CreateElement("artigo");
XmlElement Id = xmlDoc.CreateElement("id");
Id.InnerText = "08072011";
XmlElement Titulo = xmlDoc.CreateElement("titulo");
Titulo.InnerText = "Como remover espaços e quebra de linha de documentos XML";
XmlElement Vazio = xmlDoc.CreateElement("vazio");
Vazio.InnerText = String.Empty;
raiz.AppendChild(Id);
raiz.AppendChild(Titulo);
raiz.AppendChild(Vazio);
xmlDoc.AppendChild(raiz);
xmlDoc.Save(@"d:\teste.xml");

O código acima gera o arquivo “teste.xml” que ao ser visuali…