Essenciais do SQL Server: Usando SQL SELECT e as Cláusulas WHERE e HAVING para Recuperar Dados

Neste artigo, vou cobrir os fundamentos do uso da instrução SQL SELECT para recuperar dados de uma ou mais SQL Server tabelas. Também detalharei como recuperar colunas selecionadas, bem como como usar as cláusulas SQL WHERE e HAVING para filtrar linhas.

Os exemplos neste artigo usam todos o banco de dados de exemplo AdventureWorksLT2019. No artigo anterior desta série, expliquei como preencher tabelas SQL Server usando as instruções INSERT, UPDATE e DELETE. Essas instruções de Linguagem de Consulta Estruturada (SQL) modificam o conteúdo de uma tabela, mas a instrução SQL SELECT tem um propósito diferente.

Anúncio

 

Como usar uma instrução SQL SELECT simples

A instrução SQL SELECT é usada para consultar dados de uma tabela. O código a seguir ilustra a sintaxe mais básica da instrução SELECT.

SELECT columns FROM schema_name.table_name;

Como você deve saber, os dados da tabela são organizados em um formato de linhas e colunas. Cada linha representa um registro único em uma tabela, e cada coluna representa um campo no conjunto de dados.

O primeiro acordo da instrução SELECT é uma lista dos nomes das colunas que serão recuperadas. Aqui, você especifica uma lista de colunas separadas por vírgulas das quais deseja recuperar dados.

Publicidade

Em seguida, a cláusula FROM especifica a tabela de origem e seu nome de esquema, se isso for necessário. O SQL Server usa esquemas para agrupar logicamente tabelas e outros objetos do banco de dados. O esquema padrão para cada banco de dados é dbo, e porque é o esquema que está sendo usado aqui, pode ser omitido.

A listagem a seguir mostra um exemplo de uma simples instrução SELECT:

  • O primeiro comando USE define o banco de dados atual como AdventureWorksLT2019.
  • A instrução SELECT fornece uma lista de colunas para o conjunto de resultados que será recuperado da tabela SalesLT.Customer.
  • Neste caso, o banco de dados de exemplo AdventureWorksLT2019 usa o esquema chamado ‘SalesLT’ (entre outros), portanto, você precisa incluir o nome do esquema, um ponto e, em seguida, o nome da tabela, que é ‘Customers’.  
  • As colunas ‘FirstName’ e ‘LastName’ recuperam o nome e sobrenome do cliente.
USE AdventureWorksLT2019
SELECT FirstName, LastName from SalesLT.Customer
An example of a simple SQL SELECT statement (Image credit: Petri/Michael Otey)

Como atalho, você pode usar um asterisco (*) para recuperar todas as colunas na tabela, independentemente do número de colunas. Você pode ver um exemplo disso abaixo:

USE AdventureWorksLT2019
SELECT * from SalesLT.Customer
You can use an asterisk (*) to retrieve all of the columns in the table (Image credit: Petri/Michael Otey)

A instrução SELECT * é útil para consultas ad hoc ou para examinar as colunas e dados de uma tabela com a qual você não está familiarizado. No entanto, você não deve usar esta instrução para código de produção – ela geralmente recupera mais dados do que sua aplicação precisa, e você não quer aumentar a carga de trabalho do seu SQL Server.

Publicidade

Como filtrar linhas com a cláusula WHERE do SQL

O verdadeiro poder da instrução SELECT é encontrado em suas capacidades de filtragem e junção. A consulta SELECT pode usar uma cláusula opcional WHERE para filtrar os dados que serão retornados.

A cláusula WHERE utiliza uma ou mais condições booleanas para selecionar os dados desejados da tabela. A cláusula WHERE sempre vem após a cláusula FROM e antes das cláusulas GROUP BY, HAVING e ORDER BY.

Você pode ver um exemplo de uso da cláusula WHERE do SQL abaixo. Aqui, a cláusula WHERE é usada para filtrar uma lista de seleção contendo as colunas ‘FirstName’, ‘LastName’, ‘Phone’ e ‘CompanyName’ das linhas que contêm o valor ‘Sharp Bikes’ na coluna ‘CompanyName’.

USE AdventureWorksLT2019
SELECT FirstName, LastName, Phone, CompanyName FROM SalesLT.Customer WHERE CompanyName = 'Sharp Bikes';
Using the WHERE clause to filter data that will be returned (Image credit: Petri/Michael Otey)

Filtrando linhas que contêm um valor como parte de uma string

O poder de usar a cláusula WHERE com a instrução SELECT reside em sua flexibilidade. A cláusula WHERE vai muito além da simples igualdade, dos operadores de comparação “maior que” e “menor que”. Vamos dar uma olhada mais de perto em algumas das coisas que você pode fazer com a cláusula WHERE, começando com o uso do operador SQL LIKE.

O operador LIKE é usado para determinar se uma sequência de caracteres específica corresponde a um padrão especificado. No exemplo abaixo, recuperamos todas as linhas da tabela Customer que contêm a palavra ‘Bike’ em qualquer lugar da coluna ‘CompanyName’. Aqui, precisamos usar o caractere curinga % tanto antes quanto depois da palavra ‘Bike’.

USE AdventureWorksLT2019
SELECT SalesPerson, CompanyName FROM SalesLT.Customer WHERE CompanyName LIKE('%Bike%');
Using the WHERE clause with the LIKE operator (Image credit: Petri/Michael Otey)

Filtrando linhas que atendem a qualquer uma das três condições

Você também pode usar a cláusula WHERE para filtrar linhas com base em múltiplos valores diferentes. O código a seguir mostra como usar a instrução SELECT com uma cláusula WHERE para selecionar três valores diferentes da tabela Product. Neste exemplo, a cláusula WHERE é usada com o operador OR para selecionar linhas onde ‘ProductID’ é igual a 680, 711 ou 722.

USE AdventureWorksLT2019
SELECT Name, ProductID, ProductNumber FROM SalesLT.Product
 WHERE ProductID = 680 OR ProductID = 711 OR ProductID = 722; 
Filtering rows that meet different conditions with the WHERE clause (Image credit: Petri/Michael Otey)

Filtrando linhas que estão em uma lista de valores

Da mesma forma, você pode usar a cláusula WHERE para selecionar linhas que estão contidas em uma lista definida pelo uso do operador IN. No exemplo a seguir, a instrução SELECT retornará as linhas que contêm os valores ‘Bothell’, ‘Bellevue’ ou ‘Renton’ na coluna ‘City’ da tabela SalesLT.Address.

USE AdventureWorksLT2019
SELECT AddressID, AddressLine1, City FROM SalesLT.Address
WHERE City IN ('Bothell', 'Bellevue', 'Renton');
Filtering rows that are in a list of values with the IN operator (Image credit: Petri/Michael Otey)

Filtrando linhas que têm um valor entre dois valores

Você também pode usar a cláusula WHERE da instrução SELECT com o operador BETWEEN para selecionar valores de linhas que estão dentro de um determinado intervalo predefinido em uma coluna específica. O exemplo a seguir mostra como você pode usar o BETWEEN para retornar apenas as linhas na tabela Product que têm um valor na coluna ‘ListPrice’ que é maior que 10 e menor que 50.

USE AdventureWorksLT2019
SELECT ProductID, Name  FROM SalesLT.Product  WHERE ListPrice Between 10 AND 50; 
Filtering rows that have a value between two values (Image credit: Petri/Michael Otey)

Filtrando linhas com a cláusula HAVING

Também é possível filtrar linhas em um conjunto de resultados usando a cláusula HAVING. A cláusula HAVING foi adicionada ao SQL Server porque a palavra-chave WHERE não pode ser usada com funções de agregação como GROUP BY. Ela é usada para especificar uma condição de pesquisa para um grupo ou um agregado que inclui uma ou mais condições que são verdadeiras para diferentes grupos de registros.

A cláusula HAVING sempre vem após a cláusula GROUP BY e antes da cláusula ORDER BY, como você pode ver na seguinte instrução SQL. Neste exemplo, o conjunto de resultados consiste no ‘SalesOrderID’ e no alias da coluna ‘SubTotal’. A ordem é asc (crescente) e as linhas são agregadas agrupadas pelo ‘SalesOrderID’.

USE AdventureWorksLT2019 ; 
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal 
FROM SalesLT.SalesOrderDetail  GROUP BY SalesOrderID 
HAVING SUM(LineTotal) > 5000.00 
ORDER BY SalesOrderID ;
Filtering rows with the HAVING clause (Image credit: Petri/Michael Otey)

Resumo

Neste tutorial, expliquei o básico do uso da instrução SELECT do T-SQL para filtrar linhas de várias maneiras diferentes. A cláusula WHERE fornece um conjunto extremamente flexível de operadores que permitem selecionar linhas com base em várias condições diferentes. Da mesma forma, a cláusula HAVING permite selecionar grupos de linhas que atendem a uma determinada condição. Obrigado por ler e fique ligado para o meu próximo artigo nesta série SQL Server Essential.

Artigo Relacionado:

Source:
https://petri.com/sql-select-where-clause/