Neste post, falaremos sobre o tópico 1.2 da prova de SQL básico.

A sintaxe básica para executar um SELECT é a seguinte:

É importante deixar bem claro que a sintaxe acima aborda o mínimo necessário para recuperar as informações armazenadas no banco de dados. Existe uma quase infinidade de outras cláusulas que podem ser usadas no SQL para refinar a busca, gerando relatórios para os mais diversos objetivos.

[ESTRUTURA DE TESTES]

Vamos usar as seguintes tabelas para exemplificar algumas capacidades de um SELECT:

[SELECT BÁSICO]

Para recuperar todas as colunas dessa tabela, sem aplicar restrições ou filtros:

SELECT * FROM CERTIFICACAO.TAB_EMPREGADOS;

OBS: Caso você esteja logado como usuário CERTIFICACAO então o schema antes da tabela não é necessário. Caso contrário, basta ou cria-se um sinônimo público para essa tabela, ou usar o schema antes de seu nome.

Para filtrar o resultado de uma query, basta usar a cláusula WHERE. Ela possui o seguinte formato:

WHERE COLUNA|EXPRESSAO OPERADOR_CONDICIONAL COLUNA|EXPRESSAO;

* COLUNA|EXPRESSAO: Coluna ou expressão a ser comparada

* OPERADOR_CONDICIONAL: “=” (igual), “>” (maior), “<“, (menor) “>=” (maior ou igual), “<=” (menor ou igual), “!=” (diferente), “<>” (diferente)

No exemplo a seguir a query retornará apenas a linha cuja coluna ID_EMP for igual a 100:

[ALIAS]

É possível atribuir aliases para colunas de tabelas, que servem como apelidos. É possível atribuir aliases usando a palavra AS após a coluna, ou usando o alias entre aspas. Ex:

[OPERADORES AND E OR]

Os operadores AND e OR podem ser usados quando for necessário usar mais de um filtro no resultado da query, especificando mais as condições de busca. Ao usar o AND, a linha só será retornada caso a primeira e a segunda condição for TRUE. No caso do OR, a linha retornada será a que apresentar pelo menos uma condição TRUE.

[ORDER BY]

A cláusula ORDER BY serve para ordenar o resultado do SELECT. Ele deve ser a última linha do SELECT. Os valores NULL são considerados maiores que os não-nulos. Sua sintaxe é:

ORDER BY [lista_colunas] [ASC|DESC]

A seguir é possível ver alguns exemplos do uso do ORDER BY:

[LIKE]

O operador LIKE serve para buscar cadeias de caracteres em uma string maior. Trabalha com os tipos de dados CHAR e VARCHAR2. Com o tipo de dados DATE, o ORACLE executa uma conversão implícita, fazendo com que o LIKE possa ser usado com tipos DATE. Sua sinxate básica é:

WHERE NOME_COLUNA LIKE ‘%STRING%’ [ESCAPE “CARACTERE_ESCAPE”];

A seguir, é possível ver alguns exemplos usando o LIKE:

[IN E NOT IN]

Os operadores IN NOT IN servem para comparar os valores de uma coluna com uma lista de valores. Pode ser usado com datas, numeros e strings. A lista de expressões deve ser do mesmo tipo de dados, ou similar o suficiente para que o ORACLE possa converter implicitamente os valores. Sua sintaxe básica é:

WHERE NOME_COLUNA IN|NOT IN (LISTA_VALORES)

A seguir é possível ver alguns exemplos de uso do IN e NOT IN:

[BETWEEN]

O operador BETWEEN é usado para verificar registros entre um limite inicial e final de valores. Ele é inclusivo, ou seja, ele compara os valores determinados na faixa de valores, inclusive os 2 valores delimitadores da faixa. Sua sintaxe básica é:

WHERE NOME_COLUNA [NOT] BETWEEN LIMITE_INICIAL AND LIMITE_FINAL

A seguir é possível ver alguns exemplos de uso do BETWEEN:

[DICAS RÁPIDAS PARA O EXAME]

Quando se executa uma query, comparando uma coluna com NULL, esta query nunca retornará nada. Isso ocorre porque se está pedindo para o compilador SQL, por exemplo, comparar o valor da coluna XYZ com um valor “desconhecido”, que é isso o que o NULL representa… um valor desconhecido, e não um valor vazio. Qualquer coisa = NULL retornará FALSE. Por exemplo, caso eu possua uma linha na tabela CERTIFICACAO.TAB_EMPREGADOS com o valor da coluna ID_DEPARTAMENTO como NULL, caso eu execute a seguinte query:

A regra para validar operadores booleanos em queries é: NOT é validado antes, depois o AND e por fim o OR.

Na comparação de caracteres, as letras maiusculas possuem um peso menor que as letras minusculas, e os números possuem um peso menor que as letras. Ex:

‘A’ é menor que ‘Z’;
‘Z’ é menor que ‘a’
‘2’ é maior que ’10’

…caso eu execute a seguinte query:

É isso ai. No próximo post, falaremos sobre o tópico de limitação e ordenação de dados, sendo que já falei um pouco sobre o ORDER BY.