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

Neste artigo, vou abordar os fundamentos do uso da instrução SQL SELECT para recuperar dados de uma ou mais tabelas SQL Server. 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 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. Estas 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 linha e coluna. 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 necessário. O SQL Server usa esquemas para agrupar logicamente tabelas e outros objetos de banco de dados. O esquema padrão para cada banco de dados é dbo, e porque é o esquema que está sendo usado aqui, ele pode ser omitido.

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

  • 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 nome do esquema ‘SalesLT’ (entre outros), então 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 primeiro nome e o 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 normalmente recupera mais dados do que sua aplicação precisa, e você não quer aumentar a carga de trabalho do seu SQL Server.

Anúncio

Como filtrar linhas com a cláusula WHERE do SQL

O verdadeiro poder da instrução SELECT está 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 usa uma ou mais condições Booleanas para selecionar os dados desejados da tabela. A cláusula WHERE sempre vem depois da 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)

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

O poder de usar a cláusula WHERE com a instrução SELECT está em sua flexibilidade. A cláusula WHERE vai muito além da simples igualdade, “maior que” e “menor que” operadores de comparação. Vamos dar uma olhada mais de perto em algumas 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 string 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 na 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

Também é possível 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 se enquadram em um determinado intervalo predefinido em uma coluna específica. O exemplo a seguir mostra como você pode usar o BETWEEN para apenas retornar as linhas na tabela Product que têm um valor na coluna ‘ListPrice’ 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

Você também pode 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. É 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 depois da 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 (ascendente) 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 os conceitos básicos de como usar a 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/