SQL - Structured Query
Language
SQL - Structured Query Language
• Objetivo: Introdução as clausulas where, order by e
TOP.
SQL - Structured Query Language
• A Cláusula WHERE
• A utilidade da cláusula WHERE é determinar quais
os dados de uma tabela que serão afetados pelos
comandos SELECT, UPDATE ou DELETE.
Podemos dizer, então, que essa cláusula determina
o escopo de uma consulta a algumas linhas,
realizando a filtragem dos dados que estejam de
acordo com as condições definidas.
SQL - Structured Query Language
• A Cláusula WHERE - Sintaxe Básica
• A sintaxe básica de qualquer comando que utilize a
cláusula WHERE é a seguinte:
[comando] WHERE [nome_campo] [operador_comparacao] [valor]
• Os operadores de comparação podem ser:
= (igual á), > (maior que), < (menor que), <>
(diferente de), >= (maior ou igual à), <= (menor ou
igual à). Há a possibilidade de se usar os
operadores IN, AND e OR em conjunto com a
SQL - Structured Query Language
• A Cláusula WHERE - Sintaxe Básica
• Para que possamos fazer um uso máximo dessa
cláusula, iremos criar uma nova database, tabela e
registros. Segue script:
CREATE TABLE
PRODUTOS (
CODIGO
INT
,
NOME
VARCHAR
(50),
TIPO
VARCHAR
(25),
QUANTIDADE
INT
,
VALOR
DECIMAL
(10,2)
)
GO
SQL - Structured Query Language
Selecionando Registros Específicos
Com a cláusula WHERE, podemos fazer uma seleção de
registros específicos. Suponha que queremos retornar apenas os produtos os quais o TIPO é 'INFORMATICA'. Vejamos:
SELECT * FROM PRODUTOS WHERE TIPO = 'INFORMATICA'
GO
SQL - Structured Query Language
Atualizando Registros Específicos
Para realizar uma alteração sobre os preços dos produtos desta tabela, utilizaremos a cláusula WHERE. Vejamos um exemplo que demonstra um acréscimo de 15% sobre os valores dos produtos do tipo 'INFORMATICA'.
UPDATE PRODUTOS SET VALOR = VALOR * 1.15
WHERE TIPO = 'INFORMATICA'
SQL - Structured Query Language
A Cláusula WHERE com os Operadores AND e OR
Os operadores lógicos AND e OR são utilizados em conjunto com a cláusula WHERE nas situações em que é necessário empregar mais de uma condição de comparação. Supondo um cenário, poderíamos elevar o valor dos produtos do tipo
'ELETRONICOS' em 5% cujo valor seja inferior a 600,00. Vejamos com isso seria usando o operador AND:
UPDATE PRODUTOS SET VALOR = VALOR * 1.05
WHERE TIPO = 'ELETRONICOS' AND VALOR < 600.00
SQL - Structured Query Language
A Cláusula WHERE Com os Operadores AND e OR
Para que vejamos o OR em operação, imaginemos que vamos diminuir o valor dos produtos, em 20%, que sejam maiores que 1000,00 ou que estejam do tipo 'DIGITAIS'. Então
teríamos o seguinte:
UPDATE PRODUTOS SET VALOR = VALOR * 0.80
WHERE TIPO = 'DIGITAIS' OR VALOR > 1000.00
SQL - Structured Query Language
A Cláusula WHERE com o operador IN
O operador IN poder ser utilizado em lugar do operador OR em determinadas situações. O IN permite verificar se o valor de uma coluna está presente em uma lista de elementos.
Considerando a coluna TIPO, da tabela PRODUTOS, podemos usar o IN ou OR para selecionar os produtos do tipo
'INFORMATICA' ou 'DIGITAIS'. Vejamos:
SELECT * FROM PRODUTOS WHERE TIPO IN ('INFORMATICA', 'DIGITAIS')
GO
SQL - Structured Query Language
A Cláusula WHERE com o operador IN
SQL - Structured Query Language
A Cláusula WHERE Com os Operadores NOT IN
Os operadores NOT IN, ao contrário do IN, permitem obter como resultados o valor de uma coluna que não pertence a uma determina lista de elementos, conforme podemos
observar a seguir:
SELECT * FROM PRODUTOS WHERE TIPO NOT IN ('INFORMATICA', 'DIGITAIS')
SQL - Structured Query Language
A Cláusula WHERE Com o Operador BETWEEN
O operador BETWEEN tem a finalidade de permitir uma consulta em determinada faixa de valores. Dessa forma, podemos utilizar este operador para selecionar todos os
produtos cujos valores estejam entre 400,00 e 700,00 na tabela PRODUTOS. Vejamos:
SELECT * FROM PRODUTOS WHERE VALOR BETWEEN 400.00 AND 700.00 GO
SQL - Structured Query Language
A Cláusula WHERE Com o Operador NOT BETWEEN
Os operadores NOT BETWEEN, ao contrário do BETWEEN, permitem consultar os valores que não estão em uma faixa de valores determinados. Podemos consultar, na nossa tabela
PRODUTOS, os valores que não estão entre 300,00 e 500,00. Vejamos:
SELECT * FROM PRODUTOS WHERE VALOR NOT BETWEEN 300.00 AND 500.00
SQL - Structured Query Language
A Cláusula WHERE Com o Operador LIKE
O operador LIKE é empregado para situações em que se
necessita retornar valores que se iniciam com um determinado caractere ou sentença de caracteres, terminem com um
determinado caractere ou sentença de caracteres ou
contenham um determinado caractere ou sentença desses. Por exemplo, desejamos retornar todos os produtos que se iniciem com a letra 'T':
SELECT * FROM PRODUTOS WHERE NOME LIKE 'T%'
SQL - Structured Query Language
A Cláusula WHERE Com o Operador LIKE
Perceba que após o nosso caractere de busca, usamos um caractere coringa. Que no caso do SQL Server é o
caractere porcentagem (%). Isso especifica ao SQL Server que desejamos retornar todos os valores que se iniciem com a letra 'T'. Caso quiséssemos todos os valores que terminassem com a letra 'T', usaríamos essa busca da seguinte forma:
SELECT * FROM PRODUTOS WHERE NOME LIKE '%T'
GO
Ou, no caso da letra 'T' ser encontrada em qualquer posição do valor, usaríamos esta forma:
SELECT * FROM PRODUTOS WHERE NOME LIKE '%T%'
SQL - Structured Query Language
A Cláusula WHERE Com o Operador LIKE
SQL - Structured Query Language
A Cláusula WHERE Com o Operador NOT LIKE
Os operadores NOT LIKE são utilizados da mesma forma que o operador LIKE, mas com eles obtemos com resultado inverso. Vejamos:
SELECT * FROM PRODUTOS WHERE NOME NOT LIKE '%RA%' GO
SQL - Structured Query Language
A Cláusula ORDER BY
Por vezes é necessário que o resultado de uma consulta seja
mostrado em uma ordem específica, de acordo com determinado critério. Para tal, contamos com opções e cláusulas de ordenação. Uma delas é a cláusula ORDER BY (ordernar por). Utilizamos a cláusula em conjunto com o comando SELECT a fim de retornar resultados de uma consulta a uma tabela em determinada ordem.
Ordenando Por Colunas
É possível utilizar a cláusula ORDER BY para ordenar dados retornados utilizando como critério o nome ou número
referente à posição, no SELECT. Para que os dados de uma tabela sejam retornados e exibidos de acordo com o nome da coluna, utilizamos o seguinte comando:
SELECT * FROM PRODUTOS ORDER BY TIPO
SQL - Structured Query Language
A Cláusula ORDER BY
Isso irá nos retornar como resultado da consulta, todos os itens da tabela PRODUTOS ordenados pelo campo TIPO. Vejamos:
Veja que por padrão, a cláusula ORDER BY sempre ordena crescentemente.
SQL - Structured Query Language
Ordenando Por Mais de Uma Coluna
É possível utilizar a cláusula ORDER BY para ordenar os
dados de várias colunas, isto com base nos nomes de várias colunas e nas posições das colunas no SELECT. A seguir um exemplo desse estilo de ordenação:
SELECT * FROM PRODUTOS ORDER BY NOME, TIPO
SQL - Structured Query Language
ORDER BY ASC e DESC
A cláusula ORDER BY pode ser utilizada com as opções ASC e DESC, descritas a seguir:
• ASC: Esta opção faz com que as linhas sejam ordenadas na forma ascendente. (Padrão)
• DESC: Esta opção faz com que as linhas sejam ordenadas na forma descendente.
A seguir, um exemplo ordenando a tabela PRODUTOS pelo campo VALOR de forma descendente:
SELECT * FROM PRODUTOS ORDER BY VALOR DESC GO
SQL - Structured Query Language
ORDER BY ASC e DESC
SQL - Structured Query Language
ORDER BY ASC e DESC
Também é possível mesclar as duas opções. Vejamos:
SELECT * FROM PRODUTOS ORDER BY NOME ASC, VALOR DESC GO
SQL - Structured Query Language
A Cláusula TOP
Como resultado de uma consulta a uma tabela de um banco de dados, temos a opção de retornar a quantidade de linhas
desejadas, a partir da primeira linha selecionada. Para isso, utilizamos a cláusula TOP.
Vamos novamente nos basear na tabela PRODUTOS. Para obter como resultado as primeiras cinco linhas da tabela, utilizamos o seguinte comando:
SELECT TOP 5 * FROM PRODUTOS
SQL - Structured Query Language
A Cláusula TOP com ORDER BY
A cláusula TOP e a cláusula ORDER BY podem ser utilizadas de forma conjunta. Consideremos novamente a tabela
PRODUTOS. Supondo que pretendemos exibir os três primeiros produtos de menor preço, dentre a relação de produtos da lista. Vejamos o comando utilizado:
SELECT TOP 3 * FROM PRODUTOS ORDER BY VALOR ASC GO