O Linguagem de consulta estruturada (SQL) fornece aos usuários de banco de dados a capacidade de criar consultas personalizadas para extrair informações de bancos de dados. Em um artigo anterior, exploramos a extração de informações de um banco de dados usando consultas SQL SELECT. Vamos expandir essa discussão e explorar como você pode executar tarefas avançadas consultas para recuperar dados que corresponde a condições específicas.
Vamos considerar um exemplo baseado no comumente usado Vento Norte banco de dados, que frequentemente é fornecido com produtos de banco de dados como um tutorial.
Aqui está um trecho da tabela Product do banco de dados:
ID do produto | Nome do Produto | Identificação do Fornecedor | QuantityPerUnit | Preço unitário | Unidades em estoque |
---|---|---|---|---|---|
1 | Chai | 1 | 10 caixas x 20 sacos | 18.00 | 39 |
2 | Chang | 1 | Garrafas de 24 - 12 onças | 19.00 | 17 |
3 | Xarope de Anis | 1 | 12 - garrafas de 550 ml | 10.00 | 13 |
4 | Tempero Cajun do Chef Anton | 2 | Potes de 48 - 6 onças | 22.00 | 53 |
5 | Mix de Gumbo do Chef Anton | 2 | 36 caixas | 21.35 | 0 |
6 | Spread de Boysenberry da Vovó | 3 | Potes de 12 a 8 onças | 25.00 | 120 |
7 | Peras Secas Orgânicas do Tio Bob | 3 | 12 - 1 lb pkgs. | 30.00 | 15 |
Condições Limite Simples
As primeiras restrições que colocaremos em nossa consulta envolvem condições de contorno simples. Podemos especificá-los na cláusula WHERE da consulta SELECT, usando instruções de condição simples construídas com operadores padrão, como ,> = e <=.
Primeiro, vamos tentar uma consulta simples que nos permite extrair uma lista de todos os produtos no banco de dados que têm um Preço Unitário de mais de 20,00:
SELECIONE Nome do Produto, PreçoUnitário
DE produtos
ONDE Preço unitário> 20,00
Isso produz uma lista de quatro produtos, conforme mostrado abaixo:
ProductName UnitPrice
Mistura Gumbo do Chef Anton 21,35
Tempero Cajun do Chef Anton 22h00
Spread de Boysenberry da Vovó 25,00
Peras Secas Orgânicas do Tio Bob 30,00
Também podemos usar a cláusula WHERE com valores de string. Isso basicamente iguala caracteres a números, com A representando o valor 1 e Z representando o valor 26. Por exemplo, poderíamos mostrar todos os produtos com nomes começando com U, V, W, X, Y ou Z com a seguinte consulta:
SELECIONE o nome do produto
DE produtos
ONDE ProductName> = 'T'
O que produz o resultado:
Nome do Produto
Peras Secas Orgânicas do Tio Bob
Expressando intervalos usando limites
A cláusula WHERE também nos permite implementar uma condição de intervalo em um valor usando várias condições. Por exemplo, se quiséssemos pegar nossa consulta acima e limitar os resultados a produtos com preços entre 15,00 e 20,00, poderíamos usar a seguinte consulta:
SELECIONE Nome do Produto, PreçoUnitário
DE produtos
ONDE Preço Unitário> 15,00 E Preço Unitário <20,00
Isso produz o resultado mostrado abaixo:
ProductName UnitPrice
Chai 18,00
Chang 19,00
Expressando intervalos com BETWEEN
O SQL também fornece um atalho BETWEEN sintaxe que reduz o número de condições que precisamos incluir e torna a consulta mais legível. Por exemplo, em vez de usar as duas condições WHERE acima, poderíamos expressar a mesma consulta como:
SELECIONE Nome do Produto, PreçoUnitário
DE produtos
ONDE Preço unitário ENTRE 15,00 E 20,00
Tal como acontece com nossas outras cláusulas de condição, BETWEEN funciona com valores de string também. Se quiséssemos produzir uma lista de todos os países começando com V, W ou X, poderíamos usar a consulta:
SELECIONE o nome do produto
DE produtos
ONDE Nome do produto ENTRE "A" e "D"
O que produz o resultado:
Nome do Produto
Xarope de Anis
Chai
Chang
Mix de Gumbo do Chef Anton
Tempero Cajun do Chef Anton
A cláusula WHERE é uma parte poderosa da linguagem SQL que permite restringir os resultados a valores que se enquadram em intervalos especificados. É muito comumente usado para ajudar a expressar a lógica de negócios e deve fazer parte do kit de ferramentas de todo profissional de banco de dados. Muitas vezes é útil incorporar cláusulas comuns em um procedimento armazenado para torná-lo acessível àqueles sem conhecimento de SQL.