Menu principal
[Fechar]
Introdução
Divisões
Identification Division
Environment Division
Data Division
Procedure Division
Comandos CICS
VSAM - File Status
Quadros importantes
SQL - Structured Query Language
Outros programas
Rotinas prontas
Palavras reservadas
Introdução ao Oracle
Sites de busca
Sites interessantes
Meu e-mail
SQL - Structured Query Language - SELECT
Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF.
SELECT
O comando
Select
é usado para selecionar dados em uma tabela dentro do critério que você definir. Êle tem cinco cláusulas principais, embora, FROM seja a única exigida. Cada uma das cláusulas têm uma vasta seleção de opções, parâmetros, etc. As cláusulas serão descritas abaixo.
Considere que você tenha uma tabela chamada 'Clientes' com os seguintes campos:
Cod_cliente
Nome
Data_nascimento
Limite_credito
Sintaxe da declaração SELECT
SELECT [ALL | DISTINCT] coluna1
[,coluna2]
FROM tabela1
[, tabela2]
[WHERE "condições"]
[GROUP BY "colunas"]
[HAVING "condições"]
[ORDER BY "colunas" [ASC | DESC] ]
Operadores e cláusulas de comparação
=
igual
<>
diferente
!=
diferente
>
maior que
!>
não maior (menor ou igual)
<
menor que
!
não menor (maior ou igual)
>=
maior or igual
<=
menor ou igual
*
todos
ORDER BY
define a ordem
ORDER BY DESC
em ordem decrescente
WHERE
onde
BETWEEN
entre. Pertence ao intervalo declarado.
NOT BETWEEN
não pertence ao intervalo declarado.
GROUP BY
agrupar
IS NULL
testa valores nulos. Verifica, por exemplo, se colunas não contém nenhum valor armazenado. Com conteúdo nulo.
IS NOT NULL
testa valores não nulos. Sem conteúdo nulo.
LIKE
o predicado LIKE procura por strings que se encontram dentro de um determinado padrão. Este predicado só pode ser usado com tipos de dados CHAR ou VARCHAR.
EXISTS
Verifica o número de linhas retornadas pela subquery. Caso ela contenha uma ou mais linhas, então o retorno será mostrado.
IN
permite comparar o valor de uma coluna com um conjunto de valores. Normalmente, utilizamos o IN para substituir uma série de comparações seguidas da cláusula OR.
NOT IN
Não pertence ao conjunto declarado
Veja na tabela abaixo algumas possíveis combinações do predicado LIKE
Expressão
Explicação
LIKE'A%'
Todas as palavras que iniciem com a letra A
LIKE'%A'
Todas as palavras que terminem com a letra A
LIKE'%A%'
Todas as palavras que tenham a letra A em qualquer posição
LIKE'A_'
String de dois caracteres que tenham a primeira letra A e o segundo caracter seja qualquer outro.
LIKE'_A'
String de dois caracteres cujo o primeiro caracter seja qualquer um e a última letra seja A.
LIKE'_A_'
String de três caracteres cuja segunda letra seja A, independentemente do primeiro ou do último caracter.
LIKE'%A_'
Todos que tenham a letra A na penúltima posição e a última seja qualquer outro caracter.
LIKE'_A%'
Todos que tenham a letra A na segunda posição e o primeiro caracter seja qualquer um.
Funções agregadas
MIN
retorna o menor valor de uma determinada coluna
MAX
retorna o maior valor de uma determinada coluna
SUM
retorna a soma (valor numérico) de uma determinada coluna
AVG
retorna o valor médio de uma determinada coluna
COUNT
retorna a quantidade de linhas de uma determinada coluna
COUNT(*)
retorna o número de linhas de uma determinada tabela
Abaixo estaremos mostrando diversas formas de fazer um select
Seleciona todos os campos da tabela (Clientes), ordenando por Nome
Select * from Clientes order by Nome
Seleciona todos os campos da tabela Clientes, ordenando por Data de Nascimento em ordem decrescente
Select * from Clientes order by Data_nascimento Desc
Seleciona os campos o Cod_cliente e Nome da tabela Clientes, ordenando por Nome
Select Cod_cliente, Nome from Clientes order by Nome
Seleciona os campos Cod_cliente e Nome da tabela Clientes, onde o cliente seja igual a 99
Select Cod_cliente, Nome from Clientes where Cod_cliente = 99
Obs: neste caso estou considerando que o campo Cod_cliente é numérico, caso ele seja texto, o valor 99 deve vir entre apóstrofo (where Cod_cliente = '99')
Seleciona os campos Cod_cliente e Nome da tabela Clientes, onde o cliente seja diferente de 99
Select Cod_cliente, Nome from Clientes where Cod_cliente <> 99
Obs: neste caso estou considerando que o campo Cod_cliente é numérico, caso ele seja texto, o valor 99 deve vir entre apóstrofo (where Cod_cliente <> '99')
Seleciona todos os campos da tabela Clientes, onde o Limite de crédto esteja entre 1000 e 2500
Select * from Clientes where Limite_credito between 1000 and 2500
Obs:Seleciona todos os campos (*) da tabela (Clientes), onde o Limite de crédto esteja entre 1000 e 2500 (where Limite_credito between 1000 and 2500)
Seleciona todos os campos (*) da tabela (Clientes), onde a data de nascimento esteja entre 01/01/1989 e 31/12/1985
Select * from Clientes where Data_nascimento between '01.01.1989' and '31.12.1985' order by Nome
Seleciona todos os campos (*) da tabela (Clientes), onde a data de nascimento esteja entre 01/01/1989 e 31/12/1985 (between '01/01/1989' and '31/12/1985') ordenando por Nome
Obs: neste exemplo a data vem entre apóstrofo.
Seleciona o campo Limite_credito e traz a quantidade de linhas da mesma coluna da tabela Clientes, agrupando os dados pelo Limite de crédito
Select Limite_credito, count(Limite_credito) as s_limite from Clientes group by Limite_credito
Seleciona o campo Limite_credito e traz a quantidade de linhas da mesma coluna (Limite_credito, count(Limite_credito) as s_limite) da tabela (Clientes), agrupando os dados pelo Limite de crédito (group by Limite_credito)
Seleciona todas as linhas cujos os nomes dos clientes sejam iniciados com a letra D
Select * from Clientes where nome like 'D%'
Seleciona todas as linhas cujos os nomes dos clientes tenham a letra D na segunda posição do nome
Select * from Clientes where nome like '_D%'
Seleciona todas as linhas cujos os nomes dos clientes tenham a letra C no início e a letra R na terceira posição do nome
Select * from Clientes where nome like 'C_R%'
Seleciona apenas os clientes cujo o código seja igual 1 ou 10 ou 20 ou 30.
Select * from Clientes where Cod_cliente in ( 1 , 10 , 20, 30 )
Seleciona os códigos e os nomes dos clientes cujo o limite de credito não contém informação
Select Cod_cliente, Nome from Clientes where Limite_credito is null