Banco de dados Dicas e Tutoriais

Como utilizar o SQL Select: Guia básico para Iniciantes

data codes through eyeglasses
Photo by Kevin Ku on Pexels.com

Veremos nesse artigo (Como utilizar o SQL Select: Guia básico para Iniciantes) um pequeno guia de consultas para o comando SELECT, um dos mais importantes da linguagem SQL.

Como utilizar o SQL Select: Guia básico para Iniciantes

A linguagem SQL foi criada com o objetivo de padronizar os comandos de manipulação de dados em SGBD’s. Conhecendo bem a linguagem é possível acessar os recursos básicos de qualquer banco relacional, como Oracle, SQL Server ou MySQL, sem praticamente nenhuma mudança.

SELECT simples

comando SELECT permite recuperar os dados de um objeto do banco de dados, como uma tabela, view e, em alguns casos, uma stored procedure (alguns bancos de dados permitem a criação de procedimentos que retornam valor). A sintaxe mais básica do comando é:

SELECT <lista_de_campos>
FROM <nome_da_tabela></nome_da_tabela></lista_de_campos>

Exemplo:

SELECT CODIGO, NOME FROM CLIENTES
SELECT * FROM CLIENTES

O caractere * representa todos os campos. Apesar de prático, este caractere não é muito utilizado, pois, para o SGBD é mais rápido receber o comando com todos os campos explicitados. O uso do * obriga o servidor a consultar quais são os campos antes de efetuar a busca dos dados, criando mais um passo no processo.

COMANDO WHERE

A cláusula Where permite ao comando SQL passar condições de filtragem. Veja o exemplo da Listagem 1.

SELECT CODIGO, NOME FROM CLIENTES
WHERE CODIGO = 10
SELECT CODIGO, NOME FROM CLIENTES
WHERE UF = ‘RJ’
SELECT CODIGO, NOME FROM CLIENTES
WHERE CODIGO >= 100 AND CODIGO <= 500
SELECT CODIGO, NOME FROM CLIENTES
WHERE UF = ‘MG’ OR UF = ‘SP’

Listagem 1. Exemplo where

Os parênteses corretamente utilizados dão mais poder as consultas, conforme exemplo abaixo:

SELECT CODIGO, NOME FROM CLIENTES
WHERE UF = ‘RJ’ OR (UF = ‘SP’ AND ATIVO = ‘N’)

Neste comando todos os clientes do Rio de Janeiro e apenas os clientes inativos de São Paulo seriam capturados.

Agora veja o exemplo a seguir:

SELECT CODIGO, NOME FROM CLIENTES
WHERE (ENDERECO IS NULL) OR (CIDADE IS NULL)

Aqui, todos os clientes que não possuem endereço ou cidade cadastrada serão selecionados.

FILTRO DE TEXTO

Para busca parcial de string, o SELECT fornece o operador LIKE. Veja o exemplo abaixo:

SELECT CODIGO, NOME FROM CLIENTES
 WHERE NOME LIKE ‘MARIA%’

Neste comando, todos os clientes cujos nomes iniciam com Maria serão retornados. Se quisermos retornar os nomes que contenham ‘MARIA’ também no meio, podemos alterar para o exemplo a seguir:

SELECT CODIGO, NOME FROM CLIENTES
WHERE NOME LIKE ‘%MARIA%’

O uso de máscara no início e no fim da string fornece maior poder de busca, mas causa considerável perda de performance. Este recurso deve ser utilizado com critério.

Uma observação: em alguns bancos de dados, a máscara de filtro não é representada por %. Consulte a referência do banco para verificar o caractere correto.

Por padrão, a SQL diferencia caixa baixa de caixa alta. Para eliminar essa diferença, utiliza a função UPPER. Veja abaixo:

SELECT CODIGO, NOME FROM CLIENTES
WHERE UPPER(NOME) LIKE ‘MARIA %SILVA%’

ORDENAÇÃO

A ordenação pode ser definida com o comando ORDER BY. Assim como no comando WHERE, o campo de ordenação não precisa estar listado como campo de visualização. Veja o exemplo da Listagem 2.

SELECT CODIGO, NOME FROM CLIENTES
ORDER BY NOME
SELECT CODIGO, NOME FROM CLIENTES
ORDER BY UF, NOME

Listagem 2. Exemplo order by

A utilização da palavra DESC garante a ordenação invertida:

SELECT CODIGO, NOME FROM CLIENTES
ORDER BY NOME DESC
SELECT CODIGO, NOME FROM CLIENTES
ORDER BY UF DESC

JUNÇÃO DE TABELAS

O SELECT permite juntar duas ou mais tabelas no mesmo resultado. Isso pode ser feito de várias formas. Uma delas segue abaixo:

SELECT CLIENTES.CODIGO, CLIENTES.NOME, PEDIDOS.DATA
FROM CLIENTES, PEDIDOS
WHERE CLIENTES.CODIGO = PEDIDOS.CODCLIENTE

Nesta linha as tabelas relacionadas CLIENTES e PEDIDOS são unificadas através do campo chave, em uma operação de igualdade. Repare que os nomes dos campos passam a ser prefixados pelo nome das tabelas, resolvendo duplicidades. Uma versão resumida desse comando pode ser como abaixo:

SELECT A.CODIGO, A.NOME, B.DATA, B.VALOR
FROM CLIENTES A, PEDIDOS B
WHERE A.CODIGO = B.CODCLIENTE

O uso de aliases no código SQL torna a manutenção mais simples.

No comando abaixo temos várias tabelas unificadas em uma mesma cláusula. Veja a Listagem 3.

SELECT A.CODIGO, A.NOME, B.DATA, B.VALOR, C.QTD, D.DESCRIC
FROM CLIENTES A, PEDIDOS B, ITENS C, PRODUTOS D
 WHERE A.CODIGO = B.CODCLIENTE
 AND B.CODIGO = C.CODPEDIDO
 AND C.CODPRODUTO = D.CODIGO

Listagem 3. Exemplo de tabelas unificadas

Neste comando unificamos as tabelas relacionadas CLIENTES, PEDIDOS, ITENS e PRODUTOS. Veja mais este exemplo:

SELECT A.CODIGO, A.NOME, B.DATA, B.VALOR
FROM CLIENTES A, PEDIDOS B
WHERE A.CODIGO = B.CODCLIENTE
AND A.UF = ‘RJ’

Observe que a junção através da igualdade de campos traz como resultado somente os registros que possuem referências nas duas tabelas. Observe o comando abaixo:

SELECT A.CODIGO, A.DESCRICAO, B.DESCRICAO
FROM PROUTOS A, COMPONENTES B
WHERE A.CODIGO = B.CODPRODUTO

Os produtos que não possuem componentes não são selecionados, caso seja necessário criar uma listagem incluindo também os registros que não possuem correspondência, deve-se utilizar o comando JOIN.

Para aprender como trabalhar com Join acesse o post COMO CRIAR CONSULTAS SQL UTILIZANDO INNER JOIN, LEFT  JOIN, RIGHT  JOIN, FULL  JOIN E CROSS JOIN

Quer aprender muito mais. Então se inscreva no curso Banco de dados MySql: Aprendizagem Baseada em Projetos.

Fonte: Devmedia

Super dicas

Se inscreva em nosso canal e compartilhe as matérias que gostar com os seus colegas.

Participe dos nossos grupos de estudos do Facebook e Telegram.

Aproveite também e venha fazer parte do nosso clube de vantagens e ter acesso exclusivo a vídeos, tutoriais, cursos e muito mais.

Clique no link para se tornar um membro do dfilitto – clube de vantagens e ter acesso a todos os benefícios do nosso clube.

About the author

Danilo Filitto

Mestre em Ciência da Computação pela Universidade Estadual de Maringá - UEM, Pós-Graduado em Redes de Computadores e Comunicação de Dados pela Universidade do Estado do Paraná - UEL, Bacharel em Ciência da Computação pela Universidade do Oeste Paulista - UNOESTE.

Atuo na área acadêmica como professor desde 2006. Atualmente leciono na UNOESTE (Universidade do Oeste Paulista), no SENAC (Serviço Nacional de Aprendizagem Comercial) e possuo vários cursos na Udemy (https://www.udemy.com/user/danilo-filitto/).

Além disso, sou o CEO dos sites https:www.dfilitto.com.br e https:www.makeindiegames.com.br

Você também pode me encontrar no YouTube por meio do endereço https://www.youtube.com/danilofilittoppr

Cursos em destaque

Cursos em promoção

Inscreva-se para receber em seus e-mais as notícias do nosso site

Quer aprender a programar?