Topo

Consultando Dados no SQL Server

Wagner Crivelini

Veja um passo a passo detalhado para acessar e conferir dados no SQL Server

Parte 1: Lendo Dados (SELECT)

Um banco de dados não serve apenas para guardar dados. Precisamos ter ferramentas adequadas para manipular os dados nele contidos, de preferência de forma simples e eficiente.

Este é o primeiro de uma série de artigos nos quais mostrarei operações básicas de leitura, escrita, alteração e exclusão de dados em bancos de dados relacionais. Na internet existem milhares de tutoriais, livros, video aulas disponíveis sobre este assunto. Meu objetivo, aqui, é apenas abrir as portas para este mundo.

Para isso, vou usar um banco de dados do SQL Server. No entanto, a linguagem usada, chamada SQL, é praticamente igual para todos os bancos relacionais. A linguagem que apresento é conhecida como SQL ANSI, ou SQL padrão, aceita pela grande maioria dos produtos disponíveis no mercado.

Vamos começar falando de consultas para leitura de dados, muitas vezes referidas como declarações de SELECT.

Lendo dados de uma tabela

Em teoria, a linguagem SQL foi desenvolvida para ser a mais próxima possível da língua inglesa. Contudo, ela exige uma sintaxe especial, isto é, uma sequência de operações que precisa ser respeitada.

Digamos que eu deseje listar o nome e o telefone dos clientes da empresa. Para isso, busco na tabela tblCustomer os campos Name e Phone e peço que a listagem seja ordenada pelo nome do cliente. Em SQL, esta consulta fica assim:

SELECT   Name, Phone

FROM     tblCustomer

ORDER BY Name

Muito simples, não é? Bastou usar as cláusulas SELECT, FROM e ORDER BY, destacadas em azul. É obrigatório que as cláusulas sejam escritas nesta sequência, apesar de o ORDER BY ser opcional. Se eu não informar esta cláusula, os dados serão listados na ordem como foram gravados em disco.

Existem várias cláusulas, operadores e funções na linguagem SQL, mas apenas o SELECT e FROM são obrigatórios. Eles definem que esta é uma consulta de leitura de dados.

Procurando dados específicos

Eventualmente, a listagem retornada de uma consulta pode ser muito grande, então podemos usar outra cláusula para filtrar os dados: WHERE. No próximo exemplo, eu quero retornar todos os dados disponíveis para o cliente “Wagner Crivelini”.

SELECT   Name, Phone, Address

FROM     tblCustomer

WHERE    Name = "Wagner cRIVELINI"

ORDER BY Name

Observe que eu não me preocupei em escrever meu nome com letras maiúsculas e minúsculas no formato adequado. Isso não deve ser um problema, caso seu banco tenha sido criado da forma correta. Por default, as bases do SQL Server não diferenciam letras maiúsculas e minúsculas.

Nesta consulta eu usei o operador igual (=), mas existe mais de uma dúzia de operadores disponíveis, que permitem uma enorme variedade de critérios de pesquisa.

Lendo dados de várias tabelas

É muito comum em bancos relacionais recuperar dados que estão separados em duas ou mais tabelas. A forma correta de declarar este tipo de consulta é usando um novo operador: JOIN, que literalmente “junta” os dados de duas tabelas.

A junção é sempre definida entre duas tabelas, tomando por base um campo-chave que exista em ambas.

A forma mais comum de junção de tabelas é o INNER JOIN, que funciona como a operação de intersecção que aprendemos na escola: traz apenas registros que tenham o mesmo valor de chave.

Como agora vamos escrever declarações SQL com duas ou mais tabelas envolvidas, precisamos especificar de qual das tabelas traremos cada um dos campos mencionados na declaração. Para facilitar, eu costumo usar um apelido em cada tabela (tecnicamente chamados de “alias”). Veja o exemplo a seguir, que mostra os clientes que fizeram compras no mês de fevereiro/2017:

SELECT   C.Name, C.Phone, C.Address

FROM     tblCustomer C

       INNER JOIN tblInvoice I ON C.codCustomer = I.codCustomer

WHERE    I.EventDate BETWEEN "20170201" AND "20170228"

ORDER BY C.Name

Nesta consulta, eu usei o apelido C para a tabela tblCustomer e I para tblInvoice. Assim não preciso escrever o nome todo das tabelas cada vez que eu menciono um campo: uso apenas o seu apelido. Observe, também, que acompanhando o INNER JOIN surgiu a palavra-chave ON especificando quais são os campos-chave usados para relacionar as duas tabelas. No caso, são os campos C.codCustomer e I.codCustomer.

Caso se deseje usar dados de mais uma tabela na consulta, basta declarar um novo JOIN e especificar os campos-chave desta nova junção.

Comentários finais

Mostrei aqui uma pequena introdução à leitura de dados usando linguagem SQL. Na verdade, esta linguagem é muito poderosa e oferece centenas de funções e recursos mais sofisticados para gerar os mais diversos tipos de relatório.

No próximo artigo, vou falar de alteração de dados.

Até lá!