Lição 1: Querying Data – Parte 2


 Definindo uma cláusula WHERE

A função da cláusula WHERE é a de limitar o número de linhas nos resultados de nossas consultas, além de garantirmos uma maior performance aos nossos usuários conseguimos resultados mais precisos.

Aqui temos uma demonstração bem simples na aplicação da cláusula WHERE.

SELECT FirstName, LastName, City FROM Employees
WHERE City = 'London';
Fig. 6 - Exemplo simples com cláusula WHERE

Fig. 6 - Exemplo simples com cláusula WHERE

No exemplo acima definimos que apenas as colunas FirstName, LastName e City devem ser exibidas, e a cláusula WHERE define que apenas os registros que contenham a string London na coluna City devem ser retornados.

Com a cláusula WHERE ainda podemos utilizer operadores ‘Booleanos’ e predicados como LIKE , BETWEEN, EXISTS, IS NULL, IS NOT NULL e CONTAINS

Vejamos agora mais um exemplo onde além de utilizarmos a cláusula WHERE utilizaremos o predicado AND e os operadores ‘Booleanos’ = e >=

SELECT ProductName, CategoryID, UnitPrice
      FROM Products
WHERE CategoryID = 2 AND UnitPrice >= 20;
Fig. 7 - Exemplo com predicados e operadores booleanos

Fig. 7 - Exemplo com predicados e operadores booleanos

Neste exemplo que acabamos de ver, definimos que as colunas ProductName, CategoryID e UnitPrice seriam exibidas a partir da tabela Products, com a condições de apenas os registros que possuam o valor 2 na coluna CategoryID e TAMBÉM os valores contidos na coluna UnitPrice devem ser >= (maior ou igual) a 20.

Falando um pouco mais sobre cláusula LIKE, observe que ela nos permite utilizar alguns coringas para substituir um ou mais caracteres, vejamos eles:

  • % (porcento) – substitui qualquer quantidade de caracteres;
  • _ (underscore) – substitui exatamente um único caracter;
  • [ ] (chaves) – substitui uma range de caracteres definidas e pode ser definida de 3 formas: [abcd], [a,b,c,d] ou ainda [a-d]
  • ^ (circunflexo) – substitui qualquer caracter que não esteja em uma range definida, como por exemplo [^a-d]

Vamos aplicar em alguns exemplos:

SELECT ProductName, CategoryID, UnitPrice
      FROM Products
WHERE ProductName LIKE 'Chef%';
Fig. 8 - Uso simples da cláusula LIKE

Fig. 8 - Uso simples da cláusula LIKE

Neste exemplo definimos que as colunas ProductName, CategoryID e UnitPrice seriam exibidas a partir da tabela Products, com a condições de que apenas os registros que INICIEM com a string Chef na coluna ProductName sejam exibidas.

Agora um exemplo com BETWEEN:

SELECT ProductName, CategoryID, UnitPrice
      FROM Products
WHERE UnitPrice BETWEEN 15 AND 25;
Fig. 9 - Exemplo de uso da cláusula BETWEEN
Fig. 9 – Exemplo de uso da cláusula BETWEEN

Neste exemplo definimos que as colunas ProductName, CategoryID e UnitPrice seriam exibidas a partir da tabela Products, com a condições de que apenas os registros que possuam um valores entre 15 e 25 na coluna UnitPrice sejam exibidas.

Vejamos mais um exemplo agora utilizando dois tipos de coringas e aproveitaremos para conhecer a cláusula ORDER BY:

SELECT ProductName, CategoryID, UnitPrice
      FROM Products
WHERE ProductName LIKE '[s-t]%' ORDER BY ProductName;
Fig. 10 - Exemplo de LIKE com ORDER BY
Fig. 10 – Exemplo de LIKE com ORDER BY

Neste exemplo definimos que as colunas ProductName, CategoryID e UnitPrice seriam exibidas a partir da tabela Products, com a condições de que apenas os registros que estejam na coluna ProductName e tenham o início de sua string inciadas com S ou T sejam exibidas, além disso incluímos a cláusula ORDER BY que indica por qual coluna os registros serão organizados, no nosso caso em ordem alfabética, mas pode ser aplicada a qualquer coluna organizando de forma Ascendente ou Decrescente. O formato padrão é o Ascendente caso quisessemos organizar de forma Decrescente bastaria incluir a string DESC após o nome da tabela – “ORDER BY ProductName DESC;”

Manipulação do conjuntos de resultados

Para podermos gerar relatórios com o Reporting Services ou qualquer outro gerador de relatório, e até mesmo para exibir de forma mais amigável um resultado para os usuários finais, devemos manipular estes conjuntos de resultados.

Esta manipulação pode ser feita através de concatenação das colunas, exibição de um nome mais sugestivo e não como ele foi definido no banco de dados, inclusão de uma nova coluna somente no omento da exibição dos registros, entre outros.

Neste primeiro exemplo deixaremos os nomes das colunas mais sugestivos, de forma que fique mais fácil o entendimento.

SELECT FirstName AS 'Primeiro Nome', LastName AS 'Último Nome'     , Address AS 'Endereço', City AS 'Cidade' FROM Employees
ORDER BY FirstName;
Fig. 11 - Aprendendo a manipular o nome das colunas

Fig. 11 - Aprendendo a manipular o nome das colunas

Neste exemplo definimos que todos os registros das colunas FirstName, LastName, Address e City seriam exibidas a partir da tabela Employees, ordenadas de forma Ascendente pela coluna FirstName. A diferença das demais queries que escrevemos é que logo após cada nome de coluna que definimos que será exibido ela vem precedida da cláusula AS e um nome entre aspas simples (‘’), este procedimento é que faz com que o nome das colunas seja alterado em tempo de execução.

Neste último exemplo estaremos utilizando vários recursos em uma mesma query, alteraremos o nome das colunas em tempo de execução, concatenaremos duas colunas, ainda iremos inserir uma nova coluna também em tempo de execução com algum tipo de descrição além de utilizarmos o conceito de “apelido” para as nossas tabelas que será muito utilizado daqui para frente em nossos exemplos.

SELECT EMP.FirstName + ' ' + EMP.LastName AS 'Nome completo'
      , EMP.Address AS 'Endereço', EMP.City AS 'Cidade', 'Empregado' AS Descrição
FROM Employees EMP
WHERE EMP.FirstName LIKE '[c-r]%'
ORDER BY EMP.FirstName;
Fig. 12 - Utilizando vários recursos

Fig. 12 - Utilizando vários recursos

Agora é com vocês com base nos conteúdos e exemplos mostrados neste capítulo descrevam aqui na área de comentários, o passo a passo do que foi executado, se tiver alguma dúvida me encaminhe um e-mail e na próxima semana quando eu for publicado a próxima lição eu também deixarei  a minha descrição ok?

Espero que tenham assimilado o conteúdo, até a próxima publicação e sucesso a todos!

Lucas A. Romão 

Anúncios

2 Responses to Lição 1: Querying Data – Parte 2

  1. Emerson M. Sangiorgio disse:

    Por ser a minha primeira experiência em mexer num banco SQL, gostaria de parabeniza-lo pelo blog, que tem sido e será creio eu de preciosíssima ajuda.
    Como disse acima, por ser a primeira invasão na terra de ninguém chamada SQL (Não veja isso como algo negativo, mas como um desafio para mim), observei o seguinte da rotina:
    Com os sinais “+ ‘ ‘ +” uniu-se duas colunas em uma, inserindo um espaço entre o conteúdo das mesmas, além de usar o “AS” para definir o nome dessa nova coluna.
    Com a cláusula Where, filtrou os resultados da coluna FirstName, selecionando apenas os nomes que iniciam-se com os caracteres entre C e R.
    Criou uma nova coluna que não existia no banco e preencheu a com o valor “Empregado”.
    Através do EMP após o nome da tabela Employees, criou-se o “Apelido” que facilitou muito a inserção das colunas da tabela na query.
    Ordenou a consulta pela coluna FirstName em ordem ascendente.
    Mais uma vez obrigado e espero o próximo post.

  2. […] 2008 – Database Development”. (Por: Andressa Martins) Lição 1: Querying Data ( Parte 1 | Parte 2) Lição 2: Joining Related Tables Lição 3: Implementing Aggregate Queries Lição 4: Combining […]

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: