Linguagem SQL: Comando SELECT

 

Neste artigo veremos o comando SELECT da linguagem SQL. Esse comando é responsável por obter registros armazenados no banco de dados, além de ser o recurso mais usado de toda a linguagem.

 

Por que eu devo ler este artigo: Aprenda neste artigo sobre o SELECT da Linguagem SQL. Com esse comando é possível fazer consultas no banco de dados e trabalhar com o retorno de registros armazenados. Esse comando é o mais usado na linguagem, pois com o resultado dado por ele é possível montar relatórios.

 


 

 

O comando SELECT é responsável por recuperar registros armazenados nas tabelas de um banco de dados. Os dados retornados são exibidos num formato tabulado, com as colunas representando a primeira linha, e os dados preenchendo as linhas posteriores. No Código 1, vemos a sintaxe desse comando.

SELECT id, nome, email
FROM funcionario
Código 1. Obtendo dados da tabela
 

 

No início do comando SELECT listamos as colunas da tabela funcionario, representadas no Código 1 por idnome e email. No caso de existirem outras colunas na tabela funcionario, elas serão ignoradas. Continuando na sintaxe do SELECT temos a cláusula FROM, que nos indica de qual tabela os registros serão recuperados. Nesse exemplo a tabela é indicada pelo nome funcionario.

Para obter todos os dados de uma tabela podemos usar o comando SQL do Código 2.

SELECT *
FROM funcionario
Código 2.Obtendo dados da tabela

 

Ao usar o símbolo asterisco (*) no lugar do nome dos campos, a consulta trará todas as colunas na execução da query.

Apesar de poder trazer todos os campos com o símbolo asterisco(*) em todas as situações, é mais adequado nomear as colunas quando não há a necessidade de trazer todas. Isso evita recuperar dados que não serão usados, o que pode fazer diferença na performance.
 
 
 

Cláusula WHERE

Com a cláusula WHERE podemos filtrar registros nas consultas que fazemos. Os dados que são retornados atendem a condição que é especificada na query. Vejamos no Código 3 um exemplo no qual ocorre essa situação.

SELECT id, nome, email
FROM funcionario
WHERE nome = 'Caio'
Código 3.Obtendo dados da tabela com filtro

 

A cláusula WHERE faz uma espécie de filtro na consulta, na qual ela restringe o retorno aos registros que atendem determinada condição. No Código 3, retornarão as linhas que possuem a coluna nome igual a ‘Caio’.

Além de ser usada no SELECT, a cláusula WHERE também é usada nas instruções UPDATE e DELETE
 
 

Como tratar números e textos

A forma de usar textos ou números na cláusula WHERE difere porque envolvemos dados textuais com aspas, enquanto os dados numéricos não precisam. No Código 4, vemos um exemplo com a cláusula WHERE, que abrange essas duas situações.

-- FILTRO POR DADO NUMÉRICO
SELECT id, nome, email
FROM funcionario
WHERE id = 5

-- FILTRO POR DADO TEXTUAL
SELECT id, nome, email
FROM funcionario
WHERE nome = 'Eduardo'
Código 4. Diferença entre dados textuais e numéricos

 

No exemplo acima temos duas consultas que usam condições para retornar determinados registros. A primeira consulta usa uma condição com um campo numérico, enquanto a segunda utiliza uma condição com um campo textual. A diferença entre elas está no uso das aspas, que de maneira geral servem para envolver dados de texto. Na linha 4 do Código 4 temos a cláusula WHERE filtrando os registros para que sejam buscados caso tenham o id igual a 5. Nesse caso, o número 5 não precisa de aspas. Já na linha 9, a restrição dos dados fica na condição de terem o nome igual a ’Eduardo’ que está delimitado por aspas. Esse conceito é importante, pois faz parte da sintaxe do SQL.

 

Operadores da cláusula WHERE

Quando utilizamos a cláusula WHERE no SQL, estamos filtrando resultados para que satisfaçam uma determinada condição. Nessa cláusula podemos criar expressões com filtros para limitar o retorno de registros. A seguir veremos uma lista de operadores usados nessa linguagem para complementar a cláusula WHERE.

  • Operador igual (=) – Verifica se um valor é igual a outro:

     

    SELECT nome
    FROM alunos
    WHERE media = 6

    Retorna a coluna nome da tabela alunos, quando a coluna média for igual a 6.

  • Operador Maior que (>) – Verifica se um valor é maior que outro:

     

    SELECT nome
    FROM alunos
    WHERE media > 6

    Retorna a coluna nome da tabela alunos, quando a coluna média for maior que 6.

  • Operador Menor que (<) – Verifica se um valor é menor que outro:

     

    SELECT nome
    FROM alunos
    WHERE media < 6

    Retorna a coluna nome da tabela alunos, quando a coluna média for menor que 6.

  • Operador Maior ou igual a (>=) – Verifica se um valor é maior ou igual a outro:
    SELECT nome
    FROM alunos
    WHERE media >= 6

    Retorna a coluna nome da tabela alunos, quando a coluna média for maior ou igual a 6.

  • Operador Menor ou igual a (<=) – Verifica se um valor é menor ou igual a outro:
    SELECT nome
    FROM alunos
    WHERE media <= 6

    Retorna a coluna nome da tabela alunos, quando a coluna média for menor ou igual a 6.

  • Operador Diferente de (<>) – Verifica se um valor é diferente de outro:
    SELECT nome
    FROM alunos
    WHERE media <> 6

    Retorna a coluna nome da tabela alunos, quando a coluna média for diferente de 6.

 

LIKE

    • O operador LIKE é utilizado para buscar por uma determinada string dentro de um campo com valores textuais. Com ele podemos, por exemplo, buscar os registros cujo NOME inicia com uma determinada palavra, ou contém um certo texto.

      Para efetuar esse tipo de consulta, podemos utilizar também o caractere % para indicar um “coringa”, ou seja, um texto qualquer que pode aparecer no campo. Sua sintaxe padrão é a seguinte:

      SELECT colunas
      FROM tabela
      WHERE campo LIKE 'valor'

      Nessa instrução, o “valor” pode ser informado de várias formas:

        • texto: Nesse caso, serão retornados todos os registros que contêm no campo buscado exatamente o “texto” informado no filtro. O funcionamento aqui é equivalente a utilizar o operador de igualdade (=);

        • %texto%: Serão retornados os registros que contêm no campo buscado o “texto” informado. Por exemplo, podemos buscar os nomes que contêm “Santos”, ou que contêm uma sílaba ou letra específica. O registro com nome “Luis da Silva”, por exemplo, contém o termo “da”, então atenderia ao filtro ‘%da%’;

        • %texto: Serão retornados os registros cujo valor do campo filtrado termina com o “texto” informado. O %, nesse caso, indica que pode haver qualquer valor no começo do campo, desde que ele termine com o “texto”. Por exemplo, o registro com nome “Luis da Silva” atenderia ao filtro ‘%Silva’;

      • texto%: Serão retornados os registros cujo valor do campo filtrado começa com o “texto” informado. Dessa vez, o % indica que após o “texto” pode haver qualquer valor. Por exemplo, o registro com nome “Luis da Silva”, atenderia ao filtro ‘Luis%’.
      SELECT nome, idade
      FROM PESSOA
      WHERE Nome LIKE 'J%';

      Além do %, existe ainda o símbolo especial underscore ou sublinhado (_), com o qual podemos efetuar filtros mais exatos sobre as colunas textuais, buscando por um termo em uma posição específica do texto.

      O underscore indica a quantidade de caracteres antes ou depois do texto buscado. A seguir temos alguns exemplos de uso para que possamos compreender sua sintaxe:

        • ‘_este’: Filtra os registros que contém 1 caractere qualquer no começo e em seguida o termo ‘este’. Por exemplo, seriam retornados registros contendo o valor ‘teste’, ‘peste’, ‘veste’;

        • ‘b_m’: Filtra os registros que comecem com a letra “b”, contenham 1 caractere em seguida, e depois a letra “m”. Nesse caso, atenderiam a esse filtro, por exemplo, os valores “bom”, “bem”, “bPm”, etc.

      • ‘_u%’: Filtra os registros cujo campo especificado comece com um caractere qualquer, em seguida contenha uma letra “u”, e depois qualquer valor. Por exemplo, os valores “Luis da Silva” e “Gustavo” atenderiam a esse filtro.
      SELECT nome, idade
      FROM Pessoa
      WHERE Nome LIKE '_u%';

 

 

IN

  • O operador IN é utilizado quando desejamos consultar uma tabela, filtrando o valor de um de seus campos a partir de uma lista e possibilidades. Enquanto o operador de comparação de igualdade (=) avalia se os dois valores são iguais, o IN permite verificar se o valor de um campo se encontra em uma lista. Sua sintaxe é a seguinte:

    SELECT campos
    FROM tabela
    WHERE campo IN (valor1, valor2, valor3);

    Para testarmos esse operador com a tabela que criamos, podemos executar a seguinte consulta e teremos como resultado os registros que vemos na Figura 3.

    SELECT nome, idade
    FROM Pessoa
    WHERE Id_Pessoa IN (2, 3, 7);

    Nesse caso, filtramos apenas os registros que possuem o Id_Pessoa igual a 2, 3, ou 7.

 

 

Operadores AND, OR e NOT

Em conjunto com a cláusula WHERE, podem ser usados os operadores ANDOR e NOT.

Tanto o operador AND como o OR tem a finalidade de filtrar mais de uma condição. Com AND, todas as condições devem ser verdadeiras para retornar o valor TRUE.

SELECT nome
FROM  funcionarios
WHERE salario > 2000 AND setor = 2
Código 5. Operador AND

 

No Código 5 estamos selecionando o campo nome da tabela de funcionários quando a coluna salário tenha valor superior a 2000 e a coluna setor for igual a 2. Temos aqui um caso em que todas as condições precisam ser realizadas para o registro passar no filtro.

Já com o OR, se qualquer condição for realizada, a condição será verdadeira, como mostra o Código 6.

SELECT nome
FROM  funcionarios
WHERE salario > 2000 OR setor = 2
Código 6. Operador OR

 

Já na consulta acima estamos selecionando o campo nome da tabela funcionarios quando a coluna salário for superior a 2000 ou a coluna setor for igual a 2. Esse caso só precisa que uma das condições seja verdadeira para que o registro seja validado no filtro.

O operador NOT simplesmente nega a condição na qual está sendo usado. Vejamos no Código 7 um exemplo de como ele funciona.

SELECT nome
FROM funcionarios
WHERE NOT nome = ‘Wesley’
Código 7. Operador NOT

 

A consulta acima retorna todos os registros da tabela funcionarios em que a coluna nome não seja igual a ‘Wesley’.

Vimos nesse artigo a importância da instrução SELECT. Com ela, podemos formar desde consultas simples até as mais complexas, dependendo da necessidade. Essa funcionalidade da linguagem SQL é muito usada, pois no dia a dia do desenvolvedor há a necessidade de recuperar informações contidas nas tabelas do banco de dados. Por causa disso, é essencial entender como usar essa instrução, que possibilita trabalhar com sistemas que trabalham com informações armazenadas.

 

 

#SQL
#AlexHolanda

SQL: INSERT

O INSERT é responsável pela inserção de uma ou mais linhas em uma tabela, além de permitir que as colunas de destino sejam informadas em qualquer ordem em que forem declaradas.