Logotipo Design Interativo
MySql

SQL Comando Select – Parte 03


Esta terceira parte irei mostrar o comando select, é um post um pouco mais extenso que os anteriores pois existe diversas formas de selecionar os dados, já que podemos filtrar de diferentes formas, e nesse artigo mostro detalhadamente cada função.

Aproveite para estudar buscando referencias em outros sites para quem quiser se aprimorar no assunto, aqui você pode utilizar dos exemplos o que ajuda muito quando se esquece de um nome em especial.

Bons estudos!

A Sintaxe do SELECT

O comando SELECT recupera dados de uma ou mais tabelas. A sua sintaxe mais simples pode ser resumida da forma:

Sintaxe:
SELECT lista_de_colunas
FROM lista_de_tabelas
WHERE condições

Onde

A lista_de_colunas especifica quais colunas serão retornadas como resultado, separadas por vírgulas ou um asterisco (*) que indica todas as colunas da tabela.

A cláusula FROM, com uma lista_de_tabelas, especifica quais tabelas serão consultadas.

A cláusula WHERE especifica condições que devem ser satisfeitas pelas linhas das tabelas.

Select – Consultando todas as Colunas de uma Tabela

select * from authors

Select * from funcionarios

Select * from aluno
Select – Consultando colunas específicas de uma Tabela

select au_id, au_fname, au_lname from authors

select au_id as Identif, au_fname as Nome,
au_lname as Sobrenome
from authors

Select – Consultando com Condições
select au_fname, au_lname, city, state
from authors
where state=’CA’

Select – Manipulando expressões

Um comando SELECT pode retornar nas colunas de resultado uma coluna da tabela, ou um valor calculado. Por exemplo, a tabela titles contém os títulos de livro (title) e os preços de cada um (price). Se quisermos ver como fica o preço de cada um após um aumento de 10%, pode ser feito o seguinte:

select price Preço , (price * 1.1) “Preço com 10% de
aumento”, title from titles

Select – Funções Matemáticas

Além de operadores, você pode usar funções matemáticas do SQL Server, por exemplo:
ABS(valor) retorna o valor absoluto (sem sinal) de um item. POWER(valor,p)retorna o valor elevado à potência p. ROUND(valor,n) arredonda o valor para n casas decimais. SQRT (valor)retorna a raiz quadrada do valor especificado. PI valor constante 3.141592563589793

Por exemplo, para arredondar o valor do preço de cada livro para duas casas decimais, pode ser feito o seguinte:
Select price Preço , ROUND(price, 1) “Preço com 1 casa
decimal”, title Título from titles

Select – Funções de Caracteres

Você pode usar funções para manipular dados do tipo caracter (char ou varchar), por exemplo, para pegar uma sub-string de uma seqüência de caracteres. E você pode usar o operador + para concatenar dois valores de tipo caracter.

Por exemplo, digite o seguinte comando:
select au_fname + ‘ ‘ + au_lname ‘Nome completo’,
city + ‘, ‘ + state ‘Cidade’ from authors
O que fizemos foi concatenar o primeiro nome e segundo nome do autor, inserindo um espaço no meio (au_fname + ‘ ‘ + au_lname), para gerar a coluna Nome completo e depois juntar o nome da cidade com o nome do estado, inserindo uma vírgula (city + ‘, ‘+state).

Select – Funções de Caracteres

Existem várias funções de manipulação de strings que podem ser usadas para outras tarefas, por exemplo:

ASCII(caractere) retorna o código ASCII de um caractere.
CHAR(inteiro) retorna o caractere, dado o seu código ASCII
LOWER(expr) converte para minúsculas
UPPER(expr) converte para maiúsculas
LTRIM(expr) retira espaços à esquerda
RTRIM(expr) retira espaços à direita
REPLICATE(expr, n) repete uma expressão n vezes
SUBSTRING(expr,início,tamanho) extrai uma parte de uma string desde início e com tamanho caracteres

RIGHT(expr,n) retorna n caracteres à direita da string
REVERSE(expr) inverte uma string
CHARINDEX(‘caractere’, expr) retorna a posição de um caractere dentro da string
SPACE(n) retorna uma string com n espaços
STR(número,n,d) converte um valor numérico para string, formatado com n caracteres na parte inteira (antes da vírgula) e d casas decimais depois da vírgula.
STUFF(expr1,início,tamanho,expr2) substitui em expr1, os caracteres desde início até tamanho por expr2
DATALENGTH(expr) retorna a quantidade de caracteres em expr

Select substring(title, 1, 30) Título , str(price, 5, 1) Preço from titles

O que fizemos foi mostrar até 30 caracteres da coluna title e mostramos a coluna price com no máximo 5 números antes da vírgula e 1 casa decimal depois da vírgula.

Select – Condições de Pesquisa

Como vimos, a cláusula WHERE permite selecionar quais as linhas da tabela a serem incluídas no resultado. Existem várias formas de montar uma cláusula WHERE, usando um dos seguintes elementos:
Operadores de comparação:

= Igual a
> Maior que
< Menos que >= Maior ou Igual
<= Menor ou Igual <> Diferente

Faixas: BETWEEN valor-ini AND valor-fin
Listas: IN
Casamento de Padrões: LIKE padrão
Valores Nulos: IS NULL, IS NOT, NULL
Combinações de Condições: AND, OR, NOT

Exemplos:

select au_lname, city from authors
where state = ‘CA’

select au_lname, city from authors
where state <> ‘CA’

select pubdate, title
from titles
where pubdate between ‘1/1/91′ and ’12/31/91’

select au_lname, city, state
from authors
where state in (‘UT’,’CA’)

select au_fname, au_lname from authors
where au_fname like ‘A%’

select au_fname, au_lname from authors
where au_fname like ‘%en%’

Select – Juntando várias Condições

Você pode fazer condições compostas com AND, OR ou NOT.
O operador AND (E) liga duas condições e retorna verdadeiro apenas se ambas são verdadeiras e falso se pelo menos uma delas é falsa.
Já o Operador OR (OU) retorna verdadeiro se pelo menos uma delas for verdadeira e falso se ambas forem falsas.
O operador NOT (NÃO) inverte uma condição.

select title, pub_id, price
from titles
where (title like ‘T%’ OR pub_id = ‘0877’)
AND (price > $16.00)
Isso retorna os livros onde:
Ambas as condições 1 e 2 são verdadeiras: 1-Uma das seguintes é verdadeira o título (‘title’) começa com T,OU o código da editora (‘pub_id’) é ‘0877’ E 2- o preço (‘price’) é maior que 16.00
Os parênteses indicam a precedência das condições. Na falta de parênteses, o operador NOT, se presente, é aplicado primeiro, depois as condições com AND são agrupadas, depois as condições com OR são agrupadas. Você pode usar parênteses, mesmo se não necessários, para tornar a expressão mais legível.

Select – Eliminando Valores Duplicados

Se você quiser saber quais as cidades e estados nas quais mora algum autor, pode usar a seguinte consulta:

select city, state from authors

Mas note que algumas cidades, como Oakland, CA, aparecem várias vezes. Para eliminar duplicações, use a cláusula DISTINCT. O SQL leva em conta as duas colunas em conjunto, para remover duplicatas

Select – Ordenando Resultados

Para ver o resultado numa ordem particular, use a cláusula ORDER BY. Se estiver presente, deve ser a última cláusula do comando SELECT. Por exemplo, para ver os livros em ordem de preço:

select title, type, price
from titles
order by price

Select – União de Conjuntos

O comando SELECT retorna um conjunto de linhas, e permite também operações com a noção matemática de conjuntos. Por exemplo, o resultado de dois comandos SELECT pode ser combinados com o operador UNION. Os dois comandos podem até mesmo trazer dados de tabelas diferentes, desde que com o mesmo número de colunas, e tipos de dados compatíveis para cada coluna correspondente de um com o outro.
Por exemplo, no banco de dados pubs, a tabela authors contém informação sobre cada autor, o que inclui a cidade e estado onde ele mora (colunas city e state). A tabela publishers contém informação sobre as editoras e suas cidades e estados. Para sabermos o conjunto de todas as cidades onde existem autores ou editoras, pode ser feita uma união dos dois conjuntos, com:
select city, state from authors
union
select city, state from publishers

Note que na união de dois conjuntos, os elementos repetidos são eliminados, como quando se usa o DISTINCT. O resultado também aparece em ordem crescente, pois o SQL Server ordena os resultados antes de eliminar repetições.
Se você quer ordenar de modo diferente os resultados da união, usando ORDER BY, essa cláusula só pode aparecer no segundo comando SELECT, ou seja, no final dos comandos, por exemplo:
select city, state from authors
union
select city, state from publishers
order by state

Na próxima parte iremos ver os comandos Delete e Update, até lá!

Comentários
  1. Daniel disse:

    Olá, Robson, eu gostaria de saber como faço pra separar cada valor dentro das vírgulas em uma string. Por exemplo: ‘1, 3, 4, 7’. Tenho que fazer um código em VbNet e cada um desses valores corresponde a uma permissão de página que o usuário tem. Desde já agradeço.

  2. Lindolfo Junior disse:

    Robson, estive olhando sua publicação pra tentar resolver um problema mas não consegui, gostaria de saber como faço pra achar a quantidade de repetições de um determinado caracter dentro de uma string, por exemplo 12-23-34-45-67-78 gostaria de saber quantos ‘-‘ tenho nessa string

Deixe o seu comentário!

publicidade
publicidade
publicidade

Design Tools

Links

Conheça sites sobre ux, design, front-end, comunicação, inspiração e muito mais, fique por dentro das novidades do mercado com nossa lista.


Profissionais Influentes

Conheça os profissionais que influenciam e trabalham para a comunidade de design e fron-end e user experience, confira o Twitter de cada um.


Curta nossa fanpage e fique por dentro das novidades do site
publicidade
publicidade
publicidade