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
e 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
.
Oi, estou seguindo estes tópicos sobre a 1Z0 051 Fundamentals I, é exatamente estes tópicos descriminados no fórum que irão cair na prova? O conteúdo está muito bom e claro, parabens