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